1. Введение
1.1 Что будем делать, и вообще, нужно ли оно
N: Насколько я понял, эта программа предназначена для преобразования растровой карты в векторную в формате Гармин.
Не совсем так. Эта программа предназначена для оцифровки растровой карты. Это значит что с ее помощью можно преобразовать растровую карту в векторную, под которой понимается набор прямых, кривых, многоугольников, и так далее. Программа позволяет этот процесс производить как автоматически (с очень плохим результатом), так и вручную, полуавтоматически. Выгружается векторная карта в один из общих векторных форматов — но не в формат Гармин. Дальше потребуется еще цепочка из двух программ (GPSMapEdit и CGPSMapper) для получения из этого векторного формата карты в формате Гармин, которая с помощью последней программы SendMap будет заслана в GPS. Так этот процесс выглядит в общих чертах.
Пока еще не поздно, стоит определиться, а нужно ли вообще мучаться с векторизацией карт самому, — может стоит потратить время более продуктивно. Вполне возможно, нужные вам карты уже нарисовали до вас. Не очень подробные карты можно брать на http://freemaps.gisrussa.ru/, не знаю, видели ли вы уже этот ресурс. Лично я брал оттуда карту камчатки перед походом 2005 года — вполне удовлетворительное качество, примерно по детальности соответствует двухкилометровке. У меня была только одна километровка района Ключевской сопки, я ее за три дня оцифровал (и это были довольно насыщенные три дня), и решил что для остального мне сойдет карта с гис-русса — и действительно, вполне сошла. Для заливки карт с этого ресурса требуется опять таки цепочка из двух программ (GPSMapEdit и CGPSMapper) для получения из этого векторного формата карты в формате Гармин, и дальше SendMap для заливки в GPS — но об этом дальше.
2. Установка необходимого инструментария
Внимание! Помните, что по закону не допускается «осуществление без разрешения … действий, направленных на снятие ограничений использования произведений или объектов смежных прав»!
2.1 Установка Easy Trace [1]
Самый сложный момент. Здесь его описывать не буду, разбирайтесь сами. В конце концов, статья не про то
2.2 Установка Ozi Explorer [4]
Честно говоря, уже не помню все аспекты установки Ozi Explorer и «регистрации». Когда-то давно, помнится, устанавливалась более старая версия, ломалась-регистрированась, и потом поверх ставилась новая версия. Давно уже этим не занимался, если кто имеет что сказать, по этому поводу — поделитесь. Программа из серии «устанавливается один раз» — я теперь просто переписываю каталог с версией 3.95.4i в нужное место и начинаю работать.
2.3 Установка GPSMapEdit [5]
Незарегистрированная версия, имеющая ограничения по импорту из MIF (большую часть времени не нужно, потому как можно обойти другими путями) и по размеру загружаемого растра (обидно, но не смертельно, потому что растр нужен больше тем, кто собирается рисовать карту в этой программе, а мы собираемся использовать только как конвертер) лежит на официальном сайте. Скачивается, распаковывается, особой установки не требует, работает там, куда положили. Кряков кажется нет, видимо регистрируется через интернет — наши писали, видимо на совесть сделано :).
2.4 Установка SendMap20 и img2gps [6]
Обычно идут вместе, так же работают из любого каталога, особой установки не требуют. В случае работы с GPS через USB, требуют чтобы в системе были установлены драйверы для данного конкретного GPS.
3. Учите мат-часть
Для того, чтобы успешно оцифровывать карты и пользоваться ими, необходимо разбираться в некоторых теоретических аспектах картопользования. Жизнь показывает, что все возможные задачи заранее описать невозможно, и теоретическая часть понадобится именно тогда, когда придется отступить с нахоженной и описанной тропы.
В этом разделе приводится кратная выжимка из статей [1],[2], которые рекомендуются к прочтению всем, кто хочет разобраться в предмете.
3.1 Карты
3.1.1 Классификация и назначение топографических карт
Топографическая карта — уменьшенное, точное, подробное и наглядное изображение земной поверхности со всеми ее объектами, выполненное в определенной картографической проекции.
Классификация топографических карт. Советские топографические карты являются общегосударственными. Они издаются в масштабах, некоторые из которых указаны в Табл.1.
Масштаб карты (величина масштаба) | Наименование карты | Подпись масштаба карт на боевых документах | Примерные размеры листом карты на широте 54° , км | Площадь, покрываемая листом карты на широте 54° , км^2 |
1:100 000 (в 1 см 1 км) |
Стотысячная, или километровая | 100000 | 37х32 | 1200 |
1:200000 (в 1 см 2 км) |
Двухсоттысячная, или двухкилометровая | 200 000 | 74х65 | 5000 |
1:500 000 (в 1 см 5 км) |
Пятьсот тысячная, или пятикилометровая | 500 000 | 222х196 | 44000 |
Таблица 1 |
Примечание: Первое число размеров листа означает протяженность с севера на юг; этот размер является постоянным для любой широты; второе число — протяженность с востока на запад; этот размер с увеличением широты постепенно уменьшается.
3.1.2 Проекции топографических карт
Картографические проекции — математические способы изображения на плоскости поверхности земного шара при составлении карт.
Сферические поверхности не развертываются на плоскости без складок и разрывов и по этой причине на картах неизбежны искажения длин, углов, площадей. Лишь в некоторых проекциях сохраняется равенство углов, но из-за этого значительно искажаются длины и площади, или сохраняется равенство площадей, но значительно искажаются углы и длины.
Проекция карт масштаба 1:25000—1:500 000. Топографические карты СССР и многих иностранных государств создаются в поперечно-цилиндрической проекции Гаусса.
Проектирование земной поверхности на плоскость в проекции Гаусса производится по зонам, вытянутым от северного полюса до южного. Границами зон служат меридианы с долготой, кратной 6° (всего 60 зон). В пределах каждой зоны земная поверхность проектируется на плоскость путем преобразования географических координат точек земной поверхности в прямоугольные координаты на плоскости.
Длины линий сохраняются только вдоль осевого меридиана, в остальных местах они несколько преувеличены. Наибольшие относительные искажения длин имеют место на границах зон и в пределах СССР достигают 1/1000, относительные искажения площадей— 1/500. Искажения расстояний при графических измерениях на топографических картах не обнаруживаются; они учитываются только при выполнении специальных задач, связанных с использованием больших дальностей.
Углы в пределах небольшого участка не искажаются; очертания контуров на местности и карте практически подобны. Искажения любых направлений на листе карты масштаба 1:100000 не превышают 40″. Все листы карт любого масштаба в пределах одной зоны могут быть склеены в один блок без каких-либо складок и разрывов.
3.1.3 Оформление карт
Рамки листов карт. Топографические карты создаются на большие территории; издаются отдельными листами, ограниченными рамками. Сторонами внутренних рамок служат линии параллелей и меридианов. Они делятся на отрезки, равные в градусной мере одной минуте (1′) на картах масштаба 1:25000—1:200 000 и пяти минутам (5′) на картах масштаба 1:500000 и 1:1000 000. Эти деления через одно залиты черной краской или заштрихованы. Каждый минутный отрезок на картах масштаба 1: 25 000—1: 100000 делится точками на шесть частей по 10″ каждое, за исключением листов карты масштаба 1:100 000, расположенных в пределах широт 60—76°, на которых минутные отрезки по северной и южной сторонам рамки делятся на три части (по 20″), а расположенных севернее параллели 76° на две части (по 30″).
Зарамочное оформление топографических карт содержит справочные сведения о данном листе карты, сведения, дополняющие характеристику местности, и данные, облегчающие работу с картой.
Расположение элементов зарамочного оформления карт масштаба 1: 25 000, I: 50 000, I: 100 000, 1: 200 000 и 1: 500 000 показано на рис. 1.
Рисунок 1. |
Они означают:
1. Система координат.
2. Название республики и области, территория которых изображена на данном листе.
3. Наименование ведомства, подготовившего и издавшего карту.
4. Номенклатура листа и название наиболее значительного населенного пункта (для карт масштаба 1: 200 000 и 1: 500 000 — только название населенного пункта).
5. Номер и год издания (на картах масштаба 1:200 000 и 1:500 000 номенклатура, номер и год издания указываются ниже подписи «Гриф карты»).
6. Гриф карты.
7. Метод и год съемки или год составления и исходные материалы, по которым составлена карта; год подготовки к изданию и печати карты.
8. Исполнители.
9. Шкала заложений (только на картах масштаба 1:25 000, 1:50000 и 1:100000).
10. Численный масштаб.
11. Величина масштаба.
12. Линейный масштаб.
13. Высота сечения (на карте масштаба 1 : 500000 здесь же дается шкала ступеней высот).
14. Система высот (за исключением карты масштаба 1 : 500 000).
15. Схема взаимного расположения вертикальной линии координатной сетки, истинного и магнитного меридианов и величины склонения магнитной стрелки, сближения меридианов и поправки направления (за исключением карты масштаба 1:500000).
16. Данные о склонении магнитной стрелки, сближении меридианов и годовом склонении магнитной стрелки (эти сведения на карте масштаба 1 : 500 000 не даются).
3.1.4 Номенклатура карт
Разграфка карт — система деления карт на отдельные листы. Номенклатура карт — система нумерации и обозначения отдельных листов. Каждый лист ограничен рамкой. Сторонами рамок листов топографических карт служат параллели и меридианы (табл. 2).
Масштаб карты | Размеры листов карты в градусной мере | Типовая запись номенклатуры | |
по широте | по долготе | ||
1:1000 000 | 4° | 6° | N—37 |
1:500 000 | 2° | 3° | N—37—Б |
1:200 000 | 40′ | 1° | N—37—XVI |
1:100000 | 20′ | 30′ | N-37—56 |
1:50 000 | 10′ | 15′ | N—37—56—A |
1:25 000 | 5′ | 7’30» | N—37—56—A—6 |
Таблица 2. |
Рисунок 2. |
Рисунок 3. |
В основу номенклатуры топографических карт СССР положена карта масштаба 1 : 1 000 000.
Номенклатура карты масштаба 1 :1000 000 (рис 2). Вся поверхность Земли делится параллелями на ряды (через 4°), а меридианами—на колонны (через 6°); стороны образовавшихся трапеций служат границами листов карты масштаба 1 : 1000 000. Ряды обозначаются заглавными латинскими буквами от А до V, начиная от экватора к обоим полюсам, а колонны — арабскими цифрами, начиная от меридиана 180° с запада на восток. Номенклатура листа карты состоит из буквы ряда и номера колонны. Например, лист с г. Москва обозначается N—37
Лист карты масштаба 1 :500 000 является четвертой частью листа карты 1 : 1000 000 и обозначается номенклатурой листа миллионной карты с добавлением одной из заглавных букв А, Б, В, Г русского алфавита, обозначающих соответствующую четверть (рис. 3). Например, лист карты масштаба 1:500000 с г. Рязань имеет номенклатуру N—37—Б.
Лист карты масштаба 1:200000 образуется делением миллионного листа на 36 частей (рис. 3); номенклатура его состоит из обозначения листа карты масштаба 1 : 1000 000 с добавлением одной из римских цифр 1, II, III, IV, . . ., XXXVI. Например, лист с г. Рязань имеет номенклатуру N—37—XVI
Лист карты масштаба 1:100 000 получается делением листа миллионной карты на 144 части (рис. 4); номенклатура его состоит из обозначения листа карты 1:1000 000 с добавлением одного из чисел 1, 2, 3, 4, …, 143, 144. Например, лист стотысячной карты с г. Рязань будет N—37—56.
Лист карты масштаба 1:50 000 образуется делением листа карты масштаба 1:100000 на четыре части (рис. 5); его номенклатура состоит из номенклатуры стотысячной карты и одной из заглавных букв А, Б, В, Г русского алфавита. Например, N—37—56—А. Лист карты масштаба 1:25000 получается делением листа карты масштаба 1:50 000 на четыре части; номенклатура его образуется из номенклатуры пятидесятитысячной карты с добавлением одной из строчных букв а, б, в, г русского алфавита. Пример на рис. 5 N— 37— 56— А— б.
Листы карт, расположенные между широтами 60—76°, сдваиваются по долготе; например, лист карты масштаба 1 : 1000 000 по долготе будет иметь протяженность не 6, а 12°.
Сдвоенные листы миллионной карты обозначаются указанием ряда (буквой) и двух соответствующих колонн (нечетным и последующим четным числом); например, лист карты масштаба 1 : 1 000 000 на район г. Мурманска имеет номенклатуру R—35,36.
Сдвоенные листы карт других масштабов обозначаются аналогичным способом: к номенклатуре западного левого листа приписывается буква или номер восточного листа, например R—35—25,26. Листы карт, расположенные севернее параллели 76°, издаются счетверенными по долготе. Их обозначение производится таким же порядком, как и сдвоенных листов, только к номенклатуре западного листа приписываются номера последующих трех листов.
3.2 Координаты
3.2.1 Датумы и прочие системы координат
Итак, держитесь те, кто на бронепоезде, сейчас пойдет сложный раздел. Объясняю как умею, кто умеет лучше — милости просим в соавторы, а пока что есть — то есть. Лучше сразу договориться так: вы читаете этот раздел, пока получается, а если вдруг понимаете, что ничего не понимаете — тогда бросайте все нафиг и переходите к следующему разделу. Но вот когда у вас возникнет непонятная и необъяснимая проблема с привязкой карты, когда возникнет какое-нибудь странное смещение реальных GPS треков и точек относительно привязанной карты — вот тогда вам придется вернуться, и все-таки прочитать этот раздел, чтобы разобраться, где допущена ошибка в привязке карты
На мой взгляд существует некоторая несогласованность-неточность в определениях понятий «датум» и «система координат»; оцените, например, [6]. В одном месте пишут «датум (система координат)», подразумевая, вроде бы, что это одно и то же, а в какой-нибудь программе отдельно выбирается датум и отдельно — система координат, что наводит на мысль, что это все-таки разные вещи. Хочу попробовать здесь точно разобраться, чем датум, например, отличается от системы координат.
Как все, наверное, знают еще со школы, Земля шарообразная только в виде глобуса, а на самом деле имеет сложную форму, напоминающую приплюснутый шар, да и то неточно. Говоря о том, какую форму имеет Земля, мы обычно говорим о геоиде.
Из [6]: Геоид — фигура сложной формы, образованная поверхностью уровня вод Мирового океана, продолженной под материками. Эта поверхность во всех точках перпендикулярна направлению силы тяжести, но не обязательно направлена к центру Земли! Это связано с тем, что плотность Земли распределена неравномерно. Чтобы как-то работать с таким сложным сплюснутым телом, принято его представлять в виде эллипсоида вращения (я не слышал о каких-либо системах координат, работающих с другими телами, но, наверняка, такие есть среди тех, что используются для Очень Точных Измерений, — например, в каких-нибудь военных системах). Эллипсоид вращения — это тело, получаемое при вращении эллипса вокруг одной из его осей; в случае нашей Земли — вокруг малой оси, потому что Земля сплюснута с полюсов, причем вроде бы с северного больше, чем с южного.
Но какие выбрать параметры эллипсоида, ведь Земля, увы, точно не представляется ни одним из них? Выберешь один эллипсоид, он будет хорошо описывать одну часть Земли, зато плохо другую. Тут существует два разных подхода, называемые геоцентрическим и топоцентрическим. Грубо говоря, первый подход построен по принципу «пусть всем понемножку хреново», а второй — «пусть нам наименее хреново, а что вокруг, нас не интересует». Более конкретно: В геоцентрической системе размеры эллипсоида, ориентация и положение его центра выбираются так, что: объем эллипсоида предполагается равным объему геоида; большая полуось эллипсоида лежит в плоскости экватора геоида; малая полуось направлена по оси вращения Земли; среднеквадратичное отклонение поверхности эллипсоида от поверхности геоида минимально по всей территории земного шара. Топоцентрическая (национальная) система координат появляется так: берется некоторый эллипсоид и располагается таким образом, чтобы для некоторой заданной территории среднеквадратичное отклонение поверхности эллипсоида от поверхности геоида было минимальным. При этом остальная часть мира не интересует; отклонения на другой стороне Земли может быть сколь угодно велико.
То же самое, но с веселыми картинками, объясняющими суть дела, можно найти в [7].
Короче, как любезно разъяснил Константин Галичский, у эллипсоида, представляющего Землю, есть полюса, экватор и произвольно выбираемый начальный меридиан, от которого отсчитывается долгота. Поскольку геодезические работы в каждой стране по историческим причинам проводились независимо друг от друга, то результаты измерений геодезистов разных стран в точности не стыкуются друг с другом: положение начального меридиана, да и даже экватора, принятое разными государствами, отличается друг от друга порой в сотни метров.
Дальше выбранный эллипсоид надо как-то совместить с Землей, то есть задать не только его параметры, типа большой и малой полуосей, но и его положение относительно центра масс Земли и как он ориентирован относительно оси вращения Земли — короче говоря, «закрепить» эллипсоид с Землей. Это часто называется «расположение и ориентация эллипсоида относительно ссылочного каркаса (структуры) местности». За более полными объяснениями того же направляю вас к [7].
Различные используемые эллипсоиды: WGS72, Красовского (1940), GRS80, SGS85, Бесселя. Параметры их, если интересно, можно найти в [6].
После того как эллипсоид выбран и как-то «закреплен» с Землей, необходимо выбрать формат координат, определяющих точку на поверхности этого зафиксированного эллипсоида, ведь эту точку можно задать многими способами — в каком виде представлять координаты, откуда отсчитывать, и так далее.
Итак, что же мы получаем? «Эллипсоид» + «Фиксация эллипсоида с Землей» + «Обозначение и Отсчет Координат» = «Полное описание координат». Что в этой схеме назвать «Датум», а что «Система координат»?
Насколько я разобрался, более или менее правильно считать следующим образом: «Эллипсоид» + «Фиксация эллипсоида с Землей» = «Датум», а «Обозначение и Отсчет Координат» = «Система координат». Некоего общего термина, описывающего то, что мы назвали «Полное описание координат» я не нашел. Дело тут все в том, что большинство датумов чаще всего используются с конкретными системами координат. Например, система координат 1942 года (Russian SK-42) чаще всего используется именно с датумом «Пулково-1942», основанном на эллипсоиде Красовского, а датум WGS-84, основанный на эллипсоиде GRS80 (и на его последующей модифкации), чаще всего используется со всем известной системой координат Широта-Долгота. Но в общем и целом, для полной информации о некоторой точке, нужно иметь не только цифры, ее описывающие (например, (53.0,55.0)), и не только систему координат, говорящую о том, что это за цифры и откуда они отсчитываются (например, Latitude/Longitude (deg)), но и датум, говорящий о том, какой эллипсоид как использован (например, WGS-84).
Заметим, что мы пока еще ничего не сказали о проекциях. И в самом деле, можно говорить о разных координатах точек на земле, ВООБЩЕ не говоря о том, какая имеется в виду проекция. Только когда появляется плоская карта, тогда появляется и проекция, как отображение реальных координат точек на земле (в соответствующем датуме) на единицы плоскости, — сантиметры там или дюймы, в зависимости от страны изготовления бумаги. Если мы хотим точки отображать на плоскости, то после того, как выбран и зафиксирован эллипсоид, необходимо выбрать проекцию, которой этот эллипсоид будет развернут в плоскость. Насколько я знаю, тут большинство систем координат неоригинальны и пользуются поперечно-цилиндрической проекцией Гаусса (еще, например, бывают всякие конические, цилиндрические, азимутальные проекции, вроде бы). Этот цилиндр для проекции надо как-то совместить с эллипсоидом — например, эллипсоид там не должен стоять «криво» — одним словом, нужно не только задать сам эллипсоид, но и то, какой стороной он, грубо говоря, будет повернут к какой стороне цилиндра.
В том случае, когда идет работа с конкретной бумажной (или оцифрованной бумажной) картой, в нашу формулу добавляется еще и выбор конкретной проекции. Довольно часто она совмещается с выбором системы координат (видимо это от того, что любая система координат большую часть времени используется с соверщенно определенной проекцией, точно так же, как и с совершенно определенным датумом), а иногда и не совмещается.
В результате более общая формула для координат при работе с бумажной картой выглядит следующим образом: «Эллипсоид» + «Фиксация эллипсоида с Землей» + «Проекция» + «Обозначение и Отсчет Координат» = «Полное описание координат на карте», где «Эллипсоид» + «Фиксация эллипсоида с Землей» можно назвать «Датум карты», а «Проекция» + «Обозначение и Отсчет Координат» можно назвать «Система координат карты». Вообще дело не в том, конечно, как называть правильно, а как неправильно, — дело в том, чтобы понимать, чего от нас хочет разработчик очередной программы с очередным своим пониманием терминов.
Например, в программе OziExplorer, при привязке карты, предлагается выбрать Датум — Datum («Эллипсоид» + «Фиксация эллипсоида с Землей» в нашей терминологии) и Проекция Карты — Map Projection («Проекция» в нашей терминологии), а вот систему координат там выбирать отдельно не позволяют, считая что разом выбирается и проекция и система координат (вполне возможное допущение-упрощение), и предлагается вводить координаты на выбор только или в виде Широта-Долгота (Degrees and Mins), или в виде пользовательских координат (User Grid, UTM Coordinates, …) в зависимости от выбранной проекции.
3.2.2 Прямоугольные координаты на советских картах (Система координат 42 года, обычно с датумом Пулково-1942)
Прямоугольные координаты (плоские) — линейные величины: абсцисса Х и ордината Y, определяющие положение точек на плоскости (на карте) относительно двух взаимно перпендикулярных осей Х и Y (рис. 4). Абсцисса Х и ордината Y точки А — расстояния от начала координат до оснований перпендикуляров, опущенных из точки А на соответствующие оси, с указанием знака.
Рисунок 4. |
В топографии и геодезии, а также на топографических картах ориентирование производится по северу со счетом углов по ходу часовой стрелки, поэтому для сохранения знаков тригонометрических функций положение осей координат, принятое в математике, повернуто на 90°.
Прямоугольные координаты на топографических картах СССР применяются по координатным зонам. Координатные зоны — части земной поверхности, ограниченные меридианами с долготой, кратной 6°. Первая зона ограничена меридианами 0° и 6°, вторая — 6° и 12°, третья — 12° и 18° и в общем виде: зона i ограничена меридианами (i-1)*6° и i*6°, с центральным меридианом i*6°-3°
Счет зон идет от Гринвичского меридиана с запада на восток. Территория СССР располагается в 29 зонах: от 4-й до 32-й включительно. Протяженность каждой зоны с севера на юг порядка 20000 км. Ширина зоны на экваторе около 670 км, на широте 40°— 510 км, т широте 50°—430 км, на широте 60°—340 км.
Рис. 5. Система прямоугольных координат на топографических картах: а—одной зоны; б—части зоны |
Все топографические карты в пределах данной зоны имеют общую систему прямоугольных координат. Началом координат в каждой зоне служит точка пересечения среднего (осевого) меридиана зоны с экватором (рис. 5), средний меридиан зоны соответствует оси абсцисс, а экватор — оси ординат. При таком расположении координатных осей абсциссы точек, расположенных южнее экватора, и ординаты точек, расположенных западнее среднего меридиана, будут иметь отрицательные значения. Для удобства пользования координатами на топографических картах принят условный счет ординат, исключающий отрицательные значения ординат. Это достигнуто тем, что отсчет ординат идет не от нуля, а от величины 500 км, Т. е. начало координат в каждой зоне как бы перенесено на 500 км влево вдоль оси Y. Кроме того, для однозначного определения положение точки по прямоугольным координатам на земном шаре к значению координаты Y слева приписывается номер зоны (однозначное или двузначное число).
Зависимость между условными координатами и их действительными значениями выражается формулами:
X’ = Х, Y’ = Y — 500 000,
где X’ и Y’ — действительные значения; X, Y — условные значения.
Например, если точка имеет координаты
Х = 5 650 450: Y = 3 620 840,
то это значит, что точка расположена в третьей зоне на удалении 120 км 840 м от среднего меридиана зоны (620840—500000) и к северу от экватора на удалении 5650 км 450 м.
Полные координаты — прямоугольные координаты, записанные (названные) полностью, без каких-либо сокращений. В примере, приведенном выше, даны полные координаты объекта:
Х = 5 650 450; Y = 3620 840.
Сокращенные координаты применяются для ускорения целеуказания по топографической карте, в этом случае указываются только десятки и единицы километров и метры. Например, сокращенные координаты данного объекта будут:
Х = 50 450; Y = 20 840.
Сокращенные координаты нельзя применять при целеуказании на стыке координатных зон и если район действий [ух, как все сурово-то!] охватывает пространство протяженностью более 100 км по широте или долготе.
Внимание! По не вполне пока понятным для меня причинам, в GPS при использовании системы координат Пулково-1942 координаты отображаются в другом порядке, то есть сначала пишется координата, соответствующая долготе, задающая положение относительно центрального меридиана зоны, — а второй пишется координата, соответствующая широте, задающая расстояние от экватора. Поэтому далее, имея в виду систему Пулково-1942, мы будем располагать координаты именно в таком порядке.
3.2.3 Координатные сетки на картах
Координатная (километровая) сетка — сетка квадратов на топографических картах, образованная горизонтальными и вертикальными линиями, проведенными параллельно осям прямоугольных координат через определенные интервалы (табл. 3). Эти линии называются километровыми. Координатная сетка предназначается для определения координат объектов и нанесения на карту объектов по их координатам, для целеуказания, ориентирования карты, измерения дирекционных углов и для приближенного определения расстояний и площадей.
Масштабы карт | Размеры сторон квадратов | Площади квадратов, км^2 | |
на карте, см | на местности, км | ||
1:25 000 | 4 | 1 | 1 |
1:50 000 | 2 | 1 | 1 |
1:100 000 | 2 | 2 | 4 |
1:200 000 | 2 | 4 | 16 |
Таблица 3. |
На карте масштаба 1:500 000 координатная сетка полностью не показывается; наносятся только выходы километровых линий по сторонам рамки (через 2 см). При необходимости по этим выходам координатная сетка может быть прочерчена на карте.
Километровые линии на картах подписываются у их зарамочных выходов и у нескольких пересечений внутри листа. Крайние на листе карты километровые линии подписываются полностью, остальные—сокращенно, двумя цифрами (т. е. указываются только десятки и единицы километров). Подписи у горизонтальных линий соответствуют расстояниям от оси ординат (экватора) в километрах. Например, подпись 6082 в правом верхнем углу показывает, что данная линия отстоит от экватора на удалении 6082 км.
Подписи вертикальных линий обозначают номер зоны (одна или две первых цифры) и расстояние в километрах (всегда три цифры) от начала координат, условно перенесенного к западу от среднего меридиана на 500 км. Например, подпись 4308 в левом нижнем углу означает: 4 — номер зоны, 308 — расстояние от условного начала координат в километрах.
Дополнительная координатная (километровая) сетка может быть нанесена на топографических картах масштаба 1:25 000, 1:50000, 1:100000 и 1:200000 по выходам километровых линий в смежной западной или восточной зоне. Выходы километровых линий в виде черточек с соответствующими подписями даются на картах, расположенных на протяжении 2° к востоку и западу от граничных меридианов зоны.
3.2.4 Определение номенклатуры карты по координатной сетке
В туристской практике иногда приходится пользоваться кусочками карт с неизвестной номенклатурой. В ряде случаев номенклатуру карты можно определить по координатной сетке. Вспомним, что номенклатура листа карты состоит из буквы ряда и номера колонны. Номер колонны (в статье [2], откуда взят этот абзац речь идет о номере зоны, что, по-моему, неверно — номер зоны имеет отношение к координатам, а не к номенклатуре) можно вычислить по горизонтальной координате. Горизонтальная координата состоит из восьми или семи цифр. Последние шесть цифр образуют координату Y — расстояние от осевого меридиана в метрах + 500 км. Седьмая справа цифра или седьмая и восьмая цифры справа позволяют получить номер зоны, а чтобы получить номер колонны нужно учесть, что колонны нумеруются начиная с меридиана 180° (=30*6°) с запада на восток, поэтому к номеру зоны прибавляют 30. Например для листа Р-36 номер зоны равен 6, а для листа Р-45 номер зоны равен 15. В рассмотренных случаях координата Y имеет вид 6256, а X — 15567. Буквенную часть номенклатуры можно получить из простых математических рассуждений. Радиус земного шара составляет 6371 км, отсюда на 4° зоны приходится pi/2*R/90*4 км, что составит 445 км. Теперь остается координату X поделить на 445. Целая часть частного даст номер предыдущей полосы, а наличие остатка укажет на то, что искомая точка расположена в очередной полосе. Приведем соответствие
1, A, широта 0°-4° | 2, B, широта 4°-8° | 3, C, широта 8°-12° | 4, D, широта 12°-16° |
5, E, широта 16°-20° | 6, F, широта 20°-24° | 7, G, широта 24°-28° | 8, H, широта 28°-32° |
9, I, широта 32°-36° | 10, J, широта 36°-40° | 11, K, широта 40°-44° | 12, L, широта 44°-48° |
13, M, широта 48°-52° | 14, N, широта 52°-56° | 15, O, широта 56°-60° | 16, P, широта 60°-64° |
17, Q, широта 64°-68° | 18, R, широта 68°-72° | 19, S, широта 72°-76° | 20, T, широта 76°-80° |
21, U, широта 80°-84° | 22, V, широта 84°-88° | ||
Таблица 3. |
3.2.5 Полярные координаты на картах (Координатная система Широта-Долгота, обычно с датумом WGS-84)
Это всем известные из школьного курса широта и долгота некоторой точки на поверхности земли. Измеряются в градусах, минутах и секундах; широта отсчитывается от экватора и принимает значения от 0 до 90, с приписыванием буквы N или S, уточняющей, о каком, северном или южном, соответственно, полушарии идет речь; долгота отсчитывается от нулевого меридиана, Гринвича, для нашего, восточного полушария возрастание долготы идет с запада на восток от 0 до 180 с приписыванием буквы E, а для западного полушария возрастание долготы идет от Гринвича же, но с востока на запад, от 0 до 180, с приписыванием буквы W. Порядок координат именно такой, сначала широта, потом долгота.
4. Векторизация растровой карты
Под векторизацией карты мы понимаем построение на основе некоторой растровой карты соответствующей ей векторной карты, одним из возможных способов. Растровая карта — некий файл-картинка, содержащий (чаще всего) отсканированную бумажную карту в форматах JPG, GIF, TIFF, BMP и т.д. Под векторной картой понимаем набор векторных объектов (точек, отрезков прямых, ломаных линий, замкнутых полигонов) с сопутствующей им описательной информацией, в одном из векторных форматов хранения SHP, MP, и т.д.
Как правило, процесс векторизации подразумевает, (или лучше сказать «имеет целью»), что получаемые координаты векторных объектов являются их реальными координатами на местности в некоторой системе координат, для наших условий это Pulkovo-1942 или WGS-84.
Раз основной целью данной статьи является сбор опыта туристического community в области векторизации карт с помощью Easy Trace, то все действия, описанные далее, относятся именно к данной программе и ее инструментам. Впрочем, в других программах все может быть аналогично или не сильно отличаться.
Основательная часть описания процесса векторизации карт с помощью Easy Trace взята из русскоязычного руководства пользователя для Easy Trace 7.5, которое настоятельно рекомендуется к прочтению.
4.1 Подготовка растра
Перед тем, как начинать работу с растром, надо его заиметь. Если исходная карта в бумажном виде, то значит отсканировать. Если в векторном виде, то попробовать провести предварительные мухлипуляции. Хороший растр, который будет легко и приятно векторизовывать, обладает следующими свойствами: растр четкий, все объекты как можно четче отделены друг от друга, горизонтали не сливаются даже в местах их скопления (как я люблю места скопления горизонталей! особенно те, где горизонтали от ужаса начинают пересекаться); растр не очень многоцветный, объекты одного типа состоят из точек близких цветов, в идеале одного и того же цвета, и не имеют шумовой примеси других цветов; объекты разных типов надежно разнесены по разным углам цветовой палитры. Это нужно, грубо говоря, для того, чтобы в идеале выбрав один какой-то цвет и отключив остальные, мы получили бы только объекты одного типа, например, реки.
К сожалению, реальная ситуация далека от идеальной. Однако не стоит по крайней мере усложнять жизнь остальным. Если вы сами сканируете бумажные карты, то наибольшим вашим вкладом в будущие поколения будет попробовать сразу после сканирования поколдовать в фотошопе и уменьшить цветность карты. Я не особо хорошо разбираюсь в фотошопе, поэтому использовал механизм выбора группы цветов (Select-ColorRange) а затем заливал выбранные этим инструментом точки одним каким-то цветом.
Мало того, что вы таким образом упростите работу тем, кто будет растр оцифровывать (может быть это будете и вы сами), вы сможете потом преобразовать отсканированный растр в indexed color с небольшим количеством цветов (256-128-64 или даже меньше) и сохранить в формате GIF, получив радикально меньшего размера файл, чем сохранив изначальный файл в JPG.
И ради бога, не сохраняйте отсканированную карту в JPG! Сколько уже хороших сканов было подпорчено таким образом, в погоде за размером при отсутствии времени! Если даже нет времени уменьшать количество цветов, сохраните исходный файл в TIFF с lzw-сжатием, оставив на будущее простор для маневра. Формат JGP безвозвратно портит часть информации на карте, он предназначен для хранения изображений с плавными градиентными переходами, а не таких, как топографическая карта.
Также постарайтесь, чтобы лист бумаги при сканировании лежал ровно, — даже маленький угол наклона, получившийся случайно при закрывании крышки сканера, может внести нежелательную погрешность, которую не всегда удастся до конца исправить.
Здесь и далее будем исходить из плохого варианта. Есть растр, уже пожатый в JPG неизвестно кем, и с ним нужно работать.
4.2 Тип карты
Карты, которые мы будем оцифровывать, могут быть разных типов, и мы, как векторизаторы можем оказаться в разных ситуациях в зависимости от имеющейся дополнительной информации о привязке данной конкретной карты.
Далее в качестве примеров мы будем рассматривать карты двух типов. В качестве карты первого типа возьмем двухкилометровую карту района вулкана Ключевская Сопка из продаваемого в Петропавловске буклетика. Эта карта намного хуже даже на вид, — на ней хотя и есть двухсантиметровая сетка (и на том спасибо, кое-где в атласах вообще рисуют сетку через 2.5см!), к координатам эта сетка не имеет никакого отношения, никаких подписей к сетке нет, и идет она даже на глаз криво. Чтобы привязать такую карту, нам понадобятся точки, для которых мы знаем координаты как на карте (вершины вулканов, например, или пересечения рек), так и на местности (кто-то в этих точках побывал и записал их координаты, показанные GPS). К счастью, такие точки у нас есть. В качестве карты второго типа возьмем карту кутукского урочища n-40-102.jpg с этого сайта. Это замечательная километровая карта, сразу содержащая всю необходимую информацию о привязке к местности, поэтому к ней нет никакой дополнительной информации.
Подробнее о привязке растров именно в Easy Trace будет сказано ниже, пока же стоит разъяснить, зачем это все нужно.
Векторизация состоит не просто в получении векторных объектов (точек, ломаных, многоугольников) в виде набора их координат и свойств. Мало просто получить векторные объекты, нужно чтобы их координаты имели смысл, то есть соответствовали их координатам на местности в некоторой системе координат. Проще и удобнее всего этого добиться можно тем, что перед векторизацией произвести привязку растра. Под привязкой растра мы понимаем установку соответствия между всеми пикселями растровой карты и реальной местностью. То есть карта будет привязаной, когда для любых пикселей, например тех, которые вы только что соединили прямой, программа-векторизатор сможет сразу вычислить их _реальные_ координаты на местности, и с этими координатами сохранить. Выполнить это в такой программе как Easy Trace можно несколькими способами, но об этом уже ниже. Пока важно то, что сами углы обрабатываемой карты, как и все остальные пиксели, имеют некоторые координаты на местности.
4.3 Создание нового проекта в Easy Trace
Выберем в меню Файл — Новый Проект. Система предложит выбрать один из вариантов создания проекта: 1. Создать проект на основе растрового файла; 2. … используя для его привязки TAB или WORLD файл; 3. Использовать в качестве прототипа существующий проект. Оставим все как есть невыбранным, то есть откажемся от всех этих вариантов и нажмем Next, попав сразу в окно свойств проекта.
Здесь требуется указать масштаб карты (1:200000 для первой нашей карты и 1:100000 для второй), единицами измерения оставим как есть метры, DPI виртуального растра оставим как есть (не совсем понимаю, на что это влияет), и направление координат оставим так, как уговорились отображать в системе координат Пулково-1942 — X слева направо, Y снизу вверх.
Сложнее с координатами левого нижнего угла и правого верхнего. Эти координаты требуется определить еще ДО привязки какого-либо растра, то есть вообще до добавления растра как такового. Эти координаты не обязательно задавать точно — это просто то место на виртуальной карте всей земли, в которое будет «смотреть» окно программы.
4.4 Привязка карты в Ozi Explorer и определение координат
Для плохой карты ключевской сопки:
Первый вариант, который мне здесь пришел в голову — это привязать карту сначала в OziExplorer. Открываем Ozi, выбираем File — Load and Calibrate Map Image, загружаем растровое изображение карты, открывается панель привязки карты. Выберем из имеющихся точек некий набор, который, во-первых, более или менее равномерно распределен по всей карте (или по той части карты, которую желательно привязать особенно точно), а во-вторых, достаточно надежен. Для каждой точки, найдя, где она находится на карте (например, слияние ручьев у п.Ключи, или вершина вулкана Ключевская Сопка), пропишем к выбранным относительным, пиксельным координатам, настоящие, реальные координаты, замеренные на местности. Это можно сделать вручную, предварительно «подсмотрев» координаты в wpt файле, а можно загрузить файл с точками в Ozi и выбрать нужную точку из списка, с помощью кнопки «Wp»:
После того, как ввели точки, можно сохранить карту, загрузить на нее точки, и убедиться, что она привязана достаточно точно; и теперь двигая мышкой по карте мы видим, какие реальные координаты Ozi показывает для этих точек. Левый нижний угол можно выбрать таким: (564000, 6179000). Верхний правый угол можно выбрать, например, (620000, 6246000), причем, как видим, Ozi оказывает координату X без номера зоны (с номером зоны это было бы (27620000, 6246000), потому что номер зоны для камчатки (карты N-57) равен 57-30=27).
После того, как карта привязана в OziExplorer, ее стоит сохранить на будущее. Файл привязки map, который создаст Ozi, нам еще пригодится.
С хорошей картой все проще :). Для хорошей карты кутукского урочища, с которой мы дальше будем работать:
Смотрим в нижний левый угол карты.
Подписи к сетке дают исчерпывающую информацию в системе Пулково-1942. Координата X предкрайней вертикальной линии есть 10468000 (что мы можем расшифровать как 468км от линии левее центра 10й зоны на 500км), а координата Y предкрайней горизонтальной линии есть 5876 (что означает 5876 км к северу от экватора).
Несмотря на то, что непосредственно сейчас нам привязанная карта в Ozi Explorer не нужна, лучше все-таки это сделать, как и в случае с плохой картой. Файл привязки map всегда пригодится, особенно на этапе после векторизации.
Итак, открываем Ozi Explorer, выбираем File — Close Map (почему-то это нужно сделать, хотя мы карту не открывали). Затем выбираем File — Load and Calibrate Map. Выбираем файл растра. Сбоку от загрузившегося растра открылась панель привязки карты. Переходим на закладку Point1. Идем в один угол карты и ставим там точку в самое крайнее пересечение линий сетки, которое НЕ ЯВЛЯЕТСЯ границей карты — граница карты не обязательно имеет круглые координаты ни в Пулково ни в WGS, поэтому лучше работать с сеткой.
Смотрим на подписи к сетке и справа в панели прописываем координаты, не забыв отбросить двузначный (в нашем случае) номер зоны и вписав его в соответствующее поле:
Аналогичным образом ставим вторую, третью и четвертую точки по остальным углам карты. Нажимаем кнопку Save и сохраняем файл привязки карты map. После этого хочется убедиться, что мы все сделали правильно. Идем в левый верхний угол и смотрим, какие координаты имеет теперь самая левая верхняя точка карты, для которой на границе написаны и координаты в градусах:
Мы явно сделали что-то не то, где-то ошиблись. Но где? Огромный сдвиг по координате X наводит на мысль, что мы вписали не ту зону. Может быть, под зоной здесь подразумевается не зона, а номер листа, то есть надо прибавить к этому числу 30? (бредовая мысль, но почему бы и нет?). Выбираем меню File — Check Calibration, у всех точек привязки прописываем номер зоны не 10, а 40. Сохраняем карту под тем же именем и снова идем смотреть координаты в левом верхнем углу карты в градусах:
На первый взгляд мы сделали теперь все более или менее правильно. Но попробуем, если есть, загрузить какой-нибудь трек с реальной местности. У меня такой трек есть. Наложу его и посмотрю, что получается:
Вот тебе раз! Какой странный глюк! По координате X вроде бы карта привязалась хорошо, а вот по координате Y наблюдается смещение трека и дороги, по которой реально шли люди, на целых километра два! Значит все-таки где-то мы неправильно сделали. Ничего не остается, как опять заходить в калибровку карты: File — Check Calibration.
Опа! Слона-то мы и не заметили! На самой первой странице панели привязки карты есть выбор Map Projection, то бишь проекции карты, которая задает как круглая поверхность земли будет преобразована в плоскость. По умолчанию там стоит Latitude/Longitude, которая, как известно, задает такое преобразование, в котором параллели и меридианы переводятся в перпендикулярные друг другу линии. Это не то, что нам нужно.
Там же в списке есть UTM (Universal Transverse Mercator). Если залезть в теорию (например, в подсказку Ozi) и посмотреть параметры этого преобразования, то есть как в нем кривая земля преобразуется в плоскость, то мы узнаем, что «UTM это даже не проекция, а система координат, основанная на частном случае проекции Transverse Mercator. Долгота отсчитывается от 0 градусов, центральный меридиан — это центр одной из 60 UTM-зон шириной в 6 градусов, опоясывающих Землю; фактор масштабирования установлен в 0.9996 (вот оно!!), смещение на восток задано в 500000, северное смещение в северном полушарии установлено в 0. Это опять-таки не то что нам нужно.
И наконец, там в списке есть простая проекция Transverse Mercator, называемая так же Gauss Conformal Cylindrical, или поперечно-цилиндрическая проекция Гаусса. Пулково-1942 как раз является частным случаем такой проекции, но другим частным случаем, нежели UTM. Выберем именно Transverse Mercator. Ozi сразу спросит параметры этой проекции, потому что Transverse Mercator — это всего-лишь наименование типа проекции, а конкретная проекция задается параметрами:
Scale Factor установим в 1 вместо того безобразия, которое там осталось от UTM, False Easting установим в 500000, False Northing в 0, потом вспомним, что для нашей карты, находящейся в 10 зоне, центральный меридиан есть 10*6-3 = 57 градусов восточной (E) долготы. Почему-то у меня Ozi не сразу согласился принять цифру 57 градусов, возможно потому что я забыл приписать 0 минут. Со второго раза карта совпала с треком:
Вы еще не забыли, для чего мы все это делали? Мы собирались привязать карту, чтобы посмотреть координаты углов :). Но хорошо привязанная карта нам еще пригодится. Итак, отступив некоторое количество километров (здесь точность не важна) от края карты, положим левый нижний угол карты как (10464000,5872000). Аналогичным образом, посмотрев в правый верхний угол, получим его координаты как (10502000, 5914000).
Собираем эту информацию в форму и нажимаем Next
Далее программа спросит, хотим ли мы привязать растр прямо сейчас. Скажем пока, что привязывать растр будем позже.
Программа откроет большое темное окно с белым пунктиром выделенной его частью. Итак, проект готов, и дальше мы будем к нему привязывать растры.
4.5 Привязка растра
Чтобы добавить растр к проекту, необходимо выбрать пункт меню Проект — Добавить растр. Программа откроет очередной мастер, который на самом первом шаге спросит какой файл растра нужно выбрать и к какому проекту привязать:
На этом же шаге необходимо выбрать метод, которым растр будет привязан к рабочему окну. Как видим, на выбор нам предлагают целых четыре разных метода, из которых мы разберем здесь целых два, последние.
Для плохой карты ключевской сопки нам придется воспользоваться последним методом — по произвольному набору опорных точек. На втором шаге нас спросят, совпадает ли масштаб растра с масштабом проекта, мы ответим что совпадает. Координаты опорных точек на следующем шаге можно будет или загрузить из файла, или сгенерировать на основе регулярной сетки, или ввести вручную — мы будем вводить вручную.
Здесь как раз удобно воспользоваться привязанной картой в Ozi, которую держать рядом под рукой (или под мышкой?), переключаясь из Ozi в Easy Trace и обратно. Смотрим одну из точек в Ozi (можно смотреть как раз точки привязки, а можно любой другой набор), записываем ее координаты в Пулково-1942, переходим в Easy Trace, находим там на карте ту же самую точку, тыкаем в нее. Easy Trace пытается сам предугадать координаты этой точки, но так как она у него первая, то получается у него это с трудом. Берем вторую точку в Ozi, записываем ее координаты в Пулково (для этого удобно в Ozi ставить на это место ручной waypoint с помощью кнопки Position and Set waypoint on map на панели кнопок), переходим обратно в Easy Trace, ставим эту точку там, вводя координаты опять, потому что Easy Trace пока ошибается.
Как правило уже на третьей точке Easy Trace определяет сам координаты с точностью до пары километров, так что координаты можно не вводить, а поправлять. И чем дальше, чем меньше поправлять приходится. Три заданные точки определяют общее аффинное преобразование, которое EasyTrace собирается применить к растру, чтобы эти три точки абсолютно совпали со своими соответствиями на реальной карте. Поэтому пока мы ввели только три точки, погрешность их преобразования равна нулю — зато погрешность преобразования любых других точек на карте может быть пока большой. Поэтому мы продолжим добавлять точки. С четвертой точкой, которую я предложил Easy Trace, программа ошиблась в предсказании ее координаты всего за 20 метров, и показала, с какой точностью будут преобразованы координаты всех 4 точек, учитывая, что все три они равноценны, а аффинное преобразование задается только тремя из них. В моем случае эта ошибка не превышала 8 метров, но я продолжил кидать на карту контрольные точки, пока не надоело.
Для хорошей карты кутуков все немного проще, зато намного точнее. С картой, на которой задана хорошая регулярная сетка с подписями мы можем воспользоваться предпоследним методом — коррекция по регулярной сетке опорных точек. На втором шаге нас опять спросят, совпадает ли масштаб растра с масштабом проекта, мы опять ответим что совпадает. В диалоге на следующем шаге необходимо задать левый нижний угол планшета и правый верхний. Под этими углами нужно понимать координаты углов значащей карты, а так как мы немного отступили от углов при задании координат левого нижнего и правого верхнего углов карты, то можно сюда ввести именно эти координаты, а можно и скорректировать их и задать координаты значащих углов карты более точно. В качестве начала сетки обычно выступает самый левый нижний ее угол, то есть в нашем случае эти координаты совпадают с координатами левого нижнего угла планшета. Шаг сетки определит, сколько тиков вам придется поставить. Самым точным вариантом будет написать в эти поля реальное значение шага сетки на карте, однако некоторым будет лень потом ставить все точки сетки, поэтому можно задать значение кратное шагу сетки. Наша километровая карта имеет шаг сетки 2км, а мы люди ленивые, поэтому зададим шаг сетки 4000м. Прикинем на получившемся рисунке количество тиков, которые предстоит проставить — да, такое количество еще можно осилить:
Нажимаем Next и переходим к окну расстановки тиков. Для начала стоит, как и рекомендуют, используя клавишу шифт, подправить (перетащить) на планшете положение растра, чтобы программа могла корректно перепрыгивать на нужные тики при выборе конкретных точек на карте. В чем тут принцип легко убедиться при первой же возможности, объяснять приходится дольше.
Хотя опорные точки можно устанавливать в любом порядке, начинать удобнее с точки, векторные координаты которой легко определить, например, с самой левой нижней точки сетки — с которой у нас начинается отсчет, а второй точкой, наоборот, указать правую верхнюю точку сетки. При указании первых двух опорных точек, программа запрашивает их векторные координаты, что позволяет ей скорректировать положение и истинный масштаб растра — эти координаты как раз удобнее давать у крайних точек сетки, находящихся у подписей к сетке:
Для задания очередной опорной точки нужно просто указать ее положение на растре. Одну и ту же точку можно указывать многократно, уточняя ее положение на растре. В левой части страницы расположено preview, на котором отображаются все опорные точки. Те из них, положения которых на растре уже заданы, обведены рамкой. Активная опорная точка, т.е. точка, в окрестностях которой на растре находится курсор мыши, подчеркивается миганием. Preview также удобно использовать для навигации по растру: укажите в окрестность образа узла сетки на preview, и программа автоматически переместит в центр экрана приблизительное положение опорной точки. После того как все опорные точки расставлены, становится доступной кнопка «Correct».
При нажатии на эту кнопку программа начинает преобразование растра. Как раз здесь исправятся все косяки, связанные с нелинейным искажениями растра из-за криво положенного, например, листа карты при сканировании. Далее растр можно будет обрезать по краевым тикам, и потом он автоматически сохранится под новым именем, как исправленный растр.
В конце концов мы получим рабочее поле проекта, но уже не пустое, а с добавленным растром, привязанным и готовым к дальнейшей векторизации.
4.6 Создание слоев
Векторные объекты, которые мы сейчас будем создавать, имеют разную природу и должны храниться и отображаться по-разному в зависимости от своего типа — река это, например, или горизонталь, или дорога. В терминах ГИС (гео-информационных систем) про эту ситуацию говорят, что объекты принадлежат разным слоям.
Преждем чем начинать трассировать объекты, создадим слои, в которые эти объекты будут помещаться. Нажмем Ctrl+L, или выберем пункт меню Проект — Слои проекта. В открывшемся окне есть два списка слоев — растровые слои и векторные. И того и того по одному пока. Растровые слои пока не трогаем, работаем с векторными. Правой кнопкой на свободное пространство и в выпадающем меню выбираем «Добавить векторный слой», и вводим его имя. Пусть это будет, например, слой с водными объектами, и назовем мы его «water». Слева от названия присутствуют три кнопочки, обозначающие соответственно видим слой или невидим, заморожен или доступен для редактирования, и заливаются ли полигоны текущего слоя или нет. Справа от названия в следующей колонке необходимо задать то, как объекты данного слоя будут отображаться на карте. Раз у нас в этом слое водные объекты, то двойным щелчком зайдем в диалог выбора внешнего вида линий и поменяем цвет на синий. На GPS это не повлияет, это просто чтобы нам было удобнее работать.
Добавим еще один слой, назовем его «roads» и выкрасим в коричневый цвет. После этого удалим первый слой с именем «0», который был создан по умолчанию. После этого решим, например, что сначала будем векторизовывать водные объекты, поэтому заморозим все остальные слои, кроме слоя «water». Всегда замораживайте все остальные слои, кроме того, на котором непосредственно работаете, иначе можно по ошибке надобавлять рек в слой дорог, например.
4.7 Создание объектов
4.7.1 Работа с цветным растром
Одним из способов оцифровки карты является прямая оцифровка цветного растра. Этот способ удобно использовать тогда, когда имеющийся растр содержит малое количество цветов — как правило это значит, что он был обработан ранее.
Для того, чтобы начать трассировать цветной растр необходимо задать наборы цветов. Каждый набор цветов задает цвета, которые трассировщиком будут распознаваться как один и тот же цвет. Выберем пункт меню Инструменты — Трассировка — Наборы цветов. Внизу появляется панель создания групп цветов.
Раз мы будем трассировать реки и прочие водоемы, то выбирать будем именно те цвета, которыми на карте обозначена вода. При первом тыке мышкой в любой из цветов, программа запросит название нового набора, — назовем его по цвету слоя, «water». При добавлении цветов удобно рассматривать карту в крупном масштабе, чтобы было видно отдельные пикселы. Поэтому здесь желательно сразу привыкнуть к двум горячим клавишам, которые и дальше очень часто будут использоваться. По нажатию на Tab программа входит и выходит из режима лупы, то если приближения-удаления от карты, причем приближение происходит по нажатию левой клавиши мыши, а удаление по правой. И клавиша Пробел, так же, как в фотошопе, переключает программу в режим перетаскивания карты: нажав и удерживая пробел, можно перетаскивать карту в любом направлении. Пиксели всех цветов, которые добавленны к тому моменту к текущей группе цветов, выделаются некоторым цветом.
После того, как слой водных объектов более или менее выделился, можно перейти непосредственно к трассировке. Как видим, в нашем случае попытка выделить слой водных объектов непосредственно с исходного цветного растра дала довольно посредственные результаты. Одной из причин такого может быть то, что этот растр побывал в формате JPG, выполняющем сглаживание оттенков при сжатии.
4.7.2 Выделение черно-белых растров и работа с ними
Другим возможным решением проблемы нечетких растров является предварительная обработка и выделение цветовых растров во внешних программах. Например, откроем наш растр в фотошопе. Разумеется, открывать надо не самый исходный растр, а тот, что Easy Trace создал при привязке его к проекту — как вы помните, растр был скорректирован, чтобы убрать возможные искажения при сканировании. В нашем случае это файл n-40-120_c.jpg, автоматически созданный при привязке растра.
Итак, наша задача — выделить слой с водой. Это означает каким-то образом выявить и выделить все точки, которые в растре означают воду. С помощью панели Info и инструмента Eyedropper Tool смотрим, какие RGB-значения имеет вода на растре — это значения с высокими G и B и низкой R. И начинаем мухлевать. Для начала берем и инвертируем растр нафиг.
Потом замечаем, что речки стали подозрительно красноватые (и не удивительно, ведь до инвертирования у них был низкий R). Возникает идея отключить какие-нибудь каналы. Отключаем G — опа! Реки отчетливо проявились своим розовым цветом. Правда, тем же цветом проявилось то, что изначально было черным — сетка и названия — но это не беда.
Раз такое дело, зеленый канал надо вообще удалить. Выбираю в окне Каналы Зеленый, нажимаю в окне растра Ctrl+A, выделяя все, затем Edit — Fill, выбираю черный цвет. Вся информация из зеленого канала удаляется. После этого у нас информация остается только в красном и синем каналах. Видно, что пока нам мешаются только горизонтали — все остальное имеет явно другой цвет. Посмотрим на гистограмму рисунка, открыв заодно инструмент Levels. На гистограмме видны два пика, правый из которых (самые яркие точки) соответствует как раз нужной нам информации, а левый соответствует нежелательной информации в горизонталях. Применяем этот инструмент так, чтобы отсечь ненужный горб:
После этого по уже описанной технологии удаляем канал B и любуемся на плоды своего труда:
Перевести результат в черно-белый растр теперь не составит труда. Как видим, таким образом мы выделили в отдельный слой ручьи и все черные объекты, такие как дороги и подписи. Разделить их в данном примере не удалось. Какой-то другой пусть обязательно приведет к нужному результату, когда останутся только одни ручьи, надо просто дольше колдовать и не бояться экспериментировать. И делиться найденными удачными ходами по цветовыделению с народом :).
Не удержался, попробовал реализовать еще одну идею, пришедшую в голову по результатам проведенного эксперимента. В чем проблема предыдущего растра? В том, что там мешается сетка, дороги и подписи — одним словом, то, что на исходной карте было темным. А почему бы тогда сразу на исходной карте не попробовать убрать сетку, дорогу и подписи? Берем инструмент Select — Color Range, и там выбираем Select: Shadows. Нажимаем OK и убеждаемся, что сетка и подписи довольно хорошо отделились. Что с ними сделать? Ну, например, залить тем цветом, что у нас успешно удалился, — например, зеленым цветом лесов: Edit — Fill, затем тыкаем в карте на любую зеленую точку (ее цвет выбирается в текущий цвет), а в диалоге выбираем Foreground Color. Нажимаем OK и убеждаемся, что сетка и подписи нам больше не мешаются. После этого повторяем весь процесс и приходим к такому растру:
Реки на нем видны чуть менее ярко, зато дороги и сетка и все подписи — не мешаются совсем. В общем, надеюсь, я навел вас на мысль о том, что лучше потратить некоторое время на эксперименты, но зато потом получить более качественный растр для векторизации? Перед сохранением этого растра стоит еще раз применить к нему инструмент Levels, чтобы выделить реки поярче, а зачем перевести сначала в режим GrayScale, а затем и в bitmap, попутно смотря, чтобы реки на этом растре в черно-белом виде остались, а всего остального попало поменьше.
4.7.3 Подключение дополнительных растров к проекту
После того, как путем манипуляций в фотошопе мы получили хороший монохромный растр, в котором явно выделяются нужные нам для некоторого слоя объекты, нужно этот растр опять подключить к проекту. Неужели опять придется мучаться с привязкой? К счастью, нет. Мы ведь в фотошопе меняли только цвета точек, но не меняли размер самого рисунка, поэтому добавление нового растра пройдет легко и просто.
Выбираем меню Проект — Добавить растр, в уже знакомом окне выбираем имя нового нашего файла и текущий проект, а в качестве метода привязки выбираем Без коррекции, и на следующем шаге — Использовать параметры ранее зарегистрированного растра. Вот и все, у нас в проекте появился новый растровый слой.
Easy Trace автоматически начинает «просвечивать» монохромным растром через цветной, выделяя точки этаким голубоватеньким цветом, но мы на всякий случай уточним ему, что нам нужно. Зайдем в окно параметров слоев и обратимся к растровым слоям. Заблокируем на всякий случай исходный цветной растровый слой. Заморозка не влияет на видимость слоя, но влияет на его участие в трассировке. И это именно то, что нам нужно: видеть мы хотим цветной растр, а трассировка должна идти по подготовленному нами ранее черно-белому.
4.7.4 Трассировка объектов
Вот наконец-то мы и добрались до самого главного — собственно до трассировки объектов карты, создания их векторного представления по растровому. В руководстве пользователя для ET7.5 этот процесс описан очень подробно; перенесу сюда наиболее важные аспекты.
Трассировкой мы называем процесс полуавтоматического или ручного прослеживания линии по ее изображению на растре. Трассировка является главным средством создания векторных примитивов при работе с пакетом Easy Trace. Easy Trace имеет семь инструментов трассировки. Это — основной трассировщик, предназначенный для прослеживания сплошных и пунктирных линий, а также трассировщики ортогональных, ломаных, точечных линий, замкнутых прямоугольных контуров, окружностей и инструмент оконтуривания заштрихованных областей. Кроме того, пакет снабжен средствами ввода точечных объектов — точек, блоков и текста. Процесс векторизации управляется набором параметров трассировки, которые можно объединять в стратегии трассировки.
4.7.5 Для тех, кто хочет побыстрее
Чем читать всякую документацию, где подробно разбирается процесс трассировки объектов, лучше начнем сразу сам процесс трассировки. Выберем в меню Инструмент — Трассировка — Криволинейная, убедимся, что выбран векторный слой «water», что видим, но заморожен растровый слой с цветной картой, и видим и разморожен слой с черно-белым растром рек.
Когда мы выбрали инструмент, курсор изменился, показывая, что готов к трассировке и тыкание в карту будет воспринимать именно с точки зрения трассировщика. Если мы хотим сдвинуть карту, то можно это сделать нажав и удерживая Пробел (курсор превратится в кулачок) и перетаскивая карту мыши. Если мы хотим приблизить-удалить карту, то можно нажать на Tab — курсор превратится в лупу, и левая клавиша мыши будет приближать, а правая удалять. Повторное нажание на Tab (или на Пробел) переведет программу обратно в режим трассировки, не прерывая текущую линию
Итак, найдем какую-нить точку с водой, например, для начала исток ручья, и нажмем в него левой клавишей мыши:
Как видим, Easy Trace начал трассировку линии автоматически, потом сбился с пути, прошел немного, и остановился в задумчивости, все ли он правильно начал делать. Необходимо удалить несколько последних точек, которые он поставил. Для этого нажимаю клавишу Z, которая удаляет последнюю поставленную точку, пока не останутся только те точки, которые он еще поставил правильно. Удаленные точки остались черными:
Указываю тыкаю мышкой в правильном продолжении линии, которое он не смог сам увидеть, и он продолжает автоматическую трассировку. Если вдруг он опять пойдет не так, и не захочет остановиться, я всегда смогу остановить его правой клавишей мыши, удалить несколько последних поставленных точек, и отправить в нужном направлении.
Когда трассировщик дойдет до конца линии, нужно нажать Esc и получившаяся линия будет занесена в список полученных векторных объектов, и получит цвет и толщину, заданную внизу в панели текущего инструмента для заданного слоя:
Если трассировщик совсем не знает, куда дальше идти и у него нет никаких вариантов, или он в какой-то области стал слишком много ошибаться, то имеет смысл перейти в ручной режим, нажав клавишу A. При этом буковка A на курсоре исчезнет, а в строке состояния будет сказано о том, что включен ручной режим. В ручном режиме пользователь задает точки линии самостоятельно:
После завершения линии опять Esc и линия будет сохранена. Если теперь нажать Ctrl+Z, то последний введенный объект будет удален, а вместо него на карте останется черный след, который исчезнет при перерисовке карты.
В случае, когда трассировщик имеет несколько отчетливых вариантов продолжения линии, он останавливается, меняет курсор на вопросительный (на рисунке, к сожалению, не отобразился) и предлагает выбрать один из вариантов. Трассировщик показывает тот вариант, который идет примерно в том направлении, где находится курсор мыши, поэтому подергав последним можно увидеть все предлагаемые трассировщиком варианты и подтвердить выбор одного нажатием левой клавиши мыши. Если не устраивает ни один вариант, то нужно нажать правую кнопку мыши и вручную выбрать нужное направление.
Таким образом, в основном работа идет с использованием левой и правой кнопки мыши, клавиш Esc, Tab, Z, A и Пробел. Далее процесс трассировки расписывается более подробно, на основе информации из руководства.
4.7.6 Режимы трассировки
Векторизатор Easy Trace работает в двух режимах трассировки — ручном и автоматическом. Указанные режимы доступны для всех линейных трассировщиков, инструмента оконтуривания заштрихованных областей, прямоугольных контуров и окружностей. Для ввода точечных объектов предусмотрен только ручной режим. В режиме трассировки курсор в рабочем окне имеет форму резиновой нити или креста, если линия еще не начата. В автоматическом режиме в строке состояния появляется надпись «Автоматический режим». Чтобы начать трассировку сплошной или пунктирной линии в автоматическом режиме, нужно указать левой кнопкой мыши точку затравки на хорошем участке, где для трассировщика не предвидится осложнений. Для начала трассировки точечной линии нужно последовательно указать две соседние точки, задав, таким образом, примерный шаг и направление. В ручном режиме в строке состояния проявляется надпись «Ручной режим оцифровки полилиний». Можно пройти сомнительное место, устанавливая точки нажатием левой кнопки мыши как на пустом месте, так и на занятых участках.
Для смены режимов трассировки используйте пиктограммы команд Автоматической и Ручной трассировки, присутствующих на панелях управления и в дополнительных меню инструментов трассировки. Дополнительные меню выпадают при нажатии правой клавиши мыши в любом месте рабочего окна программы. Альтернативным способом смены режима трассировки является использование назначаемой горячей клавиши (по умолчанию — А).
4.7.7 Управление трассировкой
Управление трассировкой может осуществляться с помощью команд дополнительного меню выбранного инструмента оцифровки, а также с помощью горячих клавиш. Для трассировки полилинии в ручном режиме нужно последовательно указывать желаемые положения ее вершин левой клавишей мыши. Щелчок правой клавиши вызывает дополнительное меню инструмента, два щелчка правой клавиши позволяют отвязаться от прокладываемой полилинии.
В полуавтоматическом режиме трассировки обычно бывает достаточно указать точку затравки в любом месте трассируемой полилинии. При этом рекомендуется использовать достаточно большое увеличение (2:1 и выше) и выбирать для точки затравки участок полилинии, на котором для трассировщика не предвидится осложнений.
В основу управления состоянием автоматической трассировкиположен следующий замечательный принцип: отсутствие действий пользователя есть подтверждение правильности принятых программой решений. Таким образом, вы можете следить за процессом трассировки и вмешиваться, только если что-то не так.
Левая кнопка мыши используется обычно для подтверждающих или инициирующих действий (OK), правая — для прерывания трассировки или отмены чего-нибудь (BREAK и CANCEL). При достижении границ видимой части экрана производится автоматический скроллинг в нужном направлении.
При обнаружении развилки трассировщик предлагает все возможные продолжения трассы, одно из которых считает наиболее вероятным. Если вам подходит предложенное трассировщиком продолжение — ничего неделайте, ждите, пока истечет установленное число миллисекунд (параметр Пауза при выборе продолжения на развилке). Если не подходит — есть два варианта действий:
— нажать левую кнопку, указывая нужное направление;
— нажать правую кнопку и сразу перейти в состояние диалога. Далее можете поменять режим трассировки на ручной и пройти сомнительный участок.
Автоматическое прослеживание трассы можно прервать в любой момент, нажав правую клавишу мыши. Два щелчка правой клавишей мыши позволяют прервать линию с выходом в диалог. Чтобы отказаться от диалогового окна дополнительного меню, нажмите кнопку в его верхнем правом углу. Повторный щелчок правой клавишей мыши является для программы сигналом продолжить трассировку в противоположную от точки затравки сторону. Наконец, еще раз дважды нажав правую клавишу мыши, Вы можете отвязаться от прокладываемой трассы.
Программа сама прерывает автоматическую трассировку, если не может найти продолжение после обрыва линии или разобраться в сложной ситуации. Трассировку оборванной линии можно продолжить, захватив правой клавишей мыши любую ее точку. При этом в строке управления установятся соответствующие слой, толщина и уровень. Текущей станет ближайшая к точке указания концевая вершина (т. е. первая или последняя) и можно либо продолжить линию, либо посегментно откатить ее. Для перехода к началу/концу полилинии удобно пользоваться горячей клавишей (по умолчанию — C).
4.7.8 В настройках параметров трассировки
Среди прочих параметров в настройках параметров трассировки пользователи устанавливают длительность задержки дальнейших событий при определенных обстоятельствах (в десятых долях секунды). Они дают возможность пользователю вмешиваться в процесс принятия решений. Общая схема действий при этом такова: пауза завершается при нажатии клавиши мыши или по истечении заданного промежутка времени (timeout). Завершение паузы по timeout (без вмешательства пользователя) подтверждает принятое программой решение. Нажатие правой клавиши отменяет его и переводит трассировку в состояние диалога. Действие левой кнопки мыши описано в каждом конкретном случае. Установка значения паузы в 0 означает, что Вы заранее соглашаетесь с принятым программой решением.
К настройкам параметров трассировки относится работа со стратегиями сортировки. Стратегии трассировки — это именованные наборы параметров трассировки. В строке управления в поле Стратегии трассировки находится выпадающий список, содержащий имена всех созданных Вами и/или унаследованных из проекта-прототипа стратегий. Несколько стандартных стратегий создается автоматически в каждом новом проекте. Стратегии трассировки создаются и настраиваются пользователем, и хранятся в проекте. Предусмотрено создание стратегий для всех трассировщиков. При выборе того или иного инструмента по умолчанию устанавливается та из его стратегий, которая применялась последний раз.
4.7.9 Основной инструмент трассировки
Основным рабочим инструментом трассировки (прослеживания) линий является полуавтоматический трассировщик сплошных и пунктирных линий. Для его выбора нужно указать маркером мыши на первую сверху пиктограмму панели режимов и инструментов.
Вы также можете выбрать данный инструмент, воспользовавшись командой Трассировка меню Инструменты.
Строка управления трассировщика содержит значения параметров, которые будут присвоены векторизованной линии. Указывается слой, куда будет помещена линия, Z-координата (высота) полилинии, толщина линии, а также текущая стратегия трассировки и имя текущего трассируемого растрового слоя. Кроме того, в строке управления присутствуют пиктограммы команд смены режимов трассировки (ручной/автоматический).
Все параметры векторного объекта могут быть заданы до его создания, либо изменены в режиме редактирования. При выборе инструмента автоматически устанавливаются те значения параметров строки управления, которые были заданы при его последнем применении. Управление трассировкой может осуществляться с помощью команд дополнительного меню (см. ниже), а также с помощью горячих клавиш.
Дополнительное меню инструмента оцифровки сплошных и пунктирных линий выпадает по нажатию правой клавиши мыши. Оно содержит следующие команды (слева направо):
перейти в режим редактирования
перейти в автоматический режим
перейти в ручной режим
перейти в режим отсечения
замкнуть полилинию
завершить и начать
скопировать часть другой линии
ввод координат
режим ввода атрибутивных данных
перейти в режим посегментного отката
Нажатие на кнопку в правом верхнем углу панели пиктограмм дополнительного меню или на клавишу ESC закрывает его без изменения текущего режима.
4.8 Обработка векторных объектов
4.9 Сохранение и экспорт объектов
Понятно, что вектирозация растра нужна не сама по себе, а для того, чтобы с созданными векторными объектами работать где-то еще. Easy Trace обладает богатыми возможностями по экспорту информации. Сначала немного текста из руководства.
Интерфейс может показаться чрезмерно обширным и усложненным, но это обусловлено стремлением разработчиков обеспечить как можно более полную конвертацию данных между форматами, которые подчас значительно различаются. Безусловно, абсолютно полная конвертация данных невозможна, поскольку разные ГИС\CAD приложения придерживаются значительно различающихся подходов к представлению данных.
В основном это относится не к геометрическим, а к атрибутивным свойствам данных, таким как тип линий, точечные символы и т.д. Для каждого конкретного формата описывается его подмножество, поддерживаемое Easy Trace. Easy Trace поддерживает обмен со следующими ГИС\CAD приложениями: ArcInfo (GEN), ArcView (SHP), CREDO (TOP), Intergraph (DGN), MapInfo (MIF), WinGIS (ASC). Со всеми поддерживаемыми системами возможен двусторонний обмен (как экспорт, так и импорт).
Кроме конвертации данных из проекта Easy Trace в выбранный формат, при экспорте могут быть выполнены и некоторые дополнительные операции:
— отсечение векторной информации по заданной прямоугольной рамке;
— тематическое ограничение экспортируемой информации, т.е. экспорт только заданных слоев;
— экспорт атрибутивной информации (сохраняемой в базе данных проекта) — для некоторых форматов;
— аффинное преобразование координат на основе набора контрольных точек;
— регистрация растровых слоев, т.е. экспорт информации, привязывающей растр к конечной системе координат;
— преобразование строковой информации в OEM- (DOS-) кодировку.
Итак, выбираем в меню Файл — Экспорт. На первом шаге выбирается формат файла и папка, в которую будут экспортированы результаты работы. В качестве такого формата выбираем SHP(ArcView), указываем папку и нажимаем Next. На следующей странице нас спрашивают, нужно ли конвертировать текстовые строки, которых у нас пока нет, некоторые параметры сохранения полилиний и полигонов, нужно ли проводить отсечение — от всего этого пока отказываемся и нажимаем Next. Далее нас спрашивают, какие слои мы хотим экспортировать — в нашем случае выбираем water и нажимаем Next. На следующей странице нас спросят про опции слоев и дадут поменять имя у получаемых файлов — от всего откажемся и нажмем Next.
На следующем шаге у нас будет возможность задать преобразование координат сохраняемых векторных объектов. Так как мы заранее позаботились о том, чтобы хорошенько привязать растр, никакого преобразования нам не надо. На последней странице пропустим все опции экспорта и опции экспорта блоков, согласимся с правилами именования файлов и нажмем Finish.
Соглашаемся со сводкой применяемых параметров и — ура! — экспорт завершается успешно, о чем лучше не читать в логе :). Больше половины дела сделано.
5. Подготовка и заливка векторных карт в GPS
Итак, мы выгрузили векторные объекты в SHP-файлы. Зачем? Их все равно пока нельзя залить в GPS. На самом деле, мы сейчас сделали большое дело, потому что вышли на так называемую Накатанная Цепочку Преобразований, понятие о которой вводится в известной задаче про последовательность действий при кипячении чайника на плите [4]. Если мы смогли привести объекты к типу SHP, мы всегда воспользуемся приведенной цепочкой и зальем их в GPS.
5.1 Загрузка объектов в GPSMapEdit и создание MP-карты
Итак, запускаем программу GPSMapEdit. Вместо того, чтобы сразу начинать экспортировать слои, мы откроем хороши привязанную растровую карту (помните мы убили кучу времени?). Итак, File — Open и выбираем наш map-файл. Проблема здесь может оказаться в том, что в нерегистрированной версии программы хоть и позволяется загружать растровые файлы, но на них накладывается ограничение, связанное с возможностями видеоадаптера и еще одно ограничение сверху, введенное уже самими разработчиками. У меня видеопамяти всего 16мб, и при загрузке карты Кутуков, программа выдала сообщение об ошибке, в котором утверждалось, что во-первых, программа незарегистрированная, а во вторых, размер растра составил 19 млн пикселов и это превысило возможности видеоадаптера. Как бы то ни было, я загрузил растр в фотошоп, выбрал там Image — Canvas Size и отхряпал от карты с одного бока километров 6. Уменьшил растр, одним словом. И тогда растр загрузился в GPSMapEdit и я увидел там свою растровую карту.
После этого загрузил с помощью File — Add имеющийся трек, чтобы еще раз убедиться, что карта растровая привязана как надо. После этого можно было бы начинать уже импорт векторных объектов, но мы сделаем еще одну важную вещь — настроим уровни карты. Для этого зайдем в File — Map Properties — Levels.
Для чего вообще нужны уровни? Дело в том, что результирующая карта, которая будет загружена в GPS, будет отображаться при очень разных масштабах. От самых крупных, когда вы будете отходить от палатки, пардон, в туалет, и захватите на всякий случай GPS, чтобы вернуться — до самых мелких, когда будете смотреть на район, подъезжая к нему на поезде. Очевидно, что на самом мелком масштабе совершенно не нужны все изгибы всех горизонталей, они только перегружают карту количеством объектов, которые все равно не видны или видны еле-еле. Для этого как раз и использую понятие уровня. Карта по сути представляется не одним слоем, а несколькими, по количеству уровней, — то есть, по сути, одновременно вместо одной карты закачивается сразу несколько! В каждый момент времени отображается только один уровень, в зависимости от текущего масштаба, и очевидно, что наполнение карты должно быть разным для разных уровней. В уровне, соответствующем самому мелкому масштабу, должны быть только самые крупные объекты, типа больших дорог, крупных рек и так далее. В уровнях, соответствующих более крупным масштабам должны уже появляться более мелкие объекты, и наконец в уровне, соответствующем самому крупному масштабу, должен содержаться максимум подробной информации.
Итак, мы смотрим на окно уровней, в котором ничего не присутствует. Нажмем кнопку Insert Before — и увидим, что вместо одного слоя проявились сразу два. Дело в том, что на любой карте последний слой должен быть пустым, то есть в нем не должно содержаться ни одного объекта. Поэтому нажмем еще раз кнопку Insert Before, чтобы получить второй слой, с которым можно будет работать. Итак, у нас есть Level0 и Level1, в которые можно добавлять объекты, и Level2, который должен остаться пустым. С помощью кнопки Change выставляем, например, следующие значения для слоев:
Что означает запись «5km — 8km»? Это означает, что при укрупнении масштаба карты при масштабе 8км при просмотре карты в GPS проявятся объекты слоя Level1. Но это отнюдь не значит, что при масштабе 5km эти объекты пропадут. Если ниже этого слоя ничего не будет (то есть если будут только Level0 и Level1), то все объекты будут видны от масштаба 8km до любого более крупного. Итак, при масштабе 8km появятся объекты Level1. А когда они исчезнут? А это определяется нижележащим слоем, то есть слоем Level0. Там задан масштаб, при котором перестанет отображаться предыдущий слой, а это 3km, и начнет отображаться слой Level0. Который уже в свою очередь, раз нет нижележащего, будет отображаться при всех более крупных масштабах.
Не выходя из окна настроек проекта, перейдем на страницу Header. Там обязательно надо будет выставить TypeSet в Garmin, но пока не загружены векторные объекты, этого сделать нельзя. Зато прямо сейчас нужно заполнить восьмициферный код карты ID. Он должен быть уникальным для всех карт, загруженных одновременно в один GPS, но в остальном он может быть любым. Вообще-то где-то есть правила, по которым можно родить ID для той конкретной местности, про которую мы сделали карту, но этих правил не обязательно придерживаться. Имя карты впишем любое. Обязательно выберем CodePage = 1251, потому что наш GPS поддерживает кирилические шрифты, а без этого они не будут нормально отображаться. После этого нажмем Apply и OK.
Вот теперь мы готовы импортировать векторные объекты. Выбираем в меню File — Import — ESRI Shape. Выбираем все shp-файлы, которые нужно добавить в карту. Раз мы экспортировали только один слой, полученный файл и выбираем.
Для каждого файла программа сначала запросит как отображать объекты данного файла в GPS (то ли это дороги, то ли ручьи, то ли еще что), затем предложит выбрать источник для подписей к объектам, затем запросит используемую систему координат. Благодаря тому, что мы приписали номер зоны к координате Х, мы можем смело выбирать «Russian SK-42» и соглашаться с тем, что центральный меридиан будет автоматически выбран по префиксу. Если бы мы работали с относительными координатами (не приписывая номер зоны), то сейчас пришлось бы прописывать этот номер. Еще необходимо выбрать датум, в котором заданы используемые координаты (см. 3.2.1) Выбираем первый Pulkovo-1942 (GOST…):
Дальше нас спросят, в какие слои импортировать объекты. Здесь довольно тонкий момент. Надо учитывать, что в каждый слой, который здесь будет выбран, заталкивается КОПИЯ всех объектов, что понятным образом увеличивает результирующий файл. Мы сейчас импортируем слой рек, поэтому их, возможно, имеет смысл затолкать в оба слоя, чтобы они были видны как на мелких масштабах, так и на крупных. Поэтому мы оставим выбранными оба значения Level0 и Level1. Если бы мы импортировали горизонтали, то имело бы смысл их загрузить только в Level0, чтобы они появлялись только на подробном слое в крупных масштабах. Нажимаем Finish и любуемся на результаты своего труда:
Видим, что карта привязана вполне удовлетворительно и векторные объекты вполне прилично ложатся на растровую карту. После этого растровую карту можно отключить с помощью View — Show Attachments, чтобы больше не мешалась. Векторные объекты получились очень угловатые, и, хотя этого не видно, они содержат кучу лишних точек. В следующий раз надо будет после векторизации слоя в Easy Trace, перед его экспортом, выполнить оптимизацию формы полилиний, при которой удалятся лишние точки и сгладится немного форма кривой. А пока не забудем опять зайти в свойства карты и поставить там теперь TypeSet равным Garmin. После этого выберем File — Save As и сохраним карту в так называемом Польском формате (расширение mp).
5.2 Экспорт карты в IMG и загрузка ее в GPS
Осталось всего ничего. Выберем File — Export — Garmin IMG / CGSMapper. Нас просят ввести имя будущего результата — img-файла. Если мы раньше еще не пользовались программой CGSMapper, то после нас попросят ввести путь к исполняемому файлу этой программы, после чего останется только нажать Run и наблюдать как карта преобразуется в img-файл, готовый к заливке в GPS.
После этого закрываем карту (File — Close) и на всякий случай проверим результат работы. Нажмем опять File — Open и выберем только что созданный img-файл. После этого нажмем File — Add и загрузим какие-нибудь треки с того района. Нормально накладываются друг на друга? Чудесно.
Полученный img-файл готов к заливке в GPS. Сама заливка производится с помощью программы SendMap. Сама программа имеет текстовый интерфейс и работает из командной строки, поэтому удобнее пользоваться графической программой-оболочкой к ней, которая называется img2gps. Запускаем эту программу. Нажимаем на большую кнопку «Load Folder» и выбираем тот img-файл, который хотим залить. При этом в списке оказываются все файлы из той директории.
Еще один момент здесь стоит упоминания. Дело в том, что при заливании карты в GPS стираются безвозвратно все карты, которые были загружены ранее. Именно поэтому удобно иметь некую директорию, в которой лежат все карты, которые в данный момент хочется иметь в GPS. Если нужно залить какую-то новую карту, то сложим ее в директорию Load Folder и зальем вместе со всеми остальными, если мы хотим, чтобы они остались в GPS с новой картой.
Итак, выбираем нужные карты, выбираем интерфейс доступа и скорость работы порта (в моем случае это USB, для которого скорость не задается — кстати, работа с USB не поддерживается старыми версиями программы SendMap, которые работают только с COM-портом. Вроде бы нужна версия 2.0 и выше), и нажимаем большую кнопку Upload to GPS.
Все, карта залита. Складываем рюкзак, добавив туда на всякий случай бумажную карту и обычный компас, и идем пить чай в оставшееся время до электрички.
9. Ссылки
[1] http://skitalets.ru/maps/2005/topogr_cart/index.htm — ссылка на статью на Скитальце — «Топографические карты, измерения и построения на них». Военная статья.
[2] http://skitalets.ru/maps/nomen/nom_kart.htm — ссылка на статью на Скитальце — «Номенклатура топографических карт». Александр Нестеров (Рига).
[3] http://www.southural.ru/experience/107.html — ссылка на статью «Векторизация и загрузка карт в GPS». Безруков Андрей.
[4] http://bspu.ab.ru/Department/WMiP/Metod_material/comb/dictonary/chainic.html — ссылка на статью про основные принципы алгоритмизации.
[5] http://www.southural.ru/experience/200.html — ссылка на статью «Конвертирование карт для загрузки в GPS» про преобразование векторных карт из экзотических форматов. Макеев Григорий.
[6] http://ne-grusti.narod.ru/Glossary/datums.html , http://ne-grusti.narod.ru/Glossary/ellipsoid-geoid.html — Немного информации по датумам. Григорий Морозов
[7] http://www.dataplus.ru/support/ProjUtility/Datum.htm — Геодезические датумы, по статье Яцека Гродецки в журнале Imaging notes
10. Текущие ссылки на используемые программы.
Что есть, то есть:
[1] Easy Trace 7.9 — 18,5мб — ссылки нет, ищите как хотите
[2] Easy Trace 7.5 руководство пользователя на русском языке — 2,2мб — ссылки пока нет
[4] OziExplorer — Официальный сайт с незарегистрированной версией 3.95.4 : www.oziexplorer.com, я пользовался версией 3.95.4i, которая кроме всего прочего поддерживает USB-интерфейс взаимодействия с GPS. Зарегистрированные версии лежат везде, гугл вам в помощь
[5] GPSMapEdit — Официальный сайт с незарегистрированной версией: www.geopainting.com/ru/index.html.
[6] SendMap20 и img2gps — homepage.ntworld.com/mdipol/img2gps
11. Благодарности
Статья является не результатом труда одного человека, а накопленным опытом многих людей, интересующихся теорией и практикой использования различных видов GPS, от природных до GPS фирмы Garmin. В частности, особую благодарность редакция выражает:
1. Леониду Смирнову (ikar.ufanet.ru) за обучение основам Easy Trace, разъяснение сущности Пулково-1942 и предоставление софта
2. Серверу skitalets.ru, потому что именно оттуда взяты теоретические аксепты
3. Всем разным людям, которые просили меня помочь научиться векторизовывать карты, потому что без них я бы не взялся за статью
4. Безрукову Андрею за статью [3], самый популярный ресурс на нашем сайте
5. Константину Галичскому за программу GPSMapEdit и помощь с датутами и прочими координатами
Внимание! Исходя из печального опыта статьи http://www.southural.ru/experience/107.html, комментарии к данной статье будут периодически очищаться от малозначащих постов типа «где найти кряк к Easy Trace». Приветствуются комментарии и обсуждения по сути проблемы векторизации карт.
Последнее изменение: 05.12.2005
Теперь рассмотрим все основные этапы работы на одном конкретном примере. Как в любой пошаговой инструкции, невозможно показать многие возможности столь интересной программы. Однако сухого перечисления последовательностей выбираемых инструментов и команд для такой работы явно недостаточно, поэтому придётся иногда останавливаться и объяснять некоторые моменты. Я надеюсь, что поняв общие принципы работы, Вы пойдёте дальше и постепенно познаете все возможности программы. А их, я Вас уверяю, очень много.
Начнём со сканирования. Так как у нас есть ограничения на размер изображения, то для сканирования мы воспользуемся любым редактором растровых изображений. Например популярнейшим 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. Проект содержит всю информацию о состоянии нашей работы. В нём, в виде слоёв, будут храниться все данные. Помимо векторных слоёв, назначение которых мы рассматривали выше, проект содержит и исходные растровые данные. Они хранятся тоже в виде слоёв, только растровых. В процессе работы, количество растровых слоёв будет возрастать. Как правило, их количество равно количеству векторных слоёв. С чем это связано, мы рассмотрим ниже.
Как создавать новый проект? Всего существует пять вариантов. Мы рассмотрим всего одну схему работы. На мой взгляд эта схема наиболее проста и доступна каждому. Для её реализации нам не потребуются специальные программы других разработчиков. Создание проекта сопровождается очень удобным мастером. В нашем случае наиболее подходящим вариантом, будет создание проекта на основе растрового файла. Для этого вызываем мастер создания нового проекта — Файл/Новый проект… После чего появляется следующее окно:
Отмечаем галочкой пункт Создать проект на основе растрового файла. Именно такой способ показался мне наиболее практичным с точки зрения его дальнейшей привязки. Нажимаем Далее.
А на втором шаге немного остановимся. Для удобства дальнейшего ввода координат для точек привязки, будет лучше использовать показанную на рисунке ориентацию осей координат. Масштаб можно поставить исходя из масштаба, указанного в бумажной карте. Единицы измерения — пикселы. Разрешение изображения нужно поставить в соответствии с теми параметрами, которые Вы устанавливали при сканировании. Координаты углов остаются как есть. Они соответствуют размеру нашей растровой карты. На этом процесс создания проекта заканчивается. После этого должно появиться окно проекта. Сохраним наш проект, присвоив ему любое имя — Файл/Сохранить как…
В окне проекта сразу будет виден наш растр. Не спешите начинать трассировку. Осталось ещё совсем немного. Давайте посмотрим, что у нас имеется на данный момент. Для этого вызовем окно настройки слоёв — Проект/Слои проекта… Появится окно, показанное ниже.
Здесь мы всегда сможем увидеть все имеющиеся слои. Как видно, они разбиты на две группы — растровые и векторные. По умолчанию мы имеем по одному слою в каждой группе. Но, помимо информационной, основная функция этого окна, это управление слоями. Именно тут мы можем добавлять, удалять, переименовывать, настраивать, скрывать слои и т.д. Не буду описывать все возможные варианты. Главное знайте, если нужно получить информацию или изменить настройки для любого слоя, то Вам сюда.
Кратко опишу возможные настройки в этом окне. Текущие настройки можно наблюдать и изменять с помощью специального поля с символами, расположенными в слева каждого слоя в окнах растровых и векторных слоёв.
Для растровых слоёв можно задать видимость или невидимость слоя — галочка поставлена или отсутствует, активность или неактивность данного растра при трассировке — карандашик или снежинка и задать имя слоя. Так же здесь указан текущий цвет для бинаризованных слоёв. Его можно менять, исходя из собственных предпочтений.
Для векторных слоёв настроек немного больше. Функции и обозначения видимости и активности для этих слоёв остались такими же, как и для растровых слоёв. Далее мы видим маленький ромбик на фоне квадрата. Это установка типа объекта. В программе Easy Trace возможно создание объектов следующих типов — линии и полигоны. Соответственно, для первого типа ромбик будет пустым, а для полигонов — закрашенным. Далее мы можем задать имя слоя. А вот далее идёт поле, определяющее способ отображения объектов обоего типа в окне проекта. Вариантов достаточно, чтобы достаточно комфортно работать со всеми данными. Как Вы понимаете, для линий возможно изменять только цвет, а вот для полигонов настроек больше. Помимо выбора цвета, можно применять несколько вариантов заливки.
Мы сейчас рассмотрели окно настройки слоёв проекта. Но есть ещё один вариант оперативного управления видимостью и активностью слоёв. Это, появившееся рядом с панелями инструментов, небольшое окно с указанием текущего слоя. Если нажать на раскрывающееся поле, то можно видеть все существующие в данное время слои. Но, в отличие от окна настройки слоёв, здесь мы можем только включать или выключать видимость слоя. Это делается простым снятием или постановкой галочки в нужном слое. Или делать нужный слой активным. Для этого нужно просто выбрать пункт нужного слоя.
Теперь посмотрите на доступные инструменты. Они совершенно разные для двух групп слоёв. Для векторных слоёв набор выглядит так:
А для растровых совершенно иначе:
Я специально не привожу полный перечень всех инструментов. Большинство из них достаточно привычны, а остальные снабжены достаточно хорошими подсказками.
Но давайте вернёмся к нашей работе. Мы сейчас должны работать с растровым слоем. Он у нас пока один. Выберем его, как было описано выше.
Чтобы не загромождать лекцию описанием каждого инструмента, давайте приступим к практической работе. Определим цель. Допустим целью будет получение векторных лесов, озёр и изобат, изображённых на нашем растре. Сначала займёмся изобатами. Почему именно ими? Например потому, что работа по их ручной векторизации достаточно однообразна и неинтересна. Очень не многие наносят на свои карты линии изобат. Вместе с тем, изобаты несут достаточно важную информацию о высотах и рельефе. Поэтому давайте сначала отработаем технологию векторизации именно на них. Перейдём на растровый слой. Свидетельством этого будут инструменты для обработки растра — см.выше. Допустим, наше изображение выглядит так:
Здесь можно заметить, что в процессе обработки, количество цветов уменьшено до минимально возможного количества. На самом деле их здесь всего 12. Теперь давайте посмотрим поближе, как выглядят наши изобаты.
Здесь гораздо яснее видно ограниченное количество цветов. Теперь нам следует подготовить этот растр к трассировке. Залогом успешной трассировки всегда является максимально возможная чистка растра от лишних данных. В нашем случае лишним является всё, что не является изобатами. Соответственно, нам надо удалить ненужные и оставить все цвета, которые относятся к изобатам. Это коричневые оттенки. Для этого существует специальный инструмент. Он называется Бинаризация. Вызвать его можно или через меню — Редактирование/Бинаризация… или выбрав в поле инструментов соответствующую иконку. В панели инструментов для растров она вторая слева.
Суть этого инструмента очень проста — с его помощью можно выделять нужные цвета. Увеличим изображение так, чтобы были видны отдельные пикселы. Примерно так, как показано на рисунке выше. И последовательно выделяем только те цвета, из которых состоит наша линия изобат. Те цвета, которые были выделены меняют цвет. Последовательное выделение нескольких оттенков коричнево должно дать в результате примерно следующее:
Теперь нам надо перенести выделенные цвета, как растровую подложку в наш проект. Но перед этим необходимо выполнить последнюю операцию для растра. Это команда Бинаризовать. Вызывается она в окне настроек инструмента. После этого мы увидим, что всё, что было выделено, осталось в виде белых областей на чёрном фоне, а прочее исчезло. После этого нам надо избавится от небольшой грязи на нашем изображении. Она выражается в наличии одно- двухпиксельных точек хаотично разбросанных по полю. Для их удаления есть особый инструмент. Он вызывается командой Редактирование/Чистка растра…. Посмотрите окно настройки инструмента и Вы сами поймёте принцип его действия. Однако в нашем случае лучше применить другой способ редактирования полученного растра. Не подумайте, что сейчас начнётся сложнейший процесс, состоящий из десятка операций. Вернее операций будет много, но они будут выполняться в автоматическом режиме. Выберем инструмент — Редактирование/Фильтрация растра…. В появившемся окне выберем пункт Thin isolines и начнём обработку. Если в результате получится не совсем то, что хотелось, то всегда можно отменить это действие. Сохраним полученный файл — Файл/Сохранить как….
На самом деле отдельные точки обычно не мешают трассировке. Но в дальнейшем эти инструменты могут очень пригодиться. Важно то, что Вы теперь о них знаете.
Теперь нажмём правой кнопкой мыши на полученном изображении и выберем пункт Редактирование/Привязать к проекту…. После этого возникнет окно с вариантами привязки растра. Но в нашем случае ничего привязывать пока не надо. Поэтому выберем Без коррекции (в заданную точку проекта). В следующем окне укажем, что данный растр будет использовать параметры нашего основного растра. После этого мы снова попадём в окно проекта.
Однако где же наш новый слой? Его почти не видно. Оказывается он отображается вместе с нашим первым слоем и не очень хорошо заметен на его фоне. Сейчас всё поправим. Раскроем меню текущего слоя и снимем видимость нашего первого слоя. После закрытия этого окна, останется видимым только новый слой с изобатами. Правда можно и не убирать основной растр. Однако необходимо исключить его из процесса векторизации. Для этого вызовем окно настройки слоёв и нужном растре вместо карандашика поставим снежинку. Это заморозит данный растр.
Только теперь и наступает черёд автоматики. И хотя в выборе вариантов трассировки есть полностью автоматическая трассировка — Утилиты/Автоматическая трассировка/Трассировка линий… или Оконтуривание…, но лично я предпочитаю работать в полуавтоматическом режиме. Это позволяет контролировать и управлять всем процессом. Именно такой способ и будет показан далее.
Выбираем нужный инструмент трассировки. Чаще всего, как и в этом случае, будет необходим инструмент Кривая. Он стоит самым крайним слева на меню инструментов для векторных слоёв (см. меню инструментов для векторных слоёв). Выбрав его, нужно указать курсором на произвольное место нужной изобаты. От этого места сразу пойдёт линия. Это уже наш вектор. В местах, вызывающих затруднения для распознавания направления движения, прокладка будет останавливаться и ждать Ваших подсказок. Помогайте ей, переводя курсор к месту продолжения кривой. Если вдруг что-то пошло не так, можно остановить процесс автоматической трассировки, щелкнув правой кнопкой мыши. После этого все действия прекращаются и появляется дополнительное меню инструмента.
В этом окне выберите режим Откат. Он позволяет, щёлкая левой кнопкой мыши, последовательно убирать ненужные участки кривой. Уберите всё необходимое и, выбрав в этом же меню режим Автоматическая трассировка, продолжите создание кривой. Если линия замкнутая, как например в центральной части моего примера, то трассировщик сам замкнёт её. Если линия не закончена, то дойдя до её конца, надо просто два раза нажать правой кнопкой мыши и процесс трассировки продолжится уже с другой стороны. Окончить создание можно также дважды щёлкнув правой кнопкой мыши или нажав кнопку Esc. Здесь не описаны все операции, доступные в показанном меню работы с инструментом, но все подсказки на русском языке и достаточно понятны. В результате должно получиться примерно следующее:
Обратите внимание, что я задал стандартный цвет для линий изобат — коричневый. Это делается в перед началом трассировки в окне менеджера слоёв проекта. Можно изменить этот цвет и позже.
Теперь давайте переведём в векторную форму участок леса. Не буду подробно описывать все подготовительные операции. Просто перечислю их:
в поле проекта создаём новый векторный слой с названием Лес,
переходим на основную растровую картинку, она в цвете,
выбираем инструмент Бинаризация и отмечаем все зелёные оттенки, соответствующие обозначению лесистых участков. Должно получиться примерно так:
Вы уже догадываетесь что посте бинаризации у нас не будет одной полностью залитой области. Так и есть:
Вот теперь можно вспомнить и про чистку растра. Если мы сейчас начнём трассировку, то ничего хорошего из этого не получится. Вот типичный пример загрязнённого участка:
Поэтому выбираем инструмент Редактирование/Чистка растра… и, настроив этот инструмент, пробуем очистить наш рисунок от ненужной грязи. После выбора значений для данного инструмента равными 4 для удаления и 6 для заполнения и применения данного инструмента 3-4 раза, у меня получилось следующее:
Не идеально, но уже гораздо лучше. Теперь надо сгладить внешние границы этого участка. Как это сделать?
Давайте вспомним принципы работы с изображениями в Adobe Photoshop. Вспомнили? Если нет, ничего страшного. Я сам узнал об этом приёме от разработчиков программы.
Переведём наше изображение в полноцветный режим — Редактирование/Цветовой режим/TrueColor (24bits). Выберем инструмент Редактирование/Размытие… В настройках для данного случая я выставил значения 95% для коэффициента и 4 для радиуса. Как будет видно, этим мы можем немного размыть и как бы сгладить очертания нашего леса. У меня получилось так:
Теперь с помощью инструмента Редактирование/Улучшение контраста… попробуем сделать так, чтобы получилось опять двухтоновое изображение. Для этого я установил значение левого верхнего движка линии настройки равным 85, а правого — 100. После чего опять перевёл изображение в монохромный режим. Вот что получилось в результате:
Как видно, после этой операции исчезли и оставшиеся ненужные участки. Общий вид теперь такой:
Этого вполне достаточно для нашей задачи. Но если вдруг некоторые ненужные участки черного или белого цвета остались, то значит пришла пора выполнить небольшую ручную работу. Для этого выберем инструмент Редактирование/Редактирование растра. В нижней части окна программы появится окно с настройками этого инструмента. Что бы понять как работает этот инструмент попробуйте использовать его в окне изображения с нажатой левой, а затем правой кнопкой мыши. Посмотрите, что при этом меняется. Всё достаточно просто. Не забывайте, что нам нужны только границы области, поэтому закрашивать все внутренние участки нет никакого смысла. Однако, если в нашем проекте есть вложенные участки — озёра, болота и т.п., то рекомендую Вам сразу сделать контуры и для них. Это нам очень пригодиться в недалёком будущем. В результате получаем изображение с которым уже можно работать дальше. сохраняем его под каким-либо именем и присоединяем к проекту. Векторный слой с названием Лес у нас уже есть.
Теперь опять пришла пора трассировки. Выбор инструмента прежний — Кривая. Но если мы сейчас начнём векторизацию, то у нас ничего не получится. Почему? Да потому что в случае с изобатами нам для векторизации нужна была середина растровой линии, а в данном случае нам нужно обводить край растрового участка. Поэтому сменим стратегию растеризации — Сервис/Параметры трассировки…. Выставим там режим Трассировать по контуру. После этого можно приступать к процессу. Внимательно смотрите на каком из векторных слоёв Вы сейчас находитесь. все объекты будут располагаться только на текущем слое.
Обязательно надо сказать про настройку стратегий растеризации. Обязательно используйте настройки параметров трассировки. Это может сохранить много времени и нервов. Посмотрите на параметры и попытайтесь найти наилучшие значения для необходимых параметров. Я, например, обычно немного уменьшаю допустимый разрыв контура и увеличиваю угол поиска продолжения. После трассировки и оптимизации формы векторных линий — Утилиты/Автоматическая трассировка/Оптимизация формы линий…, результат не заставил себя ждать:
Далее…
Вот так уже достаточно интересно. Правда оптимизацию векторных линий я сделал больше для наглядности. Обычно этой функцией нужно пользоваться умеренно. Потому что все эти векторные данные в последствии ещё будут подвергаться генерализации в программе GPSMapEdit. Напомню, что у нас всего два векторных слоя. Давайте подумаем сколько слоёв нам ещё может понадобится. На исходном изображении видно, что у нас пока не сделаны озёра, ручьи, автомобильные дороги, железные дороги, населённые пункты и болота. Всего шесть слоёв. Но на самом деле их будет немного больше. Объясню почему. Дело в том, что на данном этапе мы работаем только с линиями и полигонами. Посмотрите на рисунок с растровым слоем перед трассировкой леса. Вы видите, что на нём есть не залитые участки, которые остались от озёр, болот и т.п. Этих участков сейчас нет на нашем слое с лесом. Это сделано специально. Если мы обведём этот участок, то в последствии, при экспорте этого слоя, полигон обозначающий Лес и другой полигон, обозначающий отсутствие леса, будут одного цвета и внутренний просто не будет виден. Это осложнит работу по вырезанию одного из другого. Поэтому внутренний участок лучше поместить на отдельный слой и при экспорте задать для него другой цвет. Таких нюансов довольно много, поэтому внимательно посмотрите Ваш участок карты и сразу продумайте свои действия.
Ещё немного про дальнейшие действия. С лесом мы почти разобрались. Теперь наступила очередь озёр. Можно немного упростить процесс трассировки озёр. Ведь у нас уже есть слой на котором есть очертания нескольких озёр. Это тот же самый растровый слой, который мы использовали для трассировки лесистых участков. Можно воспользуемся им. Но перед этим, конечно, создадим векторный слой Озёра и сделаем пока невидимыми ненужные векторные и растровые слои. В остальном процесс подготовки растра и трассировка не отличается от описанной выше. Через некоторое время у меня получилось следующее:
Здесь я специально дал вид только очертаний объектов для того, чтобы они не перекрывали друг друга. Как Вы можете видеть здесь уже присутствуют пять слоёв — изобаты, лес, озёра, реки и железная дорога. Кстати для железной дороги очень кстати пришлась функция оптимизации формы линии с чуть большими параметрами, чем обычно. Это позволило значительно сократить количество узлов и сгладить её очертания до исходных.
Ещё один момент. После векторизации таких ответственных объектов как например дороги, часто возникает необходимость в коррекции некоторых узлов на получившейся линии. Как например, для удаления лишних узлов на линии железной дороги в местах, где она пересекает реки. Там стоит символ моста и линия трассировки проходит через него, отклоняясь от основной линии. Для этого выберем инструмент для редактирования узлов — Редактирование/Редактор. Работа с этим инструментом достаточно проста. Сначала нужно выбрать объект. Выбранный объект становится активным и на нём теперь видны все узлы. Увеличим нужный участок. Если нам надо переместить узел, отмечаем его с помощью левой кнопки мыши и перетаскиваем на нужное место. Если узел требуется удалить, то просто щёлкаем на нём правой кнопкой мыши. Добавить узлы можно щёлкая в нужное место левой кнопкой мыши. Линии также можно объединять, разрывать, замыкать и пр. Это делается этим же инструментом, стоит только переключиться между режимом создания точек в режим захвата отрезков. Этот переключатель Вы найдёте в нижнем поле настройки инструментов. Рекомендую Вам почаще обращать внимание на это поле. Там можно найти очень интересные настройки практически для всех инструментов.
На этом и остановимся.
Перед началом привязки, хочу остановиться вот на чём — весь описанный выше процесс, ни в коем случае не является догмой. Все настройки и используемые инструменты выбирались, исходя из конкретной ситуации и подходят только для карт, подобных взятой для данного примера. И хоть я и постарался взять самую распространённую топологическую основу, но в каждом случае Вам придётся находить свои варианты использования настроек и инструментов. Это творческий процесс, не терпящий однообразия. Вполне может быть, что Вы найдёте ещё не один способ сделать всё ещё точнее и быстрее.
Теперь перед нами стоит одна из самых ответственных задач — перенести все эти данные в программу GPSMapEdit. Этим и займёмся. А как же привязка карты, спросите Вы. И будете абсолютно правы. Без привязки на данном этапе не обойтись.
Привязка карты в любой программе является одним из самых сложных моментов. Не является исключением и Easy Trace. И если ранее я специально указывал на существование различных подходов к процессу трассировки, то сейчас прошу строго следовать моим рекомендациям по процессу привязки. Для реализации качественной привязки нам, как и в любом другом случае, потребуются заранее известные точки, которые можно однозначно определить на карте и их точные координаты. И конечно наша растровая карта, как основа. Лучше всего иметь точки, самостоятельно сделанные с помощью навигаторов. Точнее этих данных нам вряд ли удастся что либо добыть. Да и нет такой необходимости в нашем случае. Лучше всего располагать точки привязки равномерно по всему полю карты. Наилучший результат обычно получается, если расположить четыре точки привязки по краям рисунка и одну поместить в центр. Это будет основа. Остальные имеющиеся точки можно ставить по всему полю. Они будут выравнивать небольшие искажения. Весь процесс привязки, описанный ниже, будет строится именно на базовой системе точек привязки, состоящей из пяти штук. Я понимаю, что это не всегда выполнимо в реальности, но, как Вы увидите далее, этот способ допускает коррекцию привязки по мере получения большего количества точных данных. С этим понятно. Приступим к практической работе.
Первым делом нам надо определить точное расположение точек привязки на нашем растре. Эти значения нам нужны в пикселах. Самым простым способом мне представляется использование всё того же Adobe Photoshop. Откроем в нём нашу карту и, с помощью вкладки Info, определим координаты наших точек привязки на растре. Не забудьте переключить единицы измерения на пикселы. По умолчанию там, кажется, дюймы или сантиметры.
Ориентирами для наших точек могут быть мосты, развилки, пересечения просек и т.п. В данном примере я взял:
Для первой точки привязки — место впадения ручья в озеро:
Для второй — впадение ручья в реку;
Третья и четвёртая — слияние двух рек;
И пятая точка — это выдающаяся острая заводь на озере.
Для удобства, я ниже привожу схему расположения точек. Сами точки расположены в центрах окружностей. Не забываем, что именно по этим точкам у меня уже должны быть точные геодезические координаты. Впрочем, эти данные можно взять и из карт к программе ГИС Русса. Загрузив их в программу GPSMapEdit, всегда можно посмотреть координаты нужной точки. Не забудьте установить параметры представления координат в Lat/Lon hdddºmm’ss,s.
В результате у нас есть координаты точек привязки в пикселах на нашей растровой карте и, соответствующие им, координаты на местности в датуме WGS84. Теперь нам потребуется перевести данные из геодезических координат, выраженных в градусах, в линейную систему координат, выраженную в метрах. Для этого можно воспользоваться любым калькулятором для перевода координат из градусов в метры. Вот один из них. Он позволяет рассчитать координаты с точностью до одного метра. В нашем случае этого вполне достаточно.
Статьи к прочтению:
- Последовательность действий по реанимации пк с помощью устройства тестирования post card pci
- Последовательность инструкций, составляющих функцию, часто называют телом функции.
Работа с програма EasyTrace
Похожие статьи:
-
Инструкция по работе со средой программирования
Среду разработкиVisual Studio 2008 Express можно загрузить с адреса: http://www.microsoft.com/visualstudio/en-us/products/2008-editions/express. Загрузив…
-
Предварительное знакомство с векторизатором easy trace.
Сразу скажу, что автоматизировать в данном случае не получится. Это для тех, кто думает, что можно загрузив растровое изображение карты, нажать кнопку…
1. Введение
1.1 Что будем делать, и вообще, нужно ли оно
N: Насколько я понял, эта программа предназначена для преобразования растровой карты в векторную в формате Гармин.
Не совсем так. Эта программа предназначена для оцифровки растровой карты. Это значит что с ее помощью можно преобразовать растровую карту в векторную, под которой понимается набор прямых, кривых, многоугольников, и так далее. Программа позволяет этот процесс производить как автоматически (с очень плохим результатом), так и вручную, полуавтоматически. Выгружается векторная карта в один из общих векторных форматов — но не в формат Гармин. Дальше потребуется еще цепочка из двух программ (GPSMapEdit и CGPSMapper) для получения из этого векторного формата карты в формате Гармин, которая с помощью последней программы SendMap будет заслана в GPS. Так этот процесс выглядит в общих чертах.
Пока еще не поздно, стоит определиться, а нужно ли вообще мучаться с векторизацией карт самому, — может стоит потратить время более продуктивно. Вполне возможно, нужные вам карты уже нарисовали до вас. Не очень подробные карты можно брать на http://freemaps.gisrussa.ru/, не знаю, видели ли вы уже этот ресурс. Лично я брал оттуда карту камчатки перед походом 2005 года — вполне удовлетворительное качество, примерно по детальности соответствует двухкилометровке. У меня была только одна километровка района Ключевской сопки, я ее за три дня оцифровал (и это были довольно насыщенные три дня), и решил что для остального мне сойдет карта с гис-русса — и действительно, вполне сошла. Для заливки карт с этого ресурса требуется опять таки цепочка из двух программ (GPSMapEdit и CGPSMapper) для получения из этого векторного формата карты в формате Гармин, и дальше SendMap для заливки в GPS — но об этом дальше.
2. Установка необходимого инструментария
Внимание! Помните, что по закону не допускается «осуществление без разрешения … действий, направленных на снятие ограничений использования произведений или объектов смежных прав»!
2.1 Установка Easy Trace [1]
Самый сложный момент. Здесь его описывать не буду, разбирайтесь сами. В конце концов, статья не про то
2.2 Установка Ozi Explorer [4]
Честно говоря, уже не помню все аспекты установки Ozi Explorer и «регистрации». Когда-то давно, помнится, устанавливалась более старая версия, ломалась-регистрированась, и потом поверх ставилась новая версия. Давно уже этим не занимался, если кто имеет что сказать, по этому поводу — поделитесь. Программа из серии «устанавливается один раз» — я теперь просто переписываю каталог с версией 3.95.4i в нужное место и начинаю работать.
2.3 Установка GPSMapEdit [5]
Незарегистрированная версия, имеющая ограничения по импорту из MIF (большую часть времени не нужно, потому как можно обойти другими путями) и по размеру загружаемого растра (обидно, но не смертельно, потому что растр нужен больше тем, кто собирается рисовать карту в этой программе, а мы собираемся использовать только как конвертер) лежит на официальном сайте. Скачивается, распаковывается, особой установки не требует, работает там, куда положили. Кряков кажется нет, видимо регистрируется через интернет — наши писали, видимо на совесть сделано :).
2.4 Установка SendMap20 и img2gps [6]
Обычно идут вместе, так же работают из любого каталога, особой установки не требуют. В случае работы с GPS через USB, требуют чтобы в системе были установлены драйверы для данного конкретного GPS.
3. Учите мат-часть
Для того, чтобы успешно оцифровывать карты и пользоваться ими, необходимо разбираться в некоторых теоретических аспектах картопользования. Жизнь показывает, что все возможные задачи заранее описать невозможно, и теоретическая часть понадобится именно тогда, когда придется отступить с нахоженной и описанной тропы.
В этом разделе приводится кратная выжимка из статей [1],[2], которые рекомендуются к прочтению всем, кто хочет разобраться в предмете.
3.1 Карты
3.1.1 Классификация и назначение топографических карт
Топографическая карта — уменьшенное, точное, подробное и наглядное изображение земной поверхности со всеми ее объектами, выполненное в определенной картографической проекции.
Классификация топографических карт. Советские топографические карты являются общегосударственными. Они издаются в масштабах, некоторые из которых указаны в Табл.1.
Масштаб карты (величина масштаба) | Наименование карты | Подпись масштаба карт на боевых документах | Примерные размеры листом карты на широте 54° , км | Площадь, покрываемая листом карты на широте 54° , км^2 |
1:100 000 (в 1 см 1 км) |
Стотысячная, или километровая | 100000 | 37х32 | 1200 |
1:200000 (в 1 см 2 км) |
Двухсоттысячная, или двухкилометровая | 200 000 | 74х65 | 5000 |
1:500 000 (в 1 см 5 км) |
Пятьсот тысячная, или пятикилометровая | 500 000 | 222х196 | 44000 |
Таблица 1 |
Примечание: Первое число размеров листа означает протяженность с севера на юг; этот размер является постоянным для любой широты; второе число — протяженность с востока на запад; этот размер с увеличением широты постепенно уменьшается.
3.1.2 Проекции топографических карт
Картографические проекции — математические способы изображения на плоскости поверхности земного шара при составлении карт.
Сферические поверхности не развертываются на плоскости без складок и разрывов и по этой причине на картах неизбежны искажения длин, углов, площадей. Лишь в некоторых проекциях сохраняется равенство углов, но из-за этого значительно искажаются длины и площади, или сохраняется равенство площадей, но значительно искажаются углы и длины.
Проекция карт масштаба 1:25000—1:500 000. Топографические карты СССР и многих иностранных государств создаются в поперечно-цилиндрической проекции Гаусса.
Проектирование земной поверхности на плоскость в проекции Гаусса производится по зонам, вытянутым от северного полюса до южного. Границами зон служат меридианы с долготой, кратной 6° (всего 60 зон). В пределах каждой зоны земная поверхность проектируется на плоскость путем преобразования географических координат точек земной поверхности в прямоугольные координаты на плоскости.
Длины линий сохраняются только вдоль осевого меридиана, в остальных местах они несколько преувеличены. Наибольшие относительные искажения длин имеют место на границах зон и в пределах СССР достигают 1/1000, относительные искажения площадей— 1/500. Искажения расстояний при графических измерениях на топографических картах не обнаруживаются; они учитываются только при выполнении специальных задач, связанных с использованием больших дальностей.
Углы в пределах небольшого участка не искажаются; очертания контуров на местности и карте практически подобны. Искажения любых направлений на листе карты масштаба 1:100000 не превышают 40″. Все листы карт любого масштаба в пределах одной зоны могут быть склеены в один блок без каких-либо складок и разрывов.
3.1.3 Оформление карт
Рамки листов карт. Топографические карты создаются на большие территории; издаются отдельными листами, ограниченными рамками. Сторонами внутренних рамок служат линии параллелей и меридианов. Они делятся на отрезки, равные в градусной мере одной минуте (1′) на картах масштаба 1:25000—1:200 000 и пяти минутам (5′) на картах масштаба 1:500000 и 1:1000 000. Эти деления через одно залиты черной краской или заштрихованы. Каждый минутный отрезок на картах масштаба 1: 25 000—1: 100000 делится точками на шесть частей по 10″ каждое, за исключением листов карты масштаба 1:100 000, расположенных в пределах широт 60—76°, на которых минутные отрезки по северной и южной сторонам рамки делятся на три части (по 20″), а расположенных севернее параллели 76° на две части (по 30″).
Зарамочное оформление топографических карт содержит справочные сведения о данном листе карты, сведения, дополняющие характеристику местности, и данные, облегчающие работу с картой.
Расположение элементов зарамочного оформления карт масштаба 1: 25 000, I: 50 000, I: 100 000, 1: 200 000 и 1: 500 000 показано на рис. 1.
Рисунок 1. |
Они означают:
1. Система координат.
2. Название республики и области, территория которых изображена на данном листе.
3. Наименование ведомства, подготовившего и издавшего карту.
4. Номенклатура листа и название наиболее значительного населенного пункта (для карт масштаба 1: 200 000 и 1: 500 000 — только название населенного пункта).
5. Номер и год издания (на картах масштаба 1:200 000 и 1:500 000 номенклатура, номер и год издания указываются ниже подписи «Гриф карты»).
6. Гриф карты.
7. Метод и год съемки или год составления и исходные материалы, по которым составлена карта; год подготовки к изданию и печати карты.
8. Исполнители.
9. Шкала заложений (только на картах масштаба 1:25 000, 1:50000 и 1:100000).
10. Численный масштаб.
11. Величина масштаба.
12. Линейный масштаб.
13. Высота сечения (на карте масштаба 1 : 500000 здесь же дается шкала ступеней высот).
14. Система высот (за исключением карты масштаба 1 : 500 000).
15. Схема взаимного расположения вертикальной линии координатной сетки, истинного и магнитного меридианов и величины склонения магнитной стрелки, сближения меридианов и поправки направления (за исключением карты масштаба 1:500000).
16. Данные о склонении магнитной стрелки, сближении меридианов и годовом склонении магнитной стрелки (эти сведения на карте масштаба 1 : 500 000 не даются).
3.1.4 Номенклатура карт
Разграфка карт — система деления карт на отдельные листы. Номенклатура карт — система нумерации и обозначения отдельных листов. Каждый лист ограничен рамкой. Сторонами рамок листов топографических карт служат параллели и меридианы (табл. 2).
Масштаб карты | Размеры листов карты в градусной мере | Типовая запись номенклатуры | |
по широте | по долготе | ||
1:1000 000 | 4° | 6° | N—37 |
1:500 000 | 2° | 3° | N—37—Б |
1:200 000 | 40′ | 1° | N—37—XVI |
1:100000 | 20′ | 30′ | N-37—56 |
1:50 000 | 10′ | 15′ | N—37—56—A |
1:25 000 | 5′ | 7’30» | N—37—56—A—6 |
Таблица 2. |
Рисунок 2. |
Рисунок 3. |
В основу номенклатуры топографических карт СССР положена карта масштаба 1 : 1 000 000.
Номенклатура карты масштаба 1 :1000 000 (рис 2). Вся поверхность Земли делится параллелями на ряды (через 4°), а меридианами—на колонны (через 6°); стороны образовавшихся трапеций служат границами листов карты масштаба 1 : 1000 000. Ряды обозначаются заглавными латинскими буквами от А до V, начиная от экватора к обоим полюсам, а колонны — арабскими цифрами, начиная от меридиана 180° с запада на восток. Номенклатура листа карты состоит из буквы ряда и номера колонны. Например, лист с г. Москва обозначается N—37
Лист карты масштаба 1 :500 000 является четвертой частью листа карты 1 : 1000 000 и обозначается номенклатурой листа миллионной карты с добавлением одной из заглавных букв А, Б, В, Г русского алфавита, обозначающих соответствующую четверть (рис. 3). Например, лист карты масштаба 1:500000 с г. Рязань имеет номенклатуру N—37—Б.
Лист карты масштаба 1:200000 образуется делением миллионного листа на 36 частей (рис. 3); номенклатура его состоит из обозначения листа карты масштаба 1 : 1000 000 с добавлением одной из римских цифр 1, II, III, IV, . . ., XXXVI. Например, лист с г. Рязань имеет номенклатуру N—37—XVI
Лист карты масштаба 1:100 000 получается делением листа миллионной карты на 144 части (рис. 4); номенклатура его состоит из обозначения листа карты 1:1000 000 с добавлением одного из чисел 1, 2, 3, 4, …, 143, 144. Например, лист стотысячной карты с г. Рязань будет N—37—56.
Лист карты масштаба 1:50 000 образуется делением листа карты масштаба 1:100000 на четыре части (рис. 5); его номенклатура состоит из номенклатуры стотысячной карты и одной из заглавных букв А, Б, В, Г русского алфавита. Например, N—37—56—А. Лист карты масштаба 1:25000 получается делением листа карты масштаба 1:50 000 на четыре части; номенклатура его образуется из номенклатуры пятидесятитысячной карты с добавлением одной из строчных букв а, б, в, г русского алфавита. Пример на рис. 5 N— 37— 56— А— б.
Листы карт, расположенные между широтами 60—76°, сдваиваются по долготе; например, лист карты масштаба 1 : 1000 000 по долготе будет иметь протяженность не 6, а 12°.
Сдвоенные листы миллионной карты обозначаются указанием ряда (буквой) и двух соответствующих колонн (нечетным и последующим четным числом); например, лист карты масштаба 1 : 1 000 000 на район г. Мурманска имеет номенклатуру R—35,36.
Сдвоенные листы карт других масштабов обозначаются аналогичным способом: к номенклатуре западного левого листа приписывается буква или номер восточного листа, например R—35—25,26. Листы карт, расположенные севернее параллели 76°, издаются счетверенными по долготе. Их обозначение производится таким же порядком, как и сдвоенных листов, только к номенклатуре западного листа приписываются номера последующих трех листов.
3.2 Координаты
3.2.1 Датумы и прочие системы координат
Итак, держитесь те, кто на бронепоезде, сейчас пойдет сложный раздел. Объясняю как умею, кто умеет лучше — милости просим в соавторы, а пока что есть — то есть. Лучше сразу договориться так: вы читаете этот раздел, пока получается, а если вдруг понимаете, что ничего не понимаете — тогда бросайте все нафиг и переходите к следующему разделу. Но вот когда у вас возникнет непонятная и необъяснимая проблема с привязкой карты, когда возникнет какое-нибудь странное смещение реальных GPS треков и точек относительно привязанной карты — вот тогда вам придется вернуться, и все-таки прочитать этот раздел, чтобы разобраться, где допущена ошибка в привязке карты
На мой взгляд существует некоторая несогласованность-неточность в определениях понятий «датум» и «система координат»; оцените, например, [6]. В одном месте пишут «датум (система координат)», подразумевая, вроде бы, что это одно и то же, а в какой-нибудь программе отдельно выбирается датум и отдельно — система координат, что наводит на мысль, что это все-таки разные вещи. Хочу попробовать здесь точно разобраться, чем датум, например, отличается от системы координат.
Как все, наверное, знают еще со школы, Земля шарообразная только в виде глобуса, а на самом деле имеет сложную форму, напоминающую приплюснутый шар, да и то неточно. Говоря о том, какую форму имеет Земля, мы обычно говорим о геоиде.
Из [6]: Геоид — фигура сложной формы, образованная поверхностью уровня вод Мирового океана, продолженной под материками. Эта поверхность во всех точках перпендикулярна направлению силы тяжести, но не обязательно направлена к центру Земли! Это связано с тем, что плотность Земли распределена неравномерно. Чтобы как-то работать с таким сложным сплюснутым телом, принято его представлять в виде эллипсоида вращения (я не слышал о каких-либо системах координат, работающих с другими телами, но, наверняка, такие есть среди тех, что используются для Очень Точных Измерений, — например, в каких-нибудь военных системах). Эллипсоид вращения — это тело, получаемое при вращении эллипса вокруг одной из его осей; в случае нашей Земли — вокруг малой оси, потому что Земля сплюснута с полюсов, причем вроде бы с северного больше, чем с южного.
Но какие выбрать параметры эллипсоида, ведь Земля, увы, точно не представляется ни одним из них? Выберешь один эллипсоид, он будет хорошо описывать одну часть Земли, зато плохо другую. Тут существует два разных подхода, называемые геоцентрическим и топоцентрическим. Грубо говоря, первый подход построен по принципу «пусть всем понемножку хреново», а второй — «пусть нам наименее хреново, а что вокруг, нас не интересует». Более конкретно: В геоцентрической системе размеры эллипсоида, ориентация и положение его центра выбираются так, что: объем эллипсоида предполагается равным объему геоида; большая полуось эллипсоида лежит в плоскости экватора геоида; малая полуось направлена по оси вращения Земли; среднеквадратичное отклонение поверхности эллипсоида от поверхности геоида минимально по всей территории земного шара. Топоцентрическая (национальная) система координат появляется так: берется некоторый эллипсоид и располагается таким образом, чтобы для некоторой заданной территории среднеквадратичное отклонение поверхности эллипсоида от поверхности геоида было минимальным. При этом остальная часть мира не интересует; отклонения на другой стороне Земли может быть сколь угодно велико.
То же самое, но с веселыми картинками, объясняющими суть дела, можно найти в [7].
Короче, как любезно разъяснил Константин Галичский, у эллипсоида, представляющего Землю, есть полюса, экватор и произвольно выбираемый начальный меридиан, от которого отсчитывается долгота. Поскольку геодезические работы в каждой стране по историческим причинам проводились независимо друг от друга, то результаты измерений геодезистов разных стран в точности не стыкуются друг с другом: положение начального меридиана, да и даже экватора, принятое разными государствами, отличается друг от друга порой в сотни метров.
Дальше выбранный эллипсоид надо как-то совместить с Землей, то есть задать не только его параметры, типа большой и малой полуосей, но и его положение относительно центра масс Земли и как он ориентирован относительно оси вращения Земли — короче говоря, «закрепить» эллипсоид с Землей. Это часто называется «расположение и ориентация эллипсоида относительно ссылочного каркаса (структуры) местности». За более полными объяснениями того же направляю вас к [7].
Различные используемые эллипсоиды: WGS72, Красовского (1940), GRS80, SGS85, Бесселя. Параметры их, если интересно, можно найти в [6].
После того как эллипсоид выбран и как-то «закреплен» с Землей, необходимо выбрать формат координат, определяющих точку на поверхности этого зафиксированного эллипсоида, ведь эту точку можно задать многими способами — в каком виде представлять координаты, откуда отсчитывать, и так далее.
Итак, что же мы получаем? «Эллипсоид» + «Фиксация эллипсоида с Землей» + «Обозначение и Отсчет Координат» = «Полное описание координат». Что в этой схеме назвать «Датум», а что «Система координат»?
Насколько я разобрался, более или менее правильно считать следующим образом: «Эллипсоид» + «Фиксация эллипсоида с Землей» = «Датум», а «Обозначение и Отсчет Координат» = «Система координат». Некоего общего термина, описывающего то, что мы назвали «Полное описание координат» я не нашел. Дело тут все в том, что большинство датумов чаще всего используются с конкретными системами координат. Например, система координат 1942 года (Russian SK-42) чаще всего используется именно с датумом «Пулково-1942», основанном на эллипсоиде Красовского, а датум WGS-84, основанный на эллипсоиде GRS80 (и на его последующей модифкации), чаще всего используется со всем известной системой координат Широта-Долгота. Но в общем и целом, для полной информации о некоторой точке, нужно иметь не только цифры, ее описывающие (например, (53.0,55.0)), и не только систему координат, говорящую о том, что это за цифры и откуда они отсчитываются (например, Latitude/Longitude (deg)), но и датум, говорящий о том, какой эллипсоид как использован (например, WGS-84).
Заметим, что мы пока еще ничего не сказали о проекциях. И в самом деле, можно говорить о разных координатах точек на земле, ВООБЩЕ не говоря о том, какая имеется в виду проекция. Только когда появляется плоская карта, тогда появляется и проекция, как отображение реальных координат точек на земле (в соответствующем датуме) на единицы плоскости, — сантиметры там или дюймы, в зависимости от страны изготовления бумаги. Если мы хотим точки отображать на плоскости, то после того, как выбран и зафиксирован эллипсоид, необходимо выбрать проекцию, которой этот эллипсоид будет развернут в плоскость. Насколько я знаю, тут большинство систем координат неоригинальны и пользуются поперечно-цилиндрической проекцией Гаусса (еще, например, бывают всякие конические, цилиндрические, азимутальные проекции, вроде бы). Этот цилиндр для проекции надо как-то совместить с эллипсоидом — например, эллипсоид там не должен стоять «криво» — одним словом, нужно не только задать сам эллипсоид, но и то, какой стороной он, грубо говоря, будет повернут к какой стороне цилиндра.
В том случае, когда идет работа с конкретной бумажной (или оцифрованной бумажной) картой, в нашу формулу добавляется еще и выбор конкретной проекции. Довольно часто она совмещается с выбором системы координат (видимо это от того, что любая система координат большую часть времени используется с соверщенно определенной проекцией, точно так же, как и с совершенно определенным датумом), а иногда и не совмещается.
В результате более общая формула для координат при работе с бумажной картой выглядит следующим образом: «Эллипсоид» + «Фиксация эллипсоида с Землей» + «Проекция» + «Обозначение и Отсчет Координат» = «Полное описание координат на карте», где «Эллипсоид» + «Фиксация эллипсоида с Землей» можно назвать «Датум карты», а «Проекция» + «Обозначение и Отсчет Координат» можно назвать «Система координат карты». Вообще дело не в том, конечно, как называть правильно, а как неправильно, — дело в том, чтобы понимать, чего от нас хочет разработчик очередной программы с очередным своим пониманием терминов.
Например, в программе OziExplorer, при привязке карты, предлагается выбрать Датум — Datum («Эллипсоид» + «Фиксация эллипсоида с Землей» в нашей терминологии) и Проекция Карты — Map Projection («Проекция» в нашей терминологии), а вот систему координат там выбирать отдельно не позволяют, считая что разом выбирается и проекция и система координат (вполне возможное допущение-упрощение), и предлагается вводить координаты на выбор только или в виде Широта-Долгота (Degrees and Mins), или в виде пользовательских координат (User Grid, UTM Coordinates, …) в зависимости от выбранной проекции.
3.2.2 Прямоугольные координаты на советских картах (Система координат 42 года, обычно с датумом Пулково-1942)
Прямоугольные координаты (плоские) — линейные величины: абсцисса Х и ордината Y, определяющие положение точек на плоскости (на карте) относительно двух взаимно перпендикулярных осей Х и Y (рис. 4). Абсцисса Х и ордината Y точки А — расстояния от начала координат до оснований перпендикуляров, опущенных из точки А на соответствующие оси, с указанием знака.
Рисунок 4. |
В топографии и геодезии, а также на топографических картах ориентирование производится по северу со счетом углов по ходу часовой стрелки, поэтому для сохранения знаков тригонометрических функций положение осей координат, принятое в математике, повернуто на 90°.
Прямоугольные координаты на топографических картах СССР применяются по координатным зонам. Координатные зоны — части земной поверхности, ограниченные меридианами с долготой, кратной 6°. Первая зона ограничена меридианами 0° и 6°, вторая — 6° и 12°, третья — 12° и 18° и в общем виде: зона i ограничена меридианами (i-1)*6° и i*6°, с центральным меридианом i*6°-3°
Счет зон идет от Гринвичского меридиана с запада на восток. Территория СССР располагается в 29 зонах: от 4-й до 32-й включительно. Протяженность каждой зоны с севера на юг порядка 20000 км. Ширина зоны на экваторе около 670 км, на широте 40°— 510 км, т широте 50°—430 км, на широте 60°—340 км.
Рис. 5. Система прямоугольных координат на топографических картах: а—одной зоны; б—части зоны |
Все топографические карты в пределах данной зоны имеют общую систему прямоугольных координат. Началом координат в каждой зоне служит точка пересечения среднего (осевого) меридиана зоны с экватором (рис. 5), средний меридиан зоны соответствует оси абсцисс, а экватор — оси ординат. При таком расположении координатных осей абсциссы точек, расположенных южнее экватора, и ординаты точек, расположенных западнее среднего меридиана, будут иметь отрицательные значения. Для удобства пользования координатами на топографических картах принят условный счет ординат, исключающий отрицательные значения ординат. Это достигнуто тем, что отсчет ординат идет не от нуля, а от величины 500 км, Т. е. начало координат в каждой зоне как бы перенесено на 500 км влево вдоль оси Y. Кроме того, для однозначного определения положение точки по прямоугольным координатам на земном шаре к значению координаты Y слева приписывается номер зоны (однозначное или двузначное число).
Зависимость между условными координатами и их действительными значениями выражается формулами:
X’ = Х, Y’ = Y — 500 000,
где X’ и Y’ — действительные значения; X, Y — условные значения.
Например, если точка имеет координаты
Х = 5 650 450: Y = 3 620 840,
то это значит, что точка расположена в третьей зоне на удалении 120 км 840 м от среднего меридиана зоны (620840—500000) и к северу от экватора на удалении 5650 км 450 м.
Полные координаты — прямоугольные координаты, записанные (названные) полностью, без каких-либо сокращений. В примере, приведенном выше, даны полные координаты объекта:
Х = 5 650 450; Y = 3620 840.
Сокращенные координаты применяются для ускорения целеуказания по топографической карте, в этом случае указываются только десятки и единицы километров и метры. Например, сокращенные координаты данного объекта будут:
Х = 50 450; Y = 20 840.
Сокращенные координаты нельзя применять при целеуказании на стыке координатных зон и если район действий [ух, как все сурово-то!] охватывает пространство протяженностью более 100 км по широте или долготе.
Внимание! По не вполне пока понятным для меня причинам, в GPS при использовании системы координат Пулково-1942 координаты отображаются в другом порядке, то есть сначала пишется координата, соответствующая долготе, задающая положение относительно центрального меридиана зоны, — а второй пишется координата, соответствующая широте, задающая расстояние от экватора. Поэтому далее, имея в виду систему Пулково-1942, мы будем располагать координаты именно в таком порядке.
3.2.3 Координатные сетки на картах
Координатная (километровая) сетка — сетка квадратов на топографических картах, образованная горизонтальными и вертикальными линиями, проведенными параллельно осям прямоугольных координат через определенные интервалы (табл. 3). Эти линии называются километровыми. Координатная сетка предназначается для определения координат объектов и нанесения на карту объектов по их координатам, для целеуказания, ориентирования карты, измерения дирекционных углов и для приближенного определения расстояний и площадей.
Масштабы карт | Размеры сторон квадратов | Площади квадратов, км^2 | |
на карте, см | на местности, км | ||
1:25 000 | 4 | 1 | 1 |
1:50 000 | 2 | 1 | 1 |
1:100 000 | 2 | 2 | 4 |
1:200 000 | 2 | 4 | 16 |
Таблица 3. |
На карте масштаба 1:500 000 координатная сетка полностью не показывается; наносятся только выходы километровых линий по сторонам рамки (через 2 см). При необходимости по этим выходам координатная сетка может быть прочерчена на карте.
Километровые линии на картах подписываются у их зарамочных выходов и у нескольких пересечений внутри листа. Крайние на листе карты километровые линии подписываются полностью, остальные—сокращенно, двумя цифрами (т. е. указываются только десятки и единицы километров). Подписи у горизонтальных линий соответствуют расстояниям от оси ординат (экватора) в километрах. Например, подпись 6082 в правом верхнем углу показывает, что данная линия отстоит от экватора на удалении 6082 км.
Подписи вертикальных линий обозначают номер зоны (одна или две первых цифры) и расстояние в километрах (всегда три цифры) от начала координат, условно перенесенного к западу от среднего меридиана на 500 км. Например, подпись 4308 в левом нижнем углу означает: 4 — номер зоны, 308 — расстояние от условного начала координат в километрах.
Дополнительная координатная (километровая) сетка может быть нанесена на топографических картах масштаба 1:25 000, 1:50000, 1:100000 и 1:200000 по выходам километровых линий в смежной западной или восточной зоне. Выходы километровых линий в виде черточек с соответствующими подписями даются на картах, расположенных на протяжении 2° к востоку и западу от граничных меридианов зоны.
3.2.4 Определение номенклатуры карты по координатной сетке
В туристской практике иногда приходится пользоваться кусочками карт с неизвестной номенклатурой. В ряде случаев номенклатуру карты можно определить по координатной сетке. Вспомним, что номенклатура листа карты состоит из буквы ряда и номера колонны. Номер колонны (в статье [2], откуда взят этот абзац речь идет о номере зоны, что, по-моему, неверно — номер зоны имеет отношение к координатам, а не к номенклатуре) можно вычислить по горизонтальной координате. Горизонтальная координата состоит из восьми или семи цифр. Последние шесть цифр образуют координату Y — расстояние от осевого меридиана в метрах + 500 км. Седьмая справа цифра или седьмая и восьмая цифры справа позволяют получить номер зоны, а чтобы получить номер колонны нужно учесть, что колонны нумеруются начиная с меридиана 180° (=30*6°) с запада на восток, поэтому к номеру зоны прибавляют 30. Например для листа Р-36 номер зоны равен 6, а для листа Р-45 номер зоны равен 15. В рассмотренных случаях координата Y имеет вид 6256, а X — 15567. Буквенную часть номенклатуры можно получить из простых математических рассуждений. Радиус земного шара составляет 6371 км, отсюда на 4° зоны приходится pi/2*R/90*4 км, что составит 445 км. Теперь остается координату X поделить на 445. Целая часть частного даст номер предыдущей полосы, а наличие остатка укажет на то, что искомая точка расположена в очередной полосе. Приведем соответствие
1, A, широта 0°-4° | 2, B, широта 4°-8° | 3, C, широта 8°-12° | 4, D, широта 12°-16° |
5, E, широта 16°-20° | 6, F, широта 20°-24° | 7, G, широта 24°-28° | 8, H, широта 28°-32° |
9, I, широта 32°-36° | 10, J, широта 36°-40° | 11, K, широта 40°-44° | 12, L, широта 44°-48° |
13, M, широта 48°-52° | 14, N, широта 52°-56° | 15, O, широта 56°-60° | 16, P, широта 60°-64° |
17, Q, широта 64°-68° | 18, R, широта 68°-72° | 19, S, широта 72°-76° | 20, T, широта 76°-80° |
21, U, широта 80°-84° | 22, V, широта 84°-88° | ||
Таблица 3. |
3.2.5 Полярные координаты на картах (Координатная система Широта-Долгота, обычно с датумом WGS-84)
Это всем известные из школьного курса широта и долгота некоторой точки на поверхности земли. Измеряются в градусах, минутах и секундах; широта отсчитывается от экватора и принимает значения от 0 до 90, с приписыванием буквы N или S, уточняющей, о каком, северном или южном, соответственно, полушарии идет речь; долгота отсчитывается от нулевого меридиана, Гринвича, для нашего, восточного полушария возрастание долготы идет с запада на восток от 0 до 180 с приписыванием буквы E, а для западного полушария возрастание долготы идет от Гринвича же, но с востока на запад, от 0 до 180, с приписыванием буквы W. Порядок координат именно такой, сначала широта, потом долгота.
4. Векторизация растровой карты
Под векторизацией карты мы понимаем построение на основе некоторой растровой карты соответствующей ей векторной карты, одним из возможных способов. Растровая карта — некий файл-картинка, содержащий (чаще всего) отсканированную бумажную карту в форматах JPG, GIF, TIFF, BMP и т.д. Под векторной картой понимаем набор векторных объектов (точек, отрезков прямых, ломаных линий, замкнутых полигонов) с сопутствующей им описательной информацией, в одном из векторных форматов хранения SHP, MP, и т.д.
Как правило, процесс векторизации подразумевает, (или лучше сказать «имеет целью»), что получаемые координаты векторных объектов являются их реальными координатами на местности в некоторой системе координат, для наших условий это Pulkovo-1942 или WGS-84.
Раз основной целью данной статьи является сбор опыта туристического community в области векторизации карт с помощью Easy Trace, то все действия, описанные далее, относятся именно к данной программе и ее инструментам. Впрочем, в других программах все может быть аналогично или не сильно отличаться.
Основательная часть описания процесса векторизации карт с помощью Easy Trace взята из русскоязычного руководства пользователя для Easy Trace 7.5, которое настоятельно рекомендуется к прочтению.
4.1 Подготовка растра
Перед тем, как начинать работу с растром, надо его заиметь. Если исходная карта в бумажном виде, то значит отсканировать. Если в векторном виде, то попробовать провести предварительные мухлипуляции. Хороший растр, который будет легко и приятно векторизовывать, обладает следующими свойствами: растр четкий, все объекты как можно четче отделены друг от друга, горизонтали не сливаются даже в местах их скопления (как я люблю места скопления горизонталей! особенно те, где горизонтали от ужаса начинают пересекаться); растр не очень многоцветный, объекты одного типа состоят из точек близких цветов, в идеале одного и того же цвета, и не имеют шумовой примеси других цветов; объекты разных типов надежно разнесены по разным углам цветовой палитры. Это нужно, грубо говоря, для того, чтобы в идеале выбрав один какой-то цвет и отключив остальные, мы получили бы только объекты одного типа, например, реки.
К сожалению, реальная ситуация далека от идеальной. Однако не стоит по крайней мере усложнять жизнь остальным. Если вы сами сканируете бумажные карты, то наибольшим вашим вкладом в будущие поколения будет попробовать сразу после сканирования поколдовать в фотошопе и уменьшить цветность карты. Я не особо хорошо разбираюсь в фотошопе, поэтому использовал механизм выбора группы цветов (Select-ColorRange) а затем заливал выбранные этим инструментом точки одним каким-то цветом.
Мало того, что вы таким образом упростите работу тем, кто будет растр оцифровывать (может быть это будете и вы сами), вы сможете потом преобразовать отсканированный растр в indexed color с небольшим количеством цветов (256-128-64 или даже меньше) и сохранить в формате GIF, получив радикально меньшего размера файл, чем сохранив изначальный файл в JPG.
И ради бога, не сохраняйте отсканированную карту в JPG! Сколько уже хороших сканов было подпорчено таким образом, в погоде за размером при отсутствии времени! Если даже нет времени уменьшать количество цветов, сохраните исходный файл в TIFF с lzw-сжатием, оставив на будущее простор для маневра. Формат JGP безвозвратно портит часть информации на карте, он предназначен для хранения изображений с плавными градиентными переходами, а не таких, как топографическая карта.
Также постарайтесь, чтобы лист бумаги при сканировании лежал ровно, — даже маленький угол наклона, получившийся случайно при закрывании крышки сканера, может внести нежелательную погрешность, которую не всегда удастся до конца исправить.
Здесь и далее будем исходить из плохого варианта. Есть растр, уже пожатый в JPG неизвестно кем, и с ним нужно работать.
4.2 Тип карты
Карты, которые мы будем оцифровывать, могут быть разных типов, и мы, как векторизаторы можем оказаться в разных ситуациях в зависимости от имеющейся дополнительной информации о привязке данной конкретной карты.
Далее в качестве примеров мы будем рассматривать карты двух типов. В качестве карты первого типа возьмем двухкилометровую карту района вулкана Ключевская Сопка из продаваемого в Петропавловске буклетика. Эта карта намного хуже даже на вид, — на ней хотя и есть двухсантиметровая сетка (и на том спасибо, кое-где в атласах вообще рисуют сетку через 2.5см!), к координатам эта сетка не имеет никакого отношения, никаких подписей к сетке нет, и идет она даже на глаз криво. Чтобы привязать такую карту, нам понадобятся точки, для которых мы знаем координаты как на карте (вершины вулканов, например, или пересечения рек), так и на местности (кто-то в этих точках побывал и записал их координаты, показанные GPS). К счастью, такие точки у нас есть. В качестве карты второго типа возьмем карту кутукского урочища n-40-102.jpg с этого сайта. Это замечательная километровая карта, сразу содержащая всю необходимую информацию о привязке к местности, поэтому к ней нет никакой дополнительной информации.
Подробнее о привязке растров именно в Easy Trace будет сказано ниже, пока же стоит разъяснить, зачем это все нужно.
Векторизация состоит не просто в получении векторных объектов (точек, ломаных, многоугольников) в виде набора их координат и свойств. Мало просто получить векторные объекты, нужно чтобы их координаты имели смысл, то есть соответствовали их координатам на местности в некоторой системе координат. Проще и удобнее всего этого добиться можно тем, что перед векторизацией произвести привязку растра. Под привязкой растра мы понимаем установку соответствия между всеми пикселями растровой карты и реальной местностью. То есть карта будет привязаной, когда для любых пикселей, например тех, которые вы только что соединили прямой, программа-векторизатор сможет сразу вычислить их _реальные_ координаты на местности, и с этими координатами сохранить. Выполнить это в такой программе как Easy Trace можно несколькими способами, но об этом уже ниже. Пока важно то, что сами углы обрабатываемой карты, как и все остальные пиксели, имеют некоторые координаты на местности.
4.3 Создание нового проекта в Easy Trace
Выберем в меню Файл — Новый Проект. Система предложит выбрать один из вариантов создания проекта: 1. Создать проект на основе растрового файла; 2. … используя для его привязки TAB или WORLD файл; 3. Использовать в качестве прототипа существующий проект. Оставим все как есть невыбранным, то есть откажемся от всех этих вариантов и нажмем Next, попав сразу в окно свойств проекта.
Здесь требуется указать масштаб карты (1:200000 для первой нашей карты и 1:100000 для второй), единицами измерения оставим как есть метры, DPI виртуального растра оставим как есть (не совсем понимаю, на что это влияет), и направление координат оставим так, как уговорились отображать в системе координат Пулково-1942 — X слева направо, Y снизу вверх.
Сложнее с координатами левого нижнего угла и правого верхнего. Эти координаты требуется определить еще ДО привязки какого-либо растра, то есть вообще до добавления растра как такового. Эти координаты не обязательно задавать точно — это просто то место на виртуальной карте всей земли, в которое будет «смотреть» окно программы.
4.4 Привязка карты в Ozi Explorer и определение координат
Для плохой карты ключевской сопки:
Первый вариант, который мне здесь пришел в голову — это привязать карту сначала в OziExplorer. Открываем Ozi, выбираем File — Load and Calibrate Map Image, загружаем растровое изображение карты, открывается панель привязки карты. Выберем из имеющихся точек некий набор, который, во-первых, более или менее равномерно распределен по всей карте (или по той части карты, которую желательно привязать особенно точно), а во-вторых, достаточно надежен. Для каждой точки, найдя, где она находится на карте (например, слияние ручьев у п.Ключи, или вершина вулкана Ключевская Сопка), пропишем к выбранным относительным, пиксельным координатам, настоящие, реальные координаты, замеренные на местности. Это можно сделать вручную, предварительно «подсмотрев» координаты в wpt файле, а можно загрузить файл с точками в Ozi и выбрать нужную точку из списка, с помощью кнопки «Wp»:
После того, как ввели точки, можно сохранить карту, загрузить на нее точки, и убедиться, что она привязана достаточно точно; и теперь двигая мышкой по карте мы видим, какие реальные координаты Ozi показывает для этих точек. Левый нижний угол можно выбрать таким: (564000, 6179000). Верхний правый угол можно выбрать, например, (620000, 6246000), причем, как видим, Ozi оказывает координату X без номера зоны (с номером зоны это было бы (27620000, 6246000), потому что номер зоны для камчатки (карты N-57) равен 57-30=27).
После того, как карта привязана в OziExplorer, ее стоит сохранить на будущее. Файл привязки map, который создаст Ozi, нам еще пригодится.
С хорошей картой все проще :). Для хорошей карты кутукского урочища, с которой мы дальше будем работать:
Смотрим в нижний левый угол карты.
Подписи к сетке дают исчерпывающую информацию в системе Пулково-1942. Координата X предкрайней вертикальной линии есть 10468000 (что мы можем расшифровать как 468км от линии левее центра 10й зоны на 500км), а координата Y предкрайней горизонтальной линии есть 5876 (что означает 5876 км к северу от экватора).
Несмотря на то, что непосредственно сейчас нам привязанная карта в Ozi Explorer не нужна, лучше все-таки это сделать, как и в случае с плохой картой. Файл привязки map всегда пригодится, особенно на этапе после векторизации.
Итак, открываем Ozi Explorer, выбираем File — Close Map (почему-то это нужно сделать, хотя мы карту не открывали). Затем выбираем File — Load and Calibrate Map. Выбираем файл растра. Сбоку от загрузившегося растра открылась панель привязки карты. Переходим на закладку Point1. Идем в один угол карты и ставим там точку в самое крайнее пересечение линий сетки, которое НЕ ЯВЛЯЕТСЯ границей карты — граница карты не обязательно имеет круглые координаты ни в Пулково ни в WGS, поэтому лучше работать с сеткой.
Смотрим на подписи к сетке и справа в панели прописываем координаты, не забыв отбросить двузначный (в нашем случае) номер зоны и вписав его в соответствующее поле:
Аналогичным образом ставим вторую, третью и четвертую точки по остальным углам карты. Нажимаем кнопку Save и сохраняем файл привязки карты map. После этого хочется убедиться, что мы все сделали правильно. Идем в левый верхний угол и смотрим, какие координаты имеет теперь самая левая верхняя точка карты, для которой на границе написаны и координаты в градусах:
Мы явно сделали что-то не то, где-то ошиблись. Но где? Огромный сдвиг по координате X наводит на мысль, что мы вписали не ту зону. Может быть, под зоной здесь подразумевается не зона, а номер листа, то есть надо прибавить к этому числу 30? (бредовая мысль, но почему бы и нет?). Выбираем меню File — Check Calibration, у всех точек привязки прописываем номер зоны не 10, а 40. Сохраняем карту под тем же именем и снова идем смотреть координаты в левом верхнем углу карты в градусах:
На первый взгляд мы сделали теперь все более или менее правильно. Но попробуем, если есть, загрузить какой-нибудь трек с реальной местности. У меня такой трек есть. Наложу его и посмотрю, что получается:
Вот тебе раз! Какой странный глюк! По координате X вроде бы карта привязалась хорошо, а вот по координате Y наблюдается смещение трека и дороги, по которой реально шли люди, на целых километра два! Значит все-таки где-то мы неправильно сделали. Ничего не остается, как опять заходить в калибровку карты: File — Check Calibration.
Опа! Слона-то мы и не заметили! На самой первой странице панели привязки карты есть выбор Map Projection, то бишь проекции карты, которая задает как круглая поверхность земли будет преобразована в плоскость. По умолчанию там стоит Latitude/Longitude, которая, как известно, задает такое преобразование, в котором параллели и меридианы переводятся в перпендикулярные друг другу линии. Это не то, что нам нужно.
Там же в списке есть UTM (Universal Transverse Mercator). Если залезть в теорию (например, в подсказку Ozi) и посмотреть параметры этого преобразования, то есть как в нем кривая земля преобразуется в плоскость, то мы узнаем, что «UTM это даже не проекция, а система координат, основанная на частном случае проекции Transverse Mercator. Долгота отсчитывается от 0 градусов, центральный меридиан — это центр одной из 60 UTM-зон шириной в 6 градусов, опоясывающих Землю; фактор масштабирования установлен в 0.9996 (вот оно!!), смещение на восток задано в 500000, северное смещение в северном полушарии установлено в 0. Это опять-таки не то что нам нужно.
И наконец, там в списке есть простая проекция Transverse Mercator, называемая так же Gauss Conformal Cylindrical, или поперечно-цилиндрическая проекция Гаусса. Пулково-1942 как раз является частным случаем такой проекции, но другим частным случаем, нежели UTM. Выберем именно Transverse Mercator. Ozi сразу спросит параметры этой проекции, потому что Transverse Mercator — это всего-лишь наименование типа проекции, а конкретная проекция задается параметрами:
Scale Factor установим в 1 вместо того безобразия, которое там осталось от UTM, False Easting установим в 500000, False Northing в 0, потом вспомним, что для нашей карты, находящейся в 10 зоне, центральный меридиан есть 10*6-3 = 57 градусов восточной (E) долготы. Почему-то у меня Ozi не сразу согласился принять цифру 57 градусов, возможно потому что я забыл приписать 0 минут. Со второго раза карта совпала с треком:
Вы еще не забыли, для чего мы все это делали? Мы собирались привязать карту, чтобы посмотреть координаты углов :). Но хорошо привязанная карта нам еще пригодится. Итак, отступив некоторое количество километров (здесь точность не важна) от края карты, положим левый нижний угол карты как (10464000,5872000). Аналогичным образом, посмотрев в правый верхний угол, получим его координаты как (10502000, 5914000).
Собираем эту информацию в форму и нажимаем Next
Далее программа спросит, хотим ли мы привязать растр прямо сейчас. Скажем пока, что привязывать растр будем позже.
Программа откроет большое темное окно с белым пунктиром выделенной его частью. Итак, проект готов, и дальше мы будем к нему привязывать растры.
4.5 Привязка растра
Чтобы добавить растр к проекту, необходимо выбрать пункт меню Проект — Добавить растр. Программа откроет очередной мастер, который на самом первом шаге спросит какой файл растра нужно выбрать и к какому проекту привязать:
На этом же шаге необходимо выбрать метод, которым растр будет привязан к рабочему окну. Как видим, на выбор нам предлагают целых четыре разных метода, из которых мы разберем здесь целых два, последние.
Для плохой карты ключевской сопки нам придется воспользоваться последним методом — по произвольному набору опорных точек. На втором шаге нас спросят, совпадает ли масштаб растра с масштабом проекта, мы ответим что совпадает. Координаты опорных точек на следующем шаге можно будет или загрузить из файла, или сгенерировать на основе регулярной сетки, или ввести вручную — мы будем вводить вручную.
Здесь как раз удобно воспользоваться привязанной картой в Ozi, которую держать рядом под рукой (или под мышкой?), переключаясь из Ozi в Easy Trace и обратно. Смотрим одну из точек в Ozi (можно смотреть как раз точки привязки, а можно любой другой набор), записываем ее координаты в Пулково-1942, переходим в Easy Trace, находим там на карте ту же самую точку, тыкаем в нее. Easy Trace пытается сам предугадать координаты этой точки, но так как она у него первая, то получается у него это с трудом. Берем вторую точку в Ozi, записываем ее координаты в Пулково (для этого удобно в Ozi ставить на это место ручной waypoint с помощью кнопки Position and Set waypoint on map на панели кнопок), переходим обратно в Easy Trace, ставим эту точку там, вводя координаты опять, потому что Easy Trace пока ошибается.
Как правило уже на третьей точке Easy Trace определяет сам координаты с точностью до пары километров, так что координаты можно не вводить, а поправлять. И чем дальше, чем меньше поправлять приходится. Три заданные точки определяют общее аффинное преобразование, которое EasyTrace собирается применить к растру, чтобы эти три точки абсолютно совпали со своими соответствиями на реальной карте. Поэтому пока мы ввели только три точки, погрешность их преобразования равна нулю — зато погрешность преобразования любых других точек на карте может быть пока большой. Поэтому мы продолжим добавлять точки. С четвертой точкой, которую я предложил Easy Trace, программа ошиблась в предсказании ее координаты всего за 20 метров, и показала, с какой точностью будут преобразованы координаты всех 4 точек, учитывая, что все три они равноценны, а аффинное преобразование задается только тремя из них. В моем случае эта ошибка не превышала 8 метров, но я продолжил кидать на карту контрольные точки, пока не надоело.
Для хорошей карты кутуков все немного проще, зато намного точнее. С картой, на которой задана хорошая регулярная сетка с подписями мы можем воспользоваться предпоследним методом — коррекция по регулярной сетке опорных точек. На втором шаге нас опять спросят, совпадает ли масштаб растра с масштабом проекта, мы опять ответим что совпадает. В диалоге на следующем шаге необходимо задать левый нижний угол планшета и правый верхний. Под этими углами нужно понимать координаты углов значащей карты, а так как мы немного отступили от углов при задании координат левого нижнего и правого верхнего углов карты, то можно сюда ввести именно эти координаты, а можно и скорректировать их и задать координаты значащих углов карты более точно. В качестве начала сетки обычно выступает самый левый нижний ее угол, то есть в нашем случае эти координаты совпадают с координатами левого нижнего угла планшета. Шаг сетки определит, сколько тиков вам придется поставить. Самым точным вариантом будет написать в эти поля реальное значение шага сетки на карте, однако некоторым будет лень потом ставить все точки сетки, поэтому можно задать значение кратное шагу сетки. Наша километровая карта имеет шаг сетки 2км, а мы люди ленивые, поэтому зададим шаг сетки 4000м. Прикинем на получившемся рисунке количество тиков, которые предстоит проставить — да, такое количество еще можно осилить:
Нажимаем Next и переходим к окну расстановки тиков. Для начала стоит, как и рекомендуют, используя клавишу шифт, подправить (перетащить) на планшете положение растра, чтобы программа могла корректно перепрыгивать на нужные тики при выборе конкретных точек на карте. В чем тут принцип легко убедиться при первой же возможности, объяснять приходится дольше.
Хотя опорные точки можно устанавливать в любом порядке, начинать удобнее с точки, векторные координаты которой легко определить, например, с самой левой нижней точки сетки — с которой у нас начинается отсчет, а второй точкой, наоборот, указать правую верхнюю точку сетки. При указании первых двух опорных точек, программа запрашивает их векторные координаты, что позволяет ей скорректировать положение и истинный масштаб растра — эти координаты как раз удобнее давать у крайних точек сетки, находящихся у подписей к сетке:
Для задания очередной опорной точки нужно просто указать ее положение на растре. Одну и ту же точку можно указывать многократно, уточняя ее положение на растре. В левой части страницы расположено preview, на котором отображаются все опорные точки. Те из них, положения которых на растре уже заданы, обведены рамкой. Активная опорная точка, т.е. точка, в окрестностях которой на растре находится курсор мыши, подчеркивается миганием. Preview также удобно использовать для навигации по растру: укажите в окрестность образа узла сетки на preview, и программа автоматически переместит в центр экрана приблизительное положение опорной точки. После того как все опорные точки расставлены, становится доступной кнопка «Correct».
При нажатии на эту кнопку программа начинает преобразование растра. Как раз здесь исправятся все косяки, связанные с нелинейным искажениями растра из-за криво положенного, например, листа карты при сканировании. Далее растр можно будет обрезать по краевым тикам, и потом он автоматически сохранится под новым именем, как исправленный растр.
В конце концов мы получим рабочее поле проекта, но уже не пустое, а с добавленным растром, привязанным и готовым к дальнейшей векторизации.
4.6 Создание слоев
Векторные объекты, которые мы сейчас будем создавать, имеют разную природу и должны храниться и отображаться по-разному в зависимости от своего типа — река это, например, или горизонталь, или дорога. В терминах ГИС (гео-информационных систем) про эту ситуацию говорят, что объекты принадлежат разным слоям.
Преждем чем начинать трассировать объекты, создадим слои, в которые эти объекты будут помещаться. Нажмем Ctrl+L, или выберем пункт меню Проект — Слои проекта. В открывшемся окне есть два списка слоев — растровые слои и векторные. И того и того по одному пока. Растровые слои пока не трогаем, работаем с векторными. Правой кнопкой на свободное пространство и в выпадающем меню выбираем «Добавить векторный слой», и вводим его имя. Пусть это будет, например, слой с водными объектами, и назовем мы его «water». Слева от названия присутствуют три кнопочки, обозначающие соответственно видим слой или невидим, заморожен или доступен для редактирования, и заливаются ли полигоны текущего слоя или нет. Справа от названия в следующей колонке необходимо задать то, как объекты данного слоя будут отображаться на карте. Раз у нас в этом слое водные объекты, то двойным щелчком зайдем в диалог выбора внешнего вида линий и поменяем цвет на синий. На GPS это не повлияет, это просто чтобы нам было удобнее работать.
Добавим еще один слой, назовем его «roads» и выкрасим в коричневый цвет. После этого удалим первый слой с именем «0», который был создан по умолчанию. После этого решим, например, что сначала будем векторизовывать водные объекты, поэтому заморозим все остальные слои, кроме слоя «water». Всегда замораживайте все остальные слои, кроме того, на котором непосредственно работаете, иначе можно по ошибке надобавлять рек в слой дорог, например.
4.7 Создание объектов
4.7.1 Работа с цветным растром
Одним из способов оцифровки карты является прямая оцифровка цветного растра. Этот способ удобно использовать тогда, когда имеющийся растр содержит малое количество цветов — как правило это значит, что он был обработан ранее.
Для того, чтобы начать трассировать цветной растр необходимо задать наборы цветов. Каждый набор цветов задает цвета, которые трассировщиком будут распознаваться как один и тот же цвет. Выберем пункт меню Инструменты — Трассировка — Наборы цветов. Внизу появляется панель создания групп цветов.
Раз мы будем трассировать реки и прочие водоемы, то выбирать будем именно те цвета, которыми на карте обозначена вода. При первом тыке мышкой в любой из цветов, программа запросит название нового набора, — назовем его по цвету слоя, «water». При добавлении цветов удобно рассматривать карту в крупном масштабе, чтобы было видно отдельные пикселы. Поэтому здесь желательно сразу привыкнуть к двум горячим клавишам, которые и дальше очень часто будут использоваться. По нажатию на Tab программа входит и выходит из режима лупы, то если приближения-удаления от карты, причем приближение происходит по нажатию левой клавиши мыши, а удаление по правой. И клавиша Пробел, так же, как в фотошопе, переключает программу в режим перетаскивания карты: нажав и удерживая пробел, можно перетаскивать карту в любом направлении. Пиксели всех цветов, которые добавленны к тому моменту к текущей группе цветов, выделаются некоторым цветом.
После того, как слой водных объектов более или менее выделился, можно перейти непосредственно к трассировке. Как видим, в нашем случае попытка выделить слой водных объектов непосредственно с исходного цветного растра дала довольно посредственные результаты. Одной из причин такого может быть то, что этот растр побывал в формате JPG, выполняющем сглаживание оттенков при сжатии.
4.7.2 Выделение черно-белых растров и работа с ними
Другим возможным решением проблемы нечетких растров является предварительная обработка и выделение цветовых растров во внешних программах. Например, откроем наш растр в фотошопе. Разумеется, открывать надо не самый исходный растр, а тот, что Easy Trace создал при привязке его к проекту — как вы помните, растр был скорректирован, чтобы убрать возможные искажения при сканировании. В нашем случае это файл n-40-120_c.jpg, автоматически созданный при привязке растра.
Итак, наша задача — выделить слой с водой. Это означает каким-то образом выявить и выделить все точки, которые в растре означают воду. С помощью панели Info и инструмента Eyedropper Tool смотрим, какие RGB-значения имеет вода на растре — это значения с высокими G и B и низкой R. И начинаем мухлевать. Для начала берем и инвертируем растр нафиг.
Потом замечаем, что речки стали подозрительно красноватые (и не удивительно, ведь до инвертирования у них был низкий R). Возникает идея отключить какие-нибудь каналы. Отключаем G — опа! Реки отчетливо проявились своим розовым цветом. Правда, тем же цветом проявилось то, что изначально было черным — сетка и названия — но это не беда.
Раз такое дело, зеленый канал надо вообще удалить. Выбираю в окне Каналы Зеленый, нажимаю в окне растра Ctrl+A, выделяя все, затем Edit — Fill, выбираю черный цвет. Вся информация из зеленого канала удаляется. После этого у нас информация остается только в красном и синем каналах. Видно, что пока нам мешаются только горизонтали — все остальное имеет явно другой цвет. Посмотрим на гистограмму рисунка, открыв заодно инструмент Levels. На гистограмме видны два пика, правый из которых (самые яркие точки) соответствует как раз нужной нам информации, а левый соответствует нежелательной информации в горизонталях. Применяем этот инструмент так, чтобы отсечь ненужный горб:
После этого по уже описанной технологии удаляем канал B и любуемся на плоды своего труда:
Перевести результат в черно-белый растр теперь не составит труда. Как видим, таким образом мы выделили в отдельный слой ручьи и все черные объекты, такие как дороги и подписи. Разделить их в данном примере не удалось. Какой-то другой пусть обязательно приведет к нужному результату, когда останутся только одни ручьи, надо просто дольше колдовать и не бояться экспериментировать. И делиться найденными удачными ходами по цветовыделению с народом :).
Не удержался, попробовал реализовать еще одну идею, пришедшую в голову по результатам проведенного эксперимента. В чем проблема предыдущего растра? В том, что там мешается сетка, дороги и подписи — одним словом, то, что на исходной карте было темным. А почему бы тогда сразу на исходной карте не попробовать убрать сетку, дорогу и подписи? Берем инструмент Select — Color Range, и там выбираем Select: Shadows. Нажимаем OK и убеждаемся, что сетка и подписи довольно хорошо отделились. Что с ними сделать? Ну, например, залить тем цветом, что у нас успешно удалился, — например, зеленым цветом лесов: Edit — Fill, затем тыкаем в карте на любую зеленую точку (ее цвет выбирается в текущий цвет), а в диалоге выбираем Foreground Color. Нажимаем OK и убеждаемся, что сетка и подписи нам больше не мешаются. После этого повторяем весь процесс и приходим к такому растру:
Реки на нем видны чуть менее ярко, зато дороги и сетка и все подписи — не мешаются совсем. В общем, надеюсь, я навел вас на мысль о том, что лучше потратить некоторое время на эксперименты, но зато потом получить более качественный растр для векторизации? Перед сохранением этого растра стоит еще раз применить к нему инструмент Levels, чтобы выделить реки поярче, а зачем перевести сначала в режим GrayScale, а затем и в bitmap, попутно смотря, чтобы реки на этом растре в черно-белом виде остались, а всего остального попало поменьше.
4.7.3 Подключение дополнительных растров к проекту
После того, как путем манипуляций в фотошопе мы получили хороший монохромный растр, в котором явно выделяются нужные нам для некоторого слоя объекты, нужно этот растр опять подключить к проекту. Неужели опять придется мучаться с привязкой? К счастью, нет. Мы ведь в фотошопе меняли только цвета точек, но не меняли размер самого рисунка, поэтому добавление нового растра пройдет легко и просто.
Выбираем меню Проект — Добавить растр, в уже знакомом окне выбираем имя нового нашего файла и текущий проект, а в качестве метода привязки выбираем Без коррекции, и на следующем шаге — Использовать параметры ранее зарегистрированного растра. Вот и все, у нас в проекте появился новый растровый слой.
Easy Trace автоматически начинает «просвечивать» монохромным растром через цветной, выделяя точки этаким голубоватеньким цветом, но мы на всякий случай уточним ему, что нам нужно. Зайдем в окно параметров слоев и обратимся к растровым слоям. Заблокируем на всякий случай исходный цветной растровый слой. Заморозка не влияет на видимость слоя, но влияет на его участие в трассировке. И это именно то, что нам нужно: видеть мы хотим цветной растр, а трассировка должна идти по подготовленному нами ранее черно-белому.
4.7.4 Трассировка объектов
Вот наконец-то мы и добрались до самого главного — собственно до трассировки объектов карты, создания их векторного представления по растровому. В руководстве пользователя для ET7.5 этот процесс описан очень подробно; перенесу сюда наиболее важные аспекты.
Трассировкой мы называем процесс полуавтоматического или ручного прослеживания линии по ее изображению на растре. Трассировка является главным средством создания векторных примитивов при работе с пакетом Easy Trace. Easy Trace имеет семь инструментов трассировки. Это — основной трассировщик, предназначенный для прослеживания сплошных и пунктирных линий, а также трассировщики ортогональных, ломаных, точечных линий, замкнутых прямоугольных контуров, окружностей и инструмент оконтуривания заштрихованных областей. Кроме того, пакет снабжен средствами ввода точечных объектов — точек, блоков и текста. Процесс векторизации управляется набором параметров трассировки, которые можно объединять в стратегии трассировки.
4.7.5 Для тех, кто хочет побыстрее
Чем читать всякую документацию, где подробно разбирается процесс трассировки объектов, лучше начнем сразу сам процесс трассировки. Выберем в меню Инструмент — Трассировка — Криволинейная, убедимся, что выбран векторный слой «water», что видим, но заморожен растровый слой с цветной картой, и видим и разморожен слой с черно-белым растром рек.
Когда мы выбрали инструмент, курсор изменился, показывая, что готов к трассировке и тыкание в карту будет воспринимать именно с точки зрения трассировщика. Если мы хотим сдвинуть карту, то можно это сделать нажав и удерживая Пробел (курсор превратится в кулачок) и перетаскивая карту мыши. Если мы хотим приблизить-удалить карту, то можно нажать на Tab — курсор превратится в лупу, и левая клавиша мыши будет приближать, а правая удалять. Повторное нажание на Tab (или на Пробел) переведет программу обратно в режим трассировки, не прерывая текущую линию
Итак, найдем какую-нить точку с водой, например, для начала исток ручья, и нажмем в него левой клавишей мыши:
Как видим, Easy Trace начал трассировку линии автоматически, потом сбился с пути, прошел немного, и остановился в задумчивости, все ли он правильно начал делать. Необходимо удалить несколько последних точек, которые он поставил. Для этого нажимаю клавишу Z, которая удаляет последнюю поставленную точку, пока не останутся только те точки, которые он еще поставил правильно. Удаленные точки остались черными:
Указываю тыкаю мышкой в правильном продолжении линии, которое он не смог сам увидеть, и он продолжает автоматическую трассировку. Если вдруг он опять пойдет не так, и не захочет остановиться, я всегда смогу остановить его правой клавишей мыши, удалить несколько последних поставленных точек, и отправить в нужном направлении.
Когда трассировщик дойдет до конца линии, нужно нажать Esc и получившаяся линия будет занесена в список полученных векторных объектов, и получит цвет и толщину, заданную внизу в панели текущего инструмента для заданного слоя:
Если трассировщик совсем не знает, куда дальше идти и у него нет никаких вариантов, или он в какой-то области стал слишком много ошибаться, то имеет смысл перейти в ручной режим, нажав клавишу A. При этом буковка A на курсоре исчезнет, а в строке состояния будет сказано о том, что включен ручной режим. В ручном режиме пользователь задает точки линии самостоятельно:
После завершения линии опять Esc и линия будет сохранена. Если теперь нажать Ctrl+Z, то последний введенный объект будет удален, а вместо него на карте останется черный след, который исчезнет при перерисовке карты.
В случае, когда трассировщик имеет несколько отчетливых вариантов продолжения линии, он останавливается, меняет курсор на вопросительный (на рисунке, к сожалению, не отобразился) и предлагает выбрать один из вариантов. Трассировщик показывает тот вариант, который идет примерно в том направлении, где находится курсор мыши, поэтому подергав последним можно увидеть все предлагаемые трассировщиком варианты и подтвердить выбор одного нажатием левой клавиши мыши. Если не устраивает ни один вариант, то нужно нажать правую кнопку мыши и вручную выбрать нужное направление.
Таким образом, в основном работа идет с использованием левой и правой кнопки мыши, клавиш Esc, Tab, Z, A и Пробел. Далее процесс трассировки расписывается более подробно, на основе информации из руководства.
4.7.6 Режимы трассировки
Векторизатор Easy Trace работает в двух режимах трассировки — ручном и автоматическом. Указанные режимы доступны для всех линейных трассировщиков, инструмента оконтуривания заштрихованных областей, прямоугольных контуров и окружностей. Для ввода точечных объектов предусмотрен только ручной режим. В режиме трассировки курсор в рабочем окне имеет форму резиновой нити или креста, если линия еще не начата. В автоматическом режиме в строке состояния появляется надпись «Автоматический режим». Чтобы начать трассировку сплошной или пунктирной линии в автоматическом режиме, нужно указать левой кнопкой мыши точку затравки на хорошем участке, где для трассировщика не предвидится осложнений. Для начала трассировки точечной линии нужно последовательно указать две соседние точки, задав, таким образом, примерный шаг и направление. В ручном режиме в строке состояния проявляется надпись «Ручной режим оцифровки полилиний». Можно пройти сомнительное место, устанавливая точки нажатием левой кнопки мыши как на пустом месте, так и на занятых участках.
Для смены режимов трассировки используйте пиктограммы команд Автоматической и Ручной трассировки, присутствующих на панелях управления и в дополнительных меню инструментов трассировки. Дополнительные меню выпадают при нажатии правой клавиши мыши в любом месте рабочего окна программы. Альтернативным способом смены режима трассировки является использование назначаемой горячей клавиши (по умолчанию — А).
4.7.7 Управление трассировкой
Управление трассировкой может осуществляться с помощью команд дополнительного меню выбранного инструмента оцифровки, а также с помощью горячих клавиш. Для трассировки полилинии в ручном режиме нужно последовательно указывать желаемые положения ее вершин левой клавишей мыши. Щелчок правой клавиши вызывает дополнительное меню инструмента, два щелчка правой клавиши позволяют отвязаться от прокладываемой полилинии.
В полуавтоматическом режиме трассировки обычно бывает достаточно указать точку затравки в любом месте трассируемой полилинии. При этом рекомендуется использовать достаточно большое увеличение (2:1 и выше) и выбирать для точки затравки участок полилинии, на котором для трассировщика не предвидится осложнений.
В основу управления состоянием автоматической трассировкиположен следующий замечательный принцип: отсутствие действий пользователя есть подтверждение правильности принятых программой решений. Таким образом, вы можете следить за процессом трассировки и вмешиваться, только если что-то не так.
Левая кнопка мыши используется обычно для подтверждающих или инициирующих действий (OK), правая — для прерывания трассировки или отмены чего-нибудь (BREAK и CANCEL). При достижении границ видимой части экрана производится автоматический скроллинг в нужном направлении.
При обнаружении развилки трассировщик предлагает все возможные продолжения трассы, одно из которых считает наиболее вероятным. Если вам подходит предложенное трассировщиком продолжение — ничего неделайте, ждите, пока истечет установленное число миллисекунд (параметр Пауза при выборе продолжения на развилке). Если не подходит — есть два варианта действий:
— нажать левую кнопку, указывая нужное направление;
— нажать правую кнопку и сразу перейти в состояние диалога. Далее можете поменять режим трассировки на ручной и пройти сомнительный участок.
Автоматическое прослеживание трассы можно прервать в любой момент, нажав правую клавишу мыши. Два щелчка правой клавишей мыши позволяют прервать линию с выходом в диалог. Чтобы отказаться от диалогового окна дополнительного меню, нажмите кнопку в его верхнем правом углу. Повторный щелчок правой клавишей мыши является для программы сигналом продолжить трассировку в противоположную от точки затравки сторону. Наконец, еще раз дважды нажав правую клавишу мыши, Вы можете отвязаться от прокладываемой трассы.
Программа сама прерывает автоматическую трассировку, если не может найти продолжение после обрыва линии или разобраться в сложной ситуации. Трассировку оборванной линии можно продолжить, захватив правой клавишей мыши любую ее точку. При этом в строке управления установятся соответствующие слой, толщина и уровень. Текущей станет ближайшая к точке указания концевая вершина (т. е. первая или последняя) и можно либо продолжить линию, либо посегментно откатить ее. Для перехода к началу/концу полилинии удобно пользоваться горячей клавишей (по умолчанию — C).
4.7.8 В настройках параметров трассировки
Среди прочих параметров в настройках параметров трассировки пользователи устанавливают длительность задержки дальнейших событий при определенных обстоятельствах (в десятых долях секунды). Они дают возможность пользователю вмешиваться в процесс принятия решений. Общая схема действий при этом такова: пауза завершается при нажатии клавиши мыши или по истечении заданного промежутка времени (timeout). Завершение паузы по timeout (без вмешательства пользователя) подтверждает принятое программой решение. Нажатие правой клавиши отменяет его и переводит трассировку в состояние диалога. Действие левой кнопки мыши описано в каждом конкретном случае. Установка значения паузы в 0 означает, что Вы заранее соглашаетесь с принятым программой решением.
К настройкам параметров трассировки относится работа со стратегиями сортировки. Стратегии трассировки — это именованные наборы параметров трассировки. В строке управления в поле Стратегии трассировки находится выпадающий список, содержащий имена всех созданных Вами и/или унаследованных из проекта-прототипа стратегий. Несколько стандартных стратегий создается автоматически в каждом новом проекте. Стратегии трассировки создаются и настраиваются пользователем, и хранятся в проекте. Предусмотрено создание стратегий для всех трассировщиков. При выборе того или иного инструмента по умолчанию устанавливается та из его стратегий, которая применялась последний раз.
4.7.9 Основной инструмент трассировки
Основным рабочим инструментом трассировки (прослеживания) линий является полуавтоматический трассировщик сплошных и пунктирных линий. Для его выбора нужно указать маркером мыши на первую сверху пиктограмму панели режимов и инструментов.
Вы также можете выбрать данный инструмент, воспользовавшись командой Трассировка меню Инструменты.
Строка управления трассировщика содержит значения параметров, которые будут присвоены векторизованной линии. Указывается слой, куда будет помещена линия, Z-координата (высота) полилинии, толщина линии, а также текущая стратегия трассировки и имя текущего трассируемого растрового слоя. Кроме того, в строке управления присутствуют пиктограммы команд смены режимов трассировки (ручной/автоматический).
Все параметры векторного объекта могут быть заданы до его создания, либо изменены в режиме редактирования. При выборе инструмента автоматически устанавливаются те значения параметров строки управления, которые были заданы при его последнем применении. Управление трассировкой может осуществляться с помощью команд дополнительного меню (см. ниже), а также с помощью горячих клавиш.
Дополнительное меню инструмента оцифровки сплошных и пунктирных линий выпадает по нажатию правой клавиши мыши. Оно содержит следующие команды (слева направо):
перейти в режим редактирования
перейти в автоматический режим
перейти в ручной режим
перейти в режим отсечения
замкнуть полилинию
завершить и начать
скопировать часть другой линии
ввод координат
режим ввода атрибутивных данных
перейти в режим посегментного отката
Нажатие на кнопку в правом верхнем углу панели пиктограмм дополнительного меню или на клавишу ESC закрывает его без изменения текущего режима.
4.8 Обработка векторных объектов
4.9 Сохранение и экспорт объектов
Понятно, что вектирозация растра нужна не сама по себе, а для того, чтобы с созданными векторными объектами работать где-то еще. Easy Trace обладает богатыми возможностями по экспорту информации. Сначала немного текста из руководства.
Интерфейс может показаться чрезмерно обширным и усложненным, но это обусловлено стремлением разработчиков обеспечить как можно более полную конвертацию данных между форматами, которые подчас значительно различаются. Безусловно, абсолютно полная конвертация данных невозможна, поскольку разные ГИСCAD приложения придерживаются значительно различающихся подходов к представлению данных.
В основном это относится не к геометрическим, а к атрибутивным свойствам данных, таким как тип линий, точечные символы и т.д. Для каждого конкретного формата описывается его подмножество, поддерживаемое Easy Trace. Easy Trace поддерживает обмен со следующими ГИСCAD приложениями: ArcInfo (GEN), ArcView (SHP), CREDO (TOP), Intergraph (DGN), MapInfo (MIF), WinGIS (ASC). Со всеми поддерживаемыми системами возможен двусторонний обмен (как экспорт, так и импорт).
Кроме конвертации данных из проекта Easy Trace в выбранный формат, при экспорте могут быть выполнены и некоторые дополнительные операции:
— отсечение векторной информации по заданной прямоугольной рамке;
— тематическое ограничение экспортируемой информации, т.е. экспорт только заданных слоев;
— экспорт атрибутивной информации (сохраняемой в базе данных проекта) — для некоторых форматов;
— аффинное преобразование координат на основе набора контрольных точек;
— регистрация растровых слоев, т.е. экспорт информации, привязывающей растр к конечной системе координат;
— преобразование строковой информации в OEM- (DOS-) кодировку.
Итак, выбираем в меню Файл — Экспорт. На первом шаге выбирается формат файла и папка, в которую будут экспортированы результаты работы. В качестве такого формата выбираем SHP(ArcView), указываем папку и нажимаем Next. На следующей странице нас спрашивают, нужно ли конвертировать текстовые строки, которых у нас пока нет, некоторые параметры сохранения полилиний и полигонов, нужно ли проводить отсечение — от всего этого пока отказываемся и нажимаем Next. Далее нас спрашивают, какие слои мы хотим экспортировать — в нашем случае выбираем water и нажимаем Next. На следующей странице нас спросят про опции слоев и дадут поменять имя у получаемых файлов — от всего откажемся и нажмем Next.
На следующем шаге у нас будет возможность задать преобразование координат сохраняемых векторных объектов. Так как мы заранее позаботились о том, чтобы хорошенько привязать растр, никакого преобразования нам не надо. На последней странице пропустим все опции экспорта и опции экспорта блоков, согласимся с правилами именования файлов и нажмем Finish.
Соглашаемся со сводкой применяемых параметров и — ура! — экспорт завершается успешно, о чем лучше не читать в логе :). Больше половины дела сделано.
5. Подготовка и заливка векторных карт в GPS
Итак, мы выгрузили векторные объекты в SHP-файлы. Зачем? Их все равно пока нельзя залить в GPS. На самом деле, мы сейчас сделали большое дело, потому что вышли на так называемую Накатанная Цепочку Преобразований, понятие о которой вводится в известной задаче про последовательность действий при кипячении чайника на плите [4]. Если мы смогли привести объекты к типу SHP, мы всегда воспользуемся приведенной цепочкой и зальем их в GPS.
5.1 Загрузка объектов в GPSMapEdit и создание MP-карты
Итак, запускаем программу GPSMapEdit. Вместо того, чтобы сразу начинать экспортировать слои, мы откроем хороши привязанную растровую карту (помните мы убили кучу времени?). Итак, File — Open и выбираем наш map-файл. Проблема здесь может оказаться в том, что в нерегистрированной версии программы хоть и позволяется загружать растровые файлы, но на них накладывается ограничение, связанное с возможностями видеоадаптера и еще одно ограничение сверху, введенное уже самими разработчиками. У меня видеопамяти всего 16мб, и при загрузке карты Кутуков, программа выдала сообщение об ошибке, в котором утверждалось, что во-первых, программа незарегистрированная, а во вторых, размер растра составил 19 млн пикселов и это превысило возможности видеоадаптера. Как бы то ни было, я загрузил растр в фотошоп, выбрал там Image — Canvas Size и отхряпал от карты с одного бока километров 6. Уменьшил растр, одним словом. И тогда растр загрузился в GPSMapEdit и я увидел там свою растровую карту.
После этого загрузил с помощью File — Add имеющийся трек, чтобы еще раз убедиться, что карта растровая привязана как надо. После этого можно было бы начинать уже импорт векторных объектов, но мы сделаем еще одну важную вещь — настроим уровни карты. Для этого зайдем в File — Map Properties — Levels.
Для чего вообще нужны уровни? Дело в том, что результирующая карта, которая будет загружена в GPS, будет отображаться при очень разных масштабах. От самых крупных, когда вы будете отходить от палатки, пардон, в туалет, и захватите на всякий случай GPS, чтобы вернуться — до самых мелких, когда будете смотреть на район, подъезжая к нему на поезде. Очевидно, что на самом мелком масштабе совершенно не нужны все изгибы всех горизонталей, они только перегружают карту количеством объектов, которые все равно не видны или видны еле-еле. Для этого как раз и использую понятие уровня. Карта по сути представляется не одним слоем, а несколькими, по количеству уровней, — то есть, по сути, одновременно вместо одной карты закачивается сразу несколько! В каждый момент времени отображается только один уровень, в зависимости от текущего масштаба, и очевидно, что наполнение карты должно быть разным для разных уровней. В уровне, соответствующем самому мелкому масштабу, должны быть только самые крупные объекты, типа больших дорог, крупных рек и так далее. В уровнях, соответствующих более крупным масштабам должны уже появляться более мелкие объекты, и наконец в уровне, соответствующем самому крупному масштабу, должен содержаться максимум подробной информации.
Итак, мы смотрим на окно уровней, в котором ничего не присутствует. Нажмем кнопку Insert Before — и увидим, что вместо одного слоя проявились сразу два. Дело в том, что на любой карте последний слой должен быть пустым, то есть в нем не должно содержаться ни одного объекта. Поэтому нажмем еще раз кнопку Insert Before, чтобы получить второй слой, с которым можно будет работать. Итак, у нас есть Level0 и Level1, в которые можно добавлять объекты, и Level2, который должен остаться пустым. С помощью кнопки Change выставляем, например, следующие значения для слоев:
Что означает запись «5km — 8km»? Это означает, что при укрупнении масштаба карты при масштабе 8км при просмотре карты в GPS проявятся объекты слоя Level1. Но это отнюдь не значит, что при масштабе 5km эти объекты пропадут. Если ниже этого слоя ничего не будет (то есть если будут только Level0 и Level1), то все объекты будут видны от масштаба 8km до любого более крупного. Итак, при масштабе 8km появятся объекты Level1. А когда они исчезнут? А это определяется нижележащим слоем, то есть слоем Level0. Там задан масштаб, при котором перестанет отображаться предыдущий слой, а это 3km, и начнет отображаться слой Level0. Который уже в свою очередь, раз нет нижележащего, будет отображаться при всех более крупных масштабах.
Не выходя из окна настроек проекта, перейдем на страницу Header. Там обязательно надо будет выставить TypeSet в Garmin, но пока не загружены векторные объекты, этого сделать нельзя. Зато прямо сейчас нужно заполнить восьмициферный код карты ID. Он должен быть уникальным для всех карт, загруженных одновременно в один GPS, но в остальном он может быть любым. Вообще-то где-то есть правила, по которым можно родить ID для той конкретной местности, про которую мы сделали карту, но этих правил не обязательно придерживаться. Имя карты впишем любое. Обязательно выберем CodePage = 1251, потому что наш GPS поддерживает кирилические шрифты, а без этого они не будут нормально отображаться. После этого нажмем Apply и OK.
Вот теперь мы готовы импортировать векторные объекты. Выбираем в меню File — Import — ESRI Shape. Выбираем все shp-файлы, которые нужно добавить в карту. Раз мы экспортировали только один слой, полученный файл и выбираем.
Для каждого файла программа сначала запросит как отображать объекты данного файла в GPS (то ли это дороги, то ли ручьи, то ли еще что), затем предложит выбрать источник для подписей к объектам, затем запросит используемую систему координат. Благодаря тому, что мы приписали номер зоны к координате Х, мы можем смело выбирать «Russian SK-42» и соглашаться с тем, что центральный меридиан будет автоматически выбран по префиксу. Если бы мы работали с относительными координатами (не приписывая номер зоны), то сейчас пришлось бы прописывать этот номер. Еще необходимо выбрать датум, в котором заданы используемые координаты (см. 3.2.1) Выбираем первый Pulkovo-1942 (GOST…):
Дальше нас спросят, в какие слои импортировать объекты. Здесь довольно тонкий момент. Надо учитывать, что в каждый слой, который здесь будет выбран, заталкивается КОПИЯ всех объектов, что понятным образом увеличивает результирующий файл. Мы сейчас импортируем слой рек, поэтому их, возможно, имеет смысл затолкать в оба слоя, чтобы они были видны как на мелких масштабах, так и на крупных. Поэтому мы оставим выбранными оба значения Level0 и Level1. Если бы мы импортировали горизонтали, то имело бы смысл их загрузить только в Level0, чтобы они появлялись только на подробном слое в крупных масштабах. Нажимаем Finish и любуемся на результаты своего труда:
Видим, что карта привязана вполне удовлетворительно и векторные объекты вполне прилично ложатся на растровую карту. После этого растровую карту можно отключить с помощью View — Show Attachments, чтобы больше не мешалась. Векторные объекты получились очень угловатые, и, хотя этого не видно, они содержат кучу лишних точек. В следующий раз надо будет после векторизации слоя в Easy Trace, перед его экспортом, выполнить оптимизацию формы полилиний, при которой удалятся лишние точки и сгладится немного форма кривой. А пока не забудем опять зайти в свойства карты и поставить там теперь TypeSet равным Garmin. После этого выберем File — Save As и сохраним карту в так называемом Польском формате (расширение mp).
5.2 Экспорт карты в IMG и загрузка ее в GPS
Осталось всего ничего. Выберем File — Export — Garmin IMG / CGSMapper. Нас просят ввести имя будущего результата — img-файла. Если мы раньше еще не пользовались программой CGSMapper, то после нас попросят ввести путь к исполняемому файлу этой программы, после чего останется только нажать Run и наблюдать как карта преобразуется в img-файл, готовый к заливке в GPS.
После этого закрываем карту (File — Close) и на всякий случай проверим результат работы. Нажмем опять File — Open и выберем только что созданный img-файл. После этого нажмем File — Add и загрузим какие-нибудь треки с того района. Нормально накладываются друг на друга? Чудесно.
Полученный img-файл готов к заливке в GPS. Сама заливка производится с помощью программы SendMap. Сама программа имеет текстовый интерфейс и работает из командной строки, поэтому удобнее пользоваться графической программой-оболочкой к ней, которая называется img2gps. Запускаем эту программу. Нажимаем на большую кнопку «Load Folder» и выбираем тот img-файл, который хотим залить. При этом в списке оказываются все файлы из той директории.
Еще один момент здесь стоит упоминания. Дело в том, что при заливании карты в GPS стираются безвозвратно все карты, которые были загружены ранее. Именно поэтому удобно иметь некую директорию, в которой лежат все карты, которые в данный момент хочется иметь в GPS. Если нужно залить какую-то новую карту, то сложим ее в директорию Load Folder и зальем вместе со всеми остальными, если мы хотим, чтобы они остались в GPS с новой картой.
Итак, выбираем нужные карты, выбираем интерфейс доступа и скорость работы порта (в моем случае это USB, для которого скорость не задается — кстати, работа с USB не поддерживается старыми версиями программы SendMap, которые работают только с COM-портом. Вроде бы нужна версия 2.0 и выше), и нажимаем большую кнопку Upload to GPS.
Все, карта залита. Складываем рюкзак, добавив туда на всякий случай бумажную карту и обычный компас, и идем пить чай в оставшееся время до электрички.
9. Ссылки
[1] http://skitalets.ru/maps/2005/topogr_cart/index.htm — ссылка на статью на Скитальце — «Топографические карты, измерения и построения на них». Военная статья.
[2] http://skitalets.ru/maps/nomen/nom_kart.htm — ссылка на статью на Скитальце — «Номенклатура топографических карт». Александр Нестеров (Рига).
[3] http://www.southural.ru/experience/107.html — ссылка на статью «Векторизация и загрузка карт в GPS». Безруков Андрей.
[4] http://bspu.ab.ru/Department/WMiP/Metod_material/comb/dictonary/chainic.html — ссылка на статью про основные принципы алгоритмизации.
[5] http://www.southural.ru/experience/200.html — ссылка на статью «Конвертирование карт для загрузки в GPS» про преобразование векторных карт из экзотических форматов. Макеев Григорий.
[6] http://ne-grusti.narod.ru/Glossary/datums.html , http://ne-grusti.narod.ru/Glossary/ellipsoid-geoid.html — Немного информации по датумам. Григорий Морозов
[7] http://www.dataplus.ru/support/ProjUtility/Datum.htm — Геодезические датумы, по статье Яцека Гродецки в журнале Imaging notes
10. Текущие ссылки на используемые программы.
Что есть, то есть:
[1] Easy Trace 7.9 — 18,5мб — ссылки нет, ищите как хотите
[2] Easy Trace 7.5 руководство пользователя на русском языке — 2,2мб — ссылки пока нет
[4] OziExplorer — Официальный сайт с незарегистрированной версией 3.95.4 : www.oziexplorer.com, я пользовался версией 3.95.4i, которая кроме всего прочего поддерживает USB-интерфейс взаимодействия с GPS. Зарегистрированные версии лежат везде, гугл вам в помощь
[5] GPSMapEdit — Официальный сайт с незарегистрированной версией: www.geopainting.com/ru/index.html.
[6] SendMap20 и img2gps — homepage.ntworld.com/mdipol/img2gps
11. Благодарности
Статья является не результатом труда одного человека, а накопленным опытом многих людей, интересующихся теорией и практикой использования различных видов GPS, от природных до GPS фирмы Garmin. В частности, особую благодарность редакция выражает:
1. Леониду Смирнову (ikar.ufanet.ru) за обучение основам Easy Trace, разъяснение сущности Пулково-1942 и предоставление софта
2. Серверу skitalets.ru, потому что именно оттуда взяты теоретические аксепты
3. Всем разным людям, которые просили меня помочь научиться векторизовывать карты, потому что без них я бы не взялся за статью
4. Безрукову Андрею за статью [3], самый популярный ресурс на нашем сайте
5. Константину Галичскому за программу GPSMapEdit и помощь с датутами и прочими координатами
Внимание! Исходя из печального опыта статьи http://www.southural.ru/experience/107.html, комментарии к данной статье будут периодически очищаться от малозначащих постов типа «где найти кряк к Easy Trace». Приветствуются комментарии и обсуждения по сути проблемы векторизации карт.
Последнее изменение: 05.12.2005
-
Григорий Степанов
- Easy Trace – эксперт
- Сообщения: 329
- Зарегистрирован: 03 сен 2009, 11:13
- Репутация: 64
- Откуда: Россия, г.Рязань
- Контактная информация:
Руководство пользователя Easy Trace Pro 9.1
Руководство пользователя. Часть 1.
содержит обзор рабочей среды векторизатора, рекомендации по созданию и настройке нового проекта, общие принципы автоматической векторизации.
Руководство пользователя. Часть 2.
детально рассматривает средства автоматической векторизации, описывает инструменты и технологии подготовки растров к векторизации, построение топологически корректной модели данных, особенности оцифровки рельефа, обмен данными с ГИС и, отдельно, подготовка данных для ГИС «Карта» (КБ ПАНОРАМА).
-
trace98
- Интересующийся
- Сообщения: 28
- Зарегистрирован: 15 янв 2010, 11:00
- Репутация: 1
Re: Руководство пользователя Easy Trace Pro 9.1
Сообщение
trace98 » 12 май 2011, 14:58
Скачать Easy Trace Pro 9.1 можно здесь
-
trace98
- Интересующийся
- Сообщения: 28
- Зарегистрирован: 15 янв 2010, 11:00
- Репутация: 1
Re: Руководство пользователя Easy Trace Pro 9.1
Сообщение
trace98 » 13 май 2011, 09:52
В настоящий момент выполняется исправление критической ошибки в программе. Дистрибутив недоступен для скачивания. Приносим свои извинения. Исправленная версия программы появится в ближайшем будущем.
Update: доступна работоспособная версия.