|
|||||||
Выбор и использование персональных навигаторов GPS |
|||||||
| Главная | | Описания | | Статьи | | Программы | | Загрузка | | Ссылки | | Разное |
Применение векторизатора "Easy Trace Pro" в процессе создания векторных карт. С начала небольшое предисловие. Как известно, в таком деле, как картография, просто невозможно прийти к конечной цели - абсолютной достоверности картографических данных. До сих пор эта проблема затрагивала очень узкий круг специалистов так или иначе связанных или с самой картографией или с результатами в виде готовых карт. Остальные разглядывали карты с целью получить общее представление о какой либо местности. Точность отображения формы объектов и их привязки в границах сотен метров не интересовало никого из-за очень простой причины - не было никакой навигационной аппаратуры, доступной обычным людям. В этом случае можно было сместить градусную сетку в любое место карты и ни один турист или охотник никогда не понял бы, что в координатах его обманули километров на 30 или сколь угодно больше. Всё изменилось с приходом в нашу жизнь Глобальной Системы Позиционирования или GPS. Я не стану в этой статье рассказывать, что из себя представляет эта система. Материалов на эту тему более чем достаточно. Скажу лишь, что с её приходом все недочёты, ошибки и промахи стали видны практически каждому владельцу навигатора GPS. Масло в огонь подлила появившаяся не так давно, но в настоящее время превратившаяся практически в обязательную, возможность отображения электронных карт прямо на дисплее навигатора. Следующим шагом стало широкое распространение карманных компьютеров, появление к ним приёмников сигналов GPS и программ, способных работать с данными, получаемыми этими приёмниками. На общем фоне таких программ, сразу стали заметными и популярными программы ГИС Русса и Навител Навигатор. Основными отличительными их чертами, сразу обратившими на себя внимание, стали большое количество готовых векторных карт и возможность каждому желающему, с помощью специального картографического редактора, самостоятельно создавать свои и редактировать существующие карты. Причём весь процесс, как правило, не представлял большой сложности даже у далёких от картографии людей. Но чем больше людей стали заниматься созданием карт, тем чаще и чаще стал задаваться один и тот же вопрос - "Как можно ускорить процедуру перевода карт с бумажного оригинала в векторный формат?" Ответ на этот вопрос лежит на поверхности - максимально автоматизировав все необходимые операции. Вот здесь и всплывает слово "векторизатор". Вот об этом мы сейчас и поговорим. Однако прежде чем начать давайте я познакомлю вас с программами, которые нам понадобятся. 1. GPSMapEdit - картографический редактор, позволяющий создавать карты в формате понимаемом навигаторами Garmin, программой Навител и пр. 2. Easy Trace Pro (Demo) - специальный векторизатор, способный преобразовывать топографические данные из растрового в векторный формат. 3. Практически любой графический редактор. В нашем случае Adobe Photoshop.
Предварительное
знакомство с векторизатором Easy Trace. Сразу скажу, что "автоматизировать" как это представляют себе многие, в данном случае не получится. Это я про тех людей, кто думает, что можно загрузив растровое изображение карты, нажать кнопку "Старт" и через пару секунд получить готовый вектор. Увы! Чудес не бывает. Однако значительно ускорить процесс векторизации действительно можно. Несомненно, операция векторизации карт требует творческого подхода и определённого количества знаний по предмету. Впрочем, это касается практически всех профессиональных программ любого направления. В этой части я не буду слишком подробно останавливаться на описании всех имеющихся функций и инструментов. В этой статье не ставится задача обучить всем приёмам работы в данной программе. Вместо этого я приведу совершенно конкретный пример векторизации одного тематического слоя, полученного из участка совершенно обычной растровой карты. Описание этого процесса будет построено в виде пошаговых инструкций, повторив которые, Вы должны получить идентичный результат. Но вначале немного о программе. Easy Trace Group является российской компанией. Центральный офис располагается в Рязани. Образована она в 1992 году группой специалистов и энтузиастов. Очень многие пользователи, однажды попробовав в работе эту программу, благо демо-режим позволяет использовать все рабочие инструменты, однозначно выбирают Easy Trace, как основной инструмент полуавтоматической векторизации. Почему так происходит? В первую очередь, наиболее очевидным преимуществом, которое можно оценить сразу же после первого опыта по векторизации, является степень "интеллектуальности" Easy Trace по сравнению с конкурентами. А от умения программы "понимать" чего от неё хотят, в первую очередь зависит количество времени, потраченного на достижение конечного результата. Помимо хорошей логики работы, следует отметить русский интерфейс программы и замечательную справочную систему опять же на русском языке, активную работу по усовершенствованию программы и несравнимую, по отношению к ближайшим аналогам, стоимость. Достаточно сказать, что в настоящее время программу Easy Trace применяют в 24 странах мира на более чем 2000 рабочих мест. А это, согласитесь, уже приближается к своего рода стандарту для выполнения подобного рода работ. Не менее важным является очевидная ориентированность программы на самодостаточность. Это выражается в том, что в ней изначально присутствуют все необходимые функции и инструменты. Весь процесс - сканирование, коррекция растра, цветоделение, привязка, векторизация и экспорт, происходят в одной программе. То есть для профессиональной работы, как правило, достаточно всего двух программ - векторизатора Easy Trace и той программы, куда планируется перенести готовые векторные объекты. В нашем случае это картографический редактор GPSMapEdit. И хотя в редакторе GPSMapEdit, основным форматом хранения данных является Польский формат, тем не менее он умеет экспортировать данные из таких форматов как .SHP и .MIF. Первый является форматом программы ArcView, второй - форматом MapInfo. Обе являются популярнейшими ГИС. Причём незарегистрированная версия программы GPSMapEdit может работать только с данными в формате ArcView. В свою очередь Easy Trace умеет, помимо прочих, сохранять векторные данные именно в этом формате. Скачать программу всегда можно с сайта разработчика. Кстати, там очень много материала, ориентированного на ознакомление с возможностями программы и методами её применения. Обязательно посмотрите! Установка программы достаточно стандартна и не вызовет никаких вопросов. В самом начале давайте определим, что нам может предложить программа, находящаяся в демонстрационном режиме. Оказывается, что в демо-режиме она сохраняет все функции полной версии. Отличие заключается в ограничениях на объем обрабатываемых растровых и векторных материалов: - размер загружаемых растровых файлов не может превышать 256 Kb (для черно-белых изображений); - размеры загружаемых растровых изображений не должны быть больше 2000x2000px; - число векторных слоев не может быть больше 17 - на каждом векторном слое можно установить не более 60 объектов. Давайте посмотрим чем нам всё это грозит. Как известно, размер файла напрямую зависит от размера растрового изображения и количества цветов. Чем меньше размер изображения, а он обычно измеряется в пикселах, и цветов, тем меньше размер файла. Какой будет площадь карты, изображение которого можно загрузить в демонстрационном режиме? Давайте подсчитаем. Для этого нам надо знать масштаб карты и разрешение, с каким она была отсканирована. Достаточно распространённым случаем является сканирование карт масштаба 1:200000 с разрешением 300 точек на дюйм. Какая площадь поместиться на квадрате 2000х2000 пиксел? Сначала разделим сторону этого квадрата на разрешение - 2000px/300dpi. Получили количество дюймов на одну сторону - примерно 6,5 дюймов. Теперь переведём эти данные в метрическую систему. Как известно в одном дюйме примерно 2,5см. Соответственно 6,5inch*2,5см=16,25см. Это будет размер одной стороны нашего квадрата для исходной карты. Масштаб карты говорит, что в 1см помещается 2км, поэтому умножим размер стороны на масштаб - 16,25см*2км=32,5км. Таким образом в демо-режиме в данном масштабе можно загрузить растровое изображение карты, соответствующее квадрату 32,5х32.5км. Много это или мало? На мой взгляд, вполне достаточно. Тем более никто не препятствует последовательной обработке кусков по 32,5км. Лично я рекомендовал бы даже владельцам лицензионной версии не увлекаться увеличением размера растра с обилием данных. Допустимое количество векторных слоёв составляет 17. Что такое векторный слой? Векторные слои можно сравнить с листами в альбоме. Где каждый лист содержит узкую тематическую информацию. Как обычно принято распределять информацию в слоях и сколько из может потребоваться? Самым популярным является разделение по типам топографических данных. Причём разделение должно учитывать, каким этот объект будет на будущей карте. Это может быть полигон - озеро, лесной массив, или линия - река, дорога. Например, распределение может быть таким: 1 слой - дороги, 2 слой - реки, ручьи, 3 слой - озёра, море, 4 слой - лесистые участки и т.д. Попробуйте продолжить этот перечень, чтобы использовать все доступные 17 слоёв. И решите, хватит ли их для работы. Я думаю, что 17 слоёв в нашем случае будет вполне достаточно. Теперь рассмотрим ограничение на количество объектов, допустимое на одном векторном слое. Их можно создать не более 60. Для указанной выше разбивки по слоям это будет значить 60 дорог, 60 рек и ручьёв, 60 озёр и т.д. И всё это в квадрате со стороной 32км. Скажу сразу, что обычно этого вполне хватает. Если вдруг количество объектов больше допустимого значения, то можно пойти двумя путями. Первый состоит в том, чтобы распределить данные по нескольким слоям, второй - это периодически сохранять объекты, удалять сохранённые данные и векторизовать то, что осталось. Объединить потом объекты в GPSMapEdit не составит никакого труда. Итак с демо-режимом мы определились. Кроме указанных, никаких дополнительных ограничений нет. Ни количества запусков, ни "Триала" на определённое количество дней, ни ограничений на экспорт/импорт. Таким образом, всё не так уж и страшно. Пошаговая инструкция по работе в Easy Trace. Теперь рассмотрим все основные этапы работы на одном конкретном примере. Как в любой пошаговой инструкции, невозможно показать многие возможности столь интересной программы. Однако сухого перечисления последовательностей выбираемых инструментов и команд для такой работы явно недостаточно, поэтому, придётся иногда останавливаться и объяснять некоторые моменты. Я надеюсь, что поняв общие принципы работы, Вы пойдёте дальше и постепенно познаете все возможности программы. А их, я Вас уверяю, очень много. Начнём со сканирования. Так как у нас есть ограничения на размер изображения, то для сканирования мы воспользуемся любым редактором растровых изображений. Например популярнейшим Adobe Photoshop. Разрешение вполне достаточно установить равным 300-400 точек на дюйм. Не буду учить Вас как в нём работать. Нам просто надо вырезать из полученного изображения квадрат размером 2000 пиксел. Приведу только самый простой вариант - с помощью инструмента "Rectangular Marquee Tool". Единственное что Вам ещё придётся сделать это установить для этого инструмента фиксированный размер выделения "Style: Fixed Size" и указать высоту и ширину этого выделения - 2000 px. После этого надо разместить выделение на нужном участке изображения.
Далее идёт обрезка по выделению - "Image/Crop" и в результате мы получили изображение требуемого размера. Сохраняем полученное изображение в формате BMP или TIFF. Эти форматы позволяют сохранять изображения без потери качества. Пришла пора поработать с растром. Качество отсканированного изображения имеет огромное значение для всей дальнейшей работы. Не даром разработчик программы рекомендует один раз потратить время на определение оптимальных настроек драйвера сканера, чтобы в дальнейшем минимизировать трату времени на обработку полученного изображения. Здесь следует помнить, что изначально на топографических картах имеется довольно ограниченное количество цветов. Обычно, в зависимости от количества топографических данных, их количество колеблется от пяти до восьми. Возьмите карту и посчитайте сами. Обратите внимание, как из одного цвета на карте получают два, перемежая этот цвет с белым фоном. В результате кажется, что появился более светлый оттенок. В процессе эксплуатации и сканировании число цветов увеличивается за счёт естественных факторов - старение, воздействие света, сгибы, настройка оптики сканера и т.п. Поэтому всегда следует сканировать, как можно лучше передавая исходные цвета карты и исключая приобретённые. Настройка драйвера индивидуальна для каждого случая. Рекомендую в Adobe Photoshop сразу преобразовать цветовую схему изображения. Наиболее подходящим будет преобразование в формат индексированных цветов. Это позволит значительно ограничить их количество и сократить размер памяти, занимаемой картой в ОЗУ компьютера. Но я делаю это не с помощью команд "Image/Mode/Indexed Color", где невозможно провести тонкую настройку, а через специальную программу, которая идёт вместе с Adobe Photoshop. Она называется Adobe ImageReady и предназначена для подготовки различных изображений для их опубликования в Интернет. Причём операция по сокращению цветов проходит в самом Adobe Photoshop - "File/Save for Web..." Здесь выбираем целевой формат. В нашем случае это GIF, и работаем над сокращением цветов. Обычно хватает 16-32 цветов, полученных с режимом фильтрации "Adaptive". Впрочем, каждое изображение достаточно индивидуально, и требует такого же подхода. В результате у нас получится изображение, состоящее из нескольких цветов. Эта операция и называется цветоделением. Но, так как Easy Trace не работает с форматом GIF, то пересохраним наше изображение в любом из указанных выше форматах. После подготовки растра, перед векторизацией или, как ещё говорят - трассировкой, наступает черёд закрыть Adobe Photoshop и перейти к следующему этапу. Этим этапом будет создание проекта в Easy Trace. Проект содержит всю информацию о состоянии нашей работы. В нём, в виде слоёв, будут храниться все данные. Помимо векторных слоёв, назначение которых мы рассматривали выше, проект содержит и исходные растровые данные. Они хранятся тоже в виде слоёв, только растровых. В процессе работы, количество растровых слоёв будет возрастать. Как правило, их количество равно или чуть меньше количеству векторных слоёв. С чем это связано, мы рассмотрим ниже. Как создавать новый проект? Всего существует пять вариантов. Мы рассмотрим всего одну схему работы. На мой взгляд эта схема наиболее проста и доступна каждому. Для её реализации нам не потребуются специальные программы других разработчиков. Создание проекта сопровождается очень удобным мастером. В нашем случае наиболее подходящим вариантом, будет создание проекта на основе имеющегося у нас растрового файла. Для этого вызываем мастер создания нового проекта - "Файл/Новый проект..." После чего появляется следующее окно:
Отмечаем галочкой пункт "Создать проект на основе растрового файла". Именно такой способ показался мне наиболее практичным с точки зрения его дальнейшей привязки. Нажимаем "Далее". (См. примечание 1 в конце статьи!)
А на втором шаге немного остановимся. Для удобства дальнейшего ввода координат для точек привязки, будет лучше использовать показанную на рисунке ориентацию осей координат. Масштаб можно поставить, исходя из масштаба, указанного в бумажной карте. Единицы измерения - пикселы. Разрешение изображения нужно поставить в соответствии с теми параметрами, которые Вы устанавливали при сканировании. Координаты углов остаются как есть. Они соответствуют размеру нашей растровой карты. На этом процесс создания проекта заканчивается. После этого должно появиться окно проекта. Сохраним наш проект, присвоив ему любое имя - "Файл/Сохранить как..." В окне проекта сразу будет виден наш растр. Не спешите начинать трассировку. Осталось ещё совсем немного. Давайте посмотрим, что у нас имеется на данный момент. Для этого вызовем окно настройки слоёв - "Проект/Слои проекта..." Появится окно, показанное ниже. Здесь мы всегда сможем увидеть все имеющиеся слои. Как видно, они разбиты на две группы - растровые и векторные. По умолчанию мы имеем по одному слою в каждой группе. Но, помимо информационной, основная функция этого окна, это управление слоями. Именно тут мы можем добавлять, удалять, переименовывать, настраивать, скрывать слои и т.д. Не буду описывать все возможные варианты. Главное знайте, если нужно получить информацию или изменить настройки для любого слоя, то Вам сюда. Кратко опишу возможные настройки в этом окне. Текущие настройки можно наблюдать и изменять с помощью специального поля с символами, расположенными в слева каждого слоя в окнах растровых и векторных слоёв. Для растровых слоёв можно задать видимость или невидимость слоя - галочка поставлена или отсутствует, активность или неактивность данного растра при трассировке - карандашик или снежинка и задать имя слоя. Так же здесь указан текущий цвет для бинаризованных слоёв. Его можно менять, исходя из собственных предпочтений. Для векторных слоёв настроек немного больше. Функции и обозначения видимости и активности для этих слоёв остались такими же, как и для растровых слоёв. Далее мы видим маленький ромбик на фоне квадрата. Это установка типа объекта. В программе Easy Trace возможно создание объектов всех необходимых типов - точек, линий и полигонов. Мы будем рассматривать только создание линий и полигонов, как самых сложных объектов. Соответственно, для первого типа ромбик будет пустым, а для полигонов - закрашенным. Далее мы можем задать имя слоя. А вот далее идёт поле, определяющее способ отображения объектов обоего типа в окне проекта. Вариантов достаточно, чтобы достаточно комфортно работать со всеми данными. Как Вы понимаете, для линий возможно изменять только цвет, а вот для полигонов настроек больше. Помимо выбора цвета, можно применять несколько вариантов заливки. Мы сейчас рассмотрели окно настройки слоёв проекта. Но есть ещё один вариант оперативного управления видимостью и активностью слоёв. Это, появившееся рядом с панелями инструментов, небольшое окно с указанием текущего слоя. Если нажать на раскрывающееся поле, то можно видеть все существующие в данное время слои. Но, в отличие от окна настройки слоёв, здесь мы можем только включать или выключать видимость слоя. Это делается простым снятием или постановкой галочки в нужном слое. Или делать нужный слой активным. Для этого нужно просто выбрать пункт нужного слоя. Теперь посмотрите на доступные инструменты. Они совершенно разные для двух групп слоёв. Для векторных слоёв набор выглядит так: А для растровых совершенно иначе:
Я специально не привожу полный перечень всех инструментов. Большинство из них достаточно привычны, а остальные снабжены хорошими подсказками. Но давайте вернёмся к нашей работе. Мы сейчас должны работать с растровым слоем. Он у нас пока один. Выберем его, как было описано выше. Чтобы не загромождать статью описанием каждого инструмента, давайте приступим к практической работе. Определим цель. Допустим целью будет получение векторных лесов, озёр и горизонталей (см. примечание 2), изображённых на нашем растре. Сначала займёмся горизонталями. Почему именно ими? Например потому, что работа по их ручной векторизации достаточно однообразна и неинтересна. Очень не многие наносят на свои карты линии горизонталей. Вместе с тем, горизонтали несут достаточно важную информацию о высотах и рельефе. Поэтому давайте сначала отработаем технологию векторизации именно на них. Перейдём на растровый слой. Свидетельством этого будут инструменты для обработки растра - см.выше. Допустим, наше изображение выглядит так: Здесь можно заметить, что в процессе обработки, количество цветов уменьшено до минимально возможного количества. На самом деле их здесь всего 12. Теперь давайте посмотрим поближе, как выглядят наши горизонтали. Здесь гораздо яснее видно ограниченное количество цветов. Теперь нам следует подготовить этот растр к трассировке. Залогом успешной трассировки всегда является максимально возможная чистка растра от лишних данных. В нашем случае лишним является всё, что не является горизонталями. Соответственно, нам надо удалить ненужные, и оставить все цвета, которые относятся к горизонталям. Как видно из рисунка, это коричневые оттенки. Для этого существует специальный инструмент. Он называется "Бинаризация". Вызвать его можно или через меню - "Редактирование/Бинаризация..." или выбрав в поле инструментов соответствующую иконку. В панели инструментов для растров она вторая слева. Суть этого инструмента очень проста - с его помощью можно выделять нужные цвета. Увеличим изображение так, чтобы были видны отдельные пикселы. Примерно так, как показано на рисунке. И последовательно выделяем только те цвета, из которых состоят наши линии горизонталей. Те цвета, которые были указаны, меняют цвет. Последовательное выделение нескольких оттенков коричнево должно дать в результате примерно следующее: Теперь нам надо перенести выделенные цвета, как отдельную растровую подложку в наш проект. Но перед этим необходимо выполнить последнюю операцию для растра. Это команда "Бинаризовать". Вызывается она в окне настроек инструмента. После этого мы увидим, что всё, что было выделено, осталось в виде белых областей на чёрном фоне, а прочее исчезло. После этого нам надо избавится от небольшой "грязи" на нашем изображении. Она выражается в наличии одно- двухпиксельных точек хаотично разбросанных по полю. Для их удаления есть особый инструмент. Он вызывается командой "Редактирование/Чистка растра...". Посмотрите окно настройки инструмента и Вы сами поймёте принцип его действия. Однако в нашем случае лучше применить другой способ редактирования полученного растра. Не подумайте, что сейчас начнётся сложнейший процесс, состоящий из десятка операций. Вернее операций будет много, но они будут выполняться в автоматическом режиме. Выберем инструмент - "Редактирование/Фильтрация растра...". В появившемся окне выберем пункт "Thin isolines" и начнём обработку. Если в результате получится не совсем то, что хотелось, то всегда можно отменить это действие. Сохраним полученный файл - "Файл/Сохранить как...". На самом деле отдельные точки обычно не мешают трассировке. Но в дальнейшем эти инструменты могут Вам очень пригодиться. Важно то, что Вы теперь о них знаете. Теперь нажмём правой кнопкой мыши на полученном изображении и выберем пункт "Редактирование/Привязать к проекту...". После этого возникнет окно с вариантами привязки растра. Но в нашем случае ничего привязывать пока не надо. Поэтому выберем "Без коррекции (в заданную точку проекта)". В следующем окне укажем, что данный растр будет использовать параметры нашего основного растра. После этого мы снова попадём в окно проекта. Однако где же наш новый слой? Его почти не видно. Оказывается он отображается вместе с нашим первым слоем и не очень хорошо заметен на его фоне. Сейчас всё поправим. Раскроем меню текущего слоя и снимем видимость нашего первого слоя. После закрытия этого окна, останется видимым только новый слой с горизонталями. Правда можно и не убирать основной растр. Однако необходимо исключить его из процесса векторизации. Для этого вызовем окно настройки слоёв и нужном растре вместо карандашика поставим снежинку. Это "заморозит" данный растр. Только теперь и наступает черёд автоматики. И хотя в выборе вариантов трассировки есть полностью автоматическая трассировка - "Утилиты/Автоматическая трассировка/Трассировка линий... или Оконтуривание...", но лично я предпочитаю работать в полуавтоматическом режиме. Это позволяет контролировать и управлять всем процессом. Именно такой способ и будет показан далее. Выбираем нужный инструмент трассировки. Чаще всего, как и в этом случае, будет необходим инструмент "Кривая". Он стоит самым крайним слева на меню инструментов для векторных слоёв (см. меню инструментов для векторных слоёв). Выбрав его, нужно указать курсором на произвольное место нужной горизонтали. От этого места сразу пойдёт линия. Это уже наш вектор. В местах, вызывающих затруднения для распознавания направления движения, прокладка будет останавливаться и ждать Ваших подсказок. Помогайте ей, переводя курсор к месту продолжения кривой. Если вдруг что-то пошло не так, можно остановить процесс автоматической трассировки, щелкнув правой кнопкой мыши. После этого все действия прекращаются и появляется дополнительное меню инструмента. В этом окне выберите режим "Откат". Он позволяет, щёлкая левой кнопкой мыши, последовательно убирать ненужные участки кривой. Уберите всё необходимое и, выбрав в этом же меню режим "Автоматическая трассировка", продолжите создание кривой. Если линия замкнутая, как например в центральной части моего примера, то трассировщик сам замкнёт её. Если линия не закончена, то дойдя до её конца, надо просто два раза нажать правой кнопкой мыши и процесс трассировки продолжится уже с другой стороны. Окончить создание можно также дважды щёлкнув правой кнопкой мыши или нажав кнопку Esc. Здесь не описаны все операции, доступные в показанном меню работы с инструментом, но все подсказки на русском языке и достаточно понятны. В результате должно получиться примерно следующее: Обратите внимание, что я задал стандартный цвет для линий горизонталей - коричневый. Это делается в перед началом трассировки в окне менеджера слоёв проекта. Можно изменить этот цвет и позже. Теперь давайте переведём в векторную форму участок леса. Не буду подробно описывать все подготовительные операции. Просто перечислю их: в поле проекта создаём новый векторный слой с названием "Лес", переходим на основную растровую картинку, она в цвете, выбираем инструмент "Бинаризация" и отмечаем все зелёные оттенки, соответствующие обозначению лесистых участков. Должно получиться примерно так: Вы уже догадываетесь, что посте бинаризации у нас не будет одной полностью залитой области. Так и есть: Вот теперь можно вспомнить и про чистку растра. Если мы сейчас начнём трассировку, то ничего хорошего из этого не получится. Вот типичный пример загрязнённого участка:
Поэтому выбираем инструмент "Редактирование/Чистка растра..." и, настроив этот инструмент, пробуем очистить наш рисунок от ненужной грязи. После выбора значений для данного инструмента равными 4 для удаления и 6 для заполнения и применения данного инструмента 3-4 раза, у меня получилось следующее: Не идеально, но уже гораздо лучше. Теперь надо сгладить внешние границы этого участка. Как это сделать? Давайте вспомним принципы работы с изображениями в Adobe Photoshop. Вспомнили? Если нет, ничего страшного. Я сам узнал об этом приёме совсем недавно. Переведём наше изображение в полноцветный режим - "Редактирование/Цветовой режим/TrueColor (24bits)". Выберем инструмент "Редактирование/Размытие..." В настройках для данного случая я выставил значения 95% для коэффициента и 4 для радиуса. Как будет видно, этим мы можем немного размыть и как бы сгладить очертания нашего леса. У меня получилось так: Теперь, с помощью инструмента "Редактирование/Улучшение контраста...", попробуем сделать так, чтобы получилось опять двухтоновое изображение. Для этого я установил значение левого верхнего движка линии настройки равным 85, а правого - 100. После чего опять перевёл изображение в монохромный режим. Вот что получилось в результате: Как видно, после этой операции исчезли и оставшиеся ненужные участки. Общий вид теперь такой: Этого вполне достаточно для нашей задачи. Но, если вдруг некоторые ненужные участки черного или белого цвета остались, то значит пришла пора выполнить небольшую ручную работу. Для этого выберем инструмент "Редактирование/Редактирование растра". В нижней части окна программы появится окно с настройками этого инструмента. Что бы понять как работает этот инструмент попробуйте использовать его в окне изображения с нажатой левой, а затем правой кнопкой мыши. Посмотрите, что при этом меняется. Всё достаточно просто. Не забывайте, что нам нужны только границы области, поэтому закрашивать все внутренние участки нет никакого смысла. Однако, если в нашем проекте есть вложенные участки - озёра, болота и т.п., то рекомендую Вам сразу сделать контуры и для них. Это нам очень пригодиться в недалёком будущем. В результате получаем изображение с которым уже можно работать дальше. сохраняем его под каким-либо именем и присоединяем к проекту. Векторный слой с названием "Лес" у нас уже есть. Теперь опять пришла пора трассировки. Выбор инструмента прежний - Кривая. Но если мы сейчас начнём векторизацию, то у нас ничего не получится. Почему? Да потому, что в случае с горизонталями, нам для векторизации нужна была середина растровой линии, а в данном случае нам нужно обводить край растрового участка. Поэтому сменим стратегию растеризации - "Сервис/Параметры трассировки...". Выставим там режим "Трассировать по контуру". После этого можно приступать к процессу. Внимательно смотрите на каком из векторных слоёв Вы сейчас находитесь. Все объекты будут располагаться только на текущем слое. Отдельно надо сказать про настройки стратегий растеризации. Обязательно используйте настройки параметров трассировки. Это может сохранить Вам много времени и нервов. Посмотрите на параметры и попытайтесь найти наилучшие значения для необходимых параметров. Я, например, обычно немного уменьшаю допустимый разрыв контура и увеличиваю угол поиска продолжения. После трассировки и оптимизации формы векторных линий - "Утилиты/Автоматическая трассировка/Оптимизация формы линий...", результат не заставил себя ждать: Вот так уже гораздо интереснее. Правда оптимизацию векторных линий я сделал больше для наглядности. Обычно этой функцией нужно пользоваться умеренно. Потому что все эти векторные данные в последствии ещё будут подвергаться генерализации в программе GPSMapEdit. Напомню, что у нас всего два векторных слоя. Давайте подумаем сколько слоёв нам ещё может понадобится. На исходном изображении видно, что у нас пока не сделаны озёра, ручьи, автомобильные дороги, железные дороги, населённые пункты и болота. Всего шесть слоёв. Но на самом деле их будет немного больше. Объясню почему. Дело в том, что на данном этапе мы работаем только с линиями и полигонами. Посмотрите на рисунок с растровым слоем перед трассировкой леса. Вы видите, что на нём есть не залитые участки, которые остались от озёр, болот и т.п. Этих участков сейчас нет на нашем слое с лесом. Это сделано специально. Если мы обведём этот участок, то в последствии, при экспорте этого слоя, полигон обозначающий Лес и другой полигон, обозначающий отсутствие леса, будут одного цвета и внутренний просто не будет виден. Это осложнит работу по вырезанию одного из другого. Поэтому внутренний участок лучше поместить на отдельный слой и при экспорте задать для него другой цвет. Таких нюансов довольно много, поэтому внимательно посмотрите Ваш участок карты и сразу продумайте о структуре проекта. Ещё немного про дальнейшие действия. С лесом мы почти разобрались. Теперь наступила очередь озёр. Можно немного упростить процесс трассировки озёр. Ведь у нас уже есть слой на котором есть очертания нескольких озёр. Это тот же самый растровый слой, который мы использовали для трассировки лесистых участков. Можно воспользуемся им. Но перед этим, конечно, создадим векторный слой "Озёра" и сделаем пока невидимыми ненужные векторные и растровые слои. В остальном процесс подготовки растра и трассировка не отличается от описанной выше. Через некоторое время у меня получилось следующее:
Здесь я специально дал вид только очертаний объектов для того, чтобы они не перекрывали друг друга. Как Вы можете видеть здесь уже присутствуют пять слоёв - горизонтали, лес, озёра, реки и железная дорога. Кстати для железной дороги очень кстати пришлась функция оптимизации формы линии с чуть большими параметрами, чем обычно. Это позволило значительно сократить количество узлов и сгладить её очертания до исходных. Ещё один момент. После векторизации таких ответственных объектов как например дороги, часто возникает необходимость в коррекции некоторых узлов на получившейся линии. Как например, для удаления лишних узлов на линии железной дороги в местах, где она пересекает реки. Там стоит символ моста и линия трассировки проходит через него, отклоняясь от основной линии. Для этого выберем инструмент для редактирования узлов - "Редактирование/Редактор". Работа с этим инструментом достаточно проста. Сначала нужно выбрать объект. Выбранный объект становится активным и на нём теперь видны все узлы. Увеличим нужный участок. Если нам надо переместить узел, отмечаем его с помощью левой кнопки мыши и перетаскиваем на нужное место. Если узел требуется удалить, то просто щёлкаем на нём правой кнопкой мыши. Добавить узлы можно щёлкая в нужное место левой кнопкой мыши. Линии также можно объединять, разрывать, замыкать и пр. Это делается этим же инструментом, стоит только переключиться между режимом создания точек в режим захвата отрезков. Этот переключатель Вы найдёте в нижнем поле настройки инструментов. Рекомендую Вам почаще обращать внимание на это поле. Там можно найти очень интересные настройки практически для всех инструментов. На этом закончим с векторизацией. Теперь пришла пора одной из самой ответственной операции - привязке проекта, без которой вся предыдущая работа автоматически становится никому не нужной.. Перед началом привязки, хочу повториться - весь описанный выше процесс, ни в коем случае не является догмой. Все настройки и используемые инструменты выбирались, исходя из конкретной ситуации и подходят только для карт, подобных взятой для данного примера. И хоть я и постарался взять самую распространённую топологическую основу, но в каждом случае Вам придётся находить свои варианты использования настроек и инструментов. Это творческий процесс, не терпящий однообразия. Вполне может быть, что Вы найдёте ещё не один способ сделать всё ещё точнее и быстрее. Теперь перед нами стоит одна из самых ответственных задач - перенести все эти данные в программу GPSMapEdit. Этим и займёмся. Без привязки на данном этапе не обойтись. Привязка карты в любой программе является одним из самых сложных моментов. Не является исключением и Easy Trace. И если ранее я специально указывал на существование различных подходов к процессу трассировки, то сейчас прошу строго следовать моим рекомендациям по процессу привязки. Для реализации качественной привязки нам, как и в любом другом случае, потребуются заранее известные точки, которые можно однозначно определить на карте и их точные координаты. И конечно наша растровая карта, как основа. Лучше всего иметь точки, самостоятельно сделанные с помощью навигаторов. Точнее этих данных нам вряд ли удастся что- либо добыть. Лучше всего располагать точки привязки равномерно по всему полю карты. Наилучший результат обычно получается, если расположить четыре точки привязки по краям рисунка и одну поместить в центр. Это будет основа. Остальные имеющиеся точки можно ставить по всему полю. Они будут выравнивать небольшие искажения (см. примечание 3). Весь процесс привязки, описанный ниже, будет строится именно на базовой системе точек привязки, состоящей из пяти штук. Я понимаю, что это не всегда выполнимо в реальности, но, как Вы увидите далее, этот способ допускает коррекцию привязки по мере получения большего количества точных данных. С этим понятно. Приступим к практической работе. Первым делом нам надо определить точное расположение точек привязки на нашем растре. Эти значения нам нужны в пикселах. Самым простым способом мне представляется использование всё того же Adobe Photoshop. Откроем в нём нашу карту и, с помощью вкладки "Info", определим координаты наших точек привязки на растре. Не забудьте переключить единицы измерения на пикселы. По умолчанию там, кажется, дюймы или сантиметры. Ориентирами для наших точек могут быть мосты, развилки, пересечения просек и т.п. В данном примере я взял: Для первой точки привязки - место впадения ручья в озеро: Для второй - впадение ручья в реку; Третья и четвёртая - слияние двух рек; И пятая точка - это выдающаяся острая заводь на озере. Для удобства, я ниже привожу схему расположения точек. Сами точки расположены в центрах окружностей. Не забываем, что именно по этим точкам у меня уже должны быть точные геодезические координаты. Загрузив их в программу GPSMapEdit, всегда можно посмотреть координаты нужной точки. Не забудьте установить параметры представления координат в "Lat/Lon hdddºmm'ss,s". В результате у нас есть координаты точек привязки в пикселах на нашей растровой карте и, соответствующие им, координаты на местности в датуме WGS84. Теперь нам потребуется перевести данные из геодезических координат, выраженных в градусах, в линейную систему координат, выраженную в метрах. Для этого можно воспользоваться любым калькулятором для перевода координат из градусов в метры. Вот один из них. Так же на этом сайте есть и другие подобные калькуляторы. Например в виде листа для Excell. Особенность последнего в том, что он позволяет пересчитывать сразу из системы Пулково42 в метры без промежуточного преобразования из Пулково42 в WGS84. Все они позволяют рассчитать координаты с точностью до одного метра. В нашем случае этого вполне достаточно.
В результате, у меня получилась следующая таблица значений:
Всё! Теперь у нас есть все исходные данные для осуществления привязки. Для этого нам необходимо внести их в специальный файл с расширением CPT. Это файл, содержащий информацию о точках привязки. Это простой текстовый файл, который Вы можете создать в любом текстовом редакторе, в котором каждой контрольной точке соответствует отдельная строка, содержащая 4 значения, разделенные пробелами. Первая пара значений задает координаты контрольной точки в исходной системе координат, вторая - в конечной. Набор контрольных точек определяет преобразование между этими двумя системами координат. Всё просто. Но есть один важный момент. Дело в том, что оси координат по оси Y в программе Easy Trace и Adobe Photoshop не совпадают и перевёрнуты на 180 градусов. Поэтому нам придётся сделать ещё одно арифметическое действие - вычесть из высоты растрового файла карты, выраженного в пикселах, данные по оси Y для каждой точки привязки (см. примечание 4). В данном примере высота растра была максимальной для демо-режима программы Easy Trace, и равнялась 2000 пикселам. В результате в нашем файле с расширением CPT, будут присутствовать такие данные:
99 1758 533186 7143143 1614 1775 539604 7143284 316 313 534147 7137033 1831 132 540575 7136350 1038 1119 537173 7140495 Вот теперь на самом деле всё! Приступаем к экспортированию данных из программы Easy Trace в формат, пригодный для того, чтобы его можно было загрузить в программу GPSMapEdit. Как мы уже знаем, таким форматом является формат SHP. В нём содержится не только информация о векторных объектах, но и вся информация о их геопривязке. Дальнейший процесс не вызовет у Вас затруднений, поэтому я приведу только скриншоты нужных окон и краткие комментарии к ним. Выбираем операцию экспортирования объектов - "Файл/Экспорт...". Появится первое окно мастера экспорта. Здесь указывается нужный формат и путь для сохранения готовых данных. Далее идёт окно "Объекты". Я не привожу его здесь по причине того, что там ничего менять не нужно. А вот за ним идёт важное окно, в котором нам предлагается указать векторные слои, которые мы хотим экспортировать. Я рекомендую сразу отметить все необходимые слои. После сохранения в целевом формате они будут хранится в файлах с именами, соответствующими названию слоя и идентификаторами типа объекта - линия или полигон. Дальше идёт окно "Опции слоёв". Как Вы видите, в этом окне можно посмотреть и задать тип объектов, содержащихся к каждом из выбранных слоёв. Если Вы раньше установили соответствующий тип в менеджере слоёв, то нужный тип будет выставлен автоматически. А вот в следующем окне, мы будем привязывать наши данные. Это окно "Трансформация". В сущности, мы уже ничего делать не будем. У нас уже всё готово. Поэтому выбираем пункт "Использовать контрольные точки из файла" и указываем путь к созданному нами файлу с расширением CPT. Исходными пусть считаются координаты текущего растра. Кстати, здесь ещё раз можно посмотреть координаты контрольных точек и проверить всё ли правильно введено. Далее идёт окно настройки файлов типа SHP. Но там ничего менять не требуется. На этом процесс экспорта заканчивается. В результате мы должны получить несколько файлов с расширением SHP и именами слоёв вместе с атрибутами типа объектов, содержащихся в каждом из них. Теперь за дело берётся GPSMapEdit. Запускаем программу и начинаем импортировать объекты. Тут нам тоже придётся иметь дело с мастером, который проведёт нас от начала до конца. Некоторые из окон будут приведены. Итак, начинаем процесс импорта - "File/Import/ESRI shape (*.shp)". После чего указываем путь и имя нужного нам файла. В результате чего появится первое окно мастера. В этом окне необходимо выбрать типовой набор объектов и, соответственно, сам тип для импортируемых объектов. В нашем случае это набор программы ГИС Русса и тип объектов - полугоризонталь. В следующем окне нам предлагается импортировать имена объектов. В нашем случае имён в исходном файле нет и их придётся присваивать позже вручную. Поэтому сразу снимаем галочку в пункте "Select field for label". Следующее окно является самым ответственным. Здесь нам предстоит задать параметры для импорта в соответствии с используемой системой координат. В принципе всё, что Вы видите на изображении сверху должно таким и остаться. А именно - система координат (Coordinate system) и Датум (Datum). Из оставшихся активных окон есть только Номер зоны (Zone). Этот номер зоны можно посмотреть в том же калькуляторе. Правда там он не выделен в отдельном окне, но всё таки присутствует. Посмотрите где его нужно искать.
В следующем окне выбираем на какой именно слой карты будут помещены импортируемые объекты. Собственно на этом процесс импорта и завершается. появляется стандартное окно программы в котором уже присутствуют наши объекты. Если вдруг их расположение не совсем точно ложится на оригинал, то это всегда можно подправить с помощью инструментов Select objects или любой трансформацией. Вот то, что у меня получилось в процессе написания этой статьи. Осталось только присвоить имена некоторым объектам и можно загружать в навигатор. Сознаюсь, что лес на этом рисунке остался сплошным, без внутренних "безлесых" областей. Но теперь для Вас уже не составит большого труда сделать всё так, как надо. На этом столь объёмную статью можно считать законченной. Здесь дан только один способ работы. На самом деле мы не рассмотрели ещё множество других способов и очень интересных и полезных инструментов этой замечательной программы. Ещё раз повторю, что указанный способ не есть догма, поэтому не поленитесь прочитать про назначение остальных инструментов в файле помощи и заглянуть на сайт программы для ознакомления с другими учебными материалами, которых там достаточно много. В заключение стоит ещё раз повторить основную мысль - векторизатор Easy Trace не сделает за Вас всю работу, но, в ряде случаев, поможет сделать её гораздо быстрей. Рекомендую не стараться векторизовать всё что есть на карте, а выделить только те данные, которые можно векторизовать без значительных затрат времени. Как правило, к таким данным чаще всего относятся линейные объекты и площади с чётко выраженными очертаниями. К первым можно отнести дороги, реки, ручьи, горизонтали, границы и пр.. Ко вторым - моря, озёра, острова и другие элементы, определяемы индивидуально на каждой карте. Для примера скажу, что на данный момент я могу полностью векторизовать карту приведённую в примере ориентировочно за 1-1,5 часа. Имеется в виду именно векторизовать. Ещё полчаса уйдёт на доводку материала в GPSMapEdit. Итого два часа на полную векторизацию куска карты масштаба 1:100000 размером 2000х2000 пиксел, содержащей ВСЕ объекты бумажного оригинала. Я надеюсь, что то, что Вы узнали из этой статьи, поможет Вам оценить возможности программы Easy Trace и хоть немного ускорить свою работу по векторизации топографических карт. _____ Примечание 1. Начиная с версии 8.0 программа Easy Trace способна использовать файлы привязки OziExplorer. В этом случае привязка значительно упрощается. Хотя сама привязка по прежнему должна производиться в координатах на плоскости (метрах). Примечание 2. После написания статьи, я узнал, что изобаты - это отметки глубин, а отметки высот называются горизонталями. Все вместе они называются изолиниями. На скриншотах иногда видна эта моя ошибка. Прошу прощения у читателя за допущенную ошибку. Примечание 3. Начиная с версии Easy Trace 8.0 в программе реализован процесс преобразования растра на основе триангуляции. Этот режим даёт возможность выправлять достаточно сильные и несистематические искажения растрового оригинала. Примечание 4. На самом деле, гораздо проще посмотреть координаты прямо в Easy Trace в растровом слое. При передвижении курсора по полю которого, координаты показываются в информационном поле с учётом правильного расположения осей координат. Это позволит избежать операции вычисления этих значений, взятых из Adobe Photoshop.
Написано: 20.12.2004г. Выложено: 21.10.2006г. |