Делаем карту для GPS 1

Делаем карту для GPS, часть 1


Исходно этот текст был написан для журнала Mobi и в конечной своей редакции доступен на их сайте. Тут же я привожу свою авторскую версию. Эта версия имеет один плюс - я планирую ее периодически читать сам и обновлять, дабы информация была актуальной

 

Байка

Давно это было. Вроде как, аж в 1999 году. Середина лета, Южный Урал, лес. Мы в команде из четырех человек путешествуем с небольшим оттенком экстрима по горам. То ли по молодости, то ли по неопытности решили мы совершить марш-бросок на одну из тамошних вершин налегке (в таких случаях, все вещи тщательно прячутся, с собой берется только самое необходимое: немного еды на перекус, фонарик, спички). Как-то вот не дрогнуло сердце, что 40 километров при отсутствии тропы - это несколько крутовато. Не дрогнуло, поэтому пошли. Уже не важно, что мы все-таки побывали на этой вершине... Помнится, не было там дороги, и вынуждены мы были возвращаться другим путем, и темнело уже. Одним словом, заблудились мы на обратном пути.
Еще вспоминается: около полуночи бредем мы друг за другом по болоту. До этого скакали по валунам и прилично вымотались. И уже не волнует, что сами мы промокли до нитки, уже не страшно упасть со всего размаху в это болото,  да сбились со счету, в который раз перепрыгиваем через очередной ручей... А потом была ночь, а ночью был заморозок. Температура упала ниже нуля, идти мы больше не могли, да и непонятно было куда идти. Синими скрюченными пальцами ломали ветки елей и пытались жечь костер. Пробовали спать - не получалось. Так, может быть часок забытья...

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

Суть вопроса

Речь пойдет о создании карт для GPS-навигаторов. Думаю, ни для кого не будет открытием, что с картами в нашей стране всегда было туго. До недавнего времени, даже бумажные карты более-менее подробного масштаба являлись государственной тайной, и достать их было очень трудно. Электронные карты, судя по всему, наследуют эти проблемы. К слову сказать, сами GPS-навигаторы тоже подвергались (а, возможно, и подвергаются до сих пор) всевозможным гонениям.
Так или иначе, карт мало, а для некоторых местностей и нет вовсе. Именно поэтому многие пытаются делать карты самостоятельно, благо, имеется неплохой инструментарий, да и сам процесс не столь сложен, как может показаться.
В создании карт основной трудностью выступает не собственно отрисовка объектов, а, скорее, необходимость теоретической подкованности, нужной для оптимальной работы. Немалую роль играет процесс организации своего труда. При попытке «шапкозакидательства» высока вероятность того, что многочасовая работа потребует трудоемкой и нудной коррекции, или даже пропадет полностью.

Насколько собственноручное создание карты актуально? Думаю, в скором будущем все наладится, и карты можно будет покупать как обычный софт. Уже сейчас есть в продаже достойного качества карты самых востребованных регионов, и их количество увеличивается. Так что, острота вопроса сгладится неизбежно, и, видимо, в ближайшее время. Но карты будут делать и энтузиасты. Почему? Потому что не бывает ничего абсолютно универсального. Будут создаваться карты специализированные, на которых размещаются объекты какого-то определенного типа, например, грибные места, или места богатого улова, или, к примеру, карты с областями повышенной встречаемости летающих тарелок. Скорее всего, будут использоваться универсальные топографические основы для таких трудов, но они не избавят от необходимости знать матчасть (теоретические основы картографии) и уметь пользоваться инструментарием (ряд программ и программок для работы с растровыми и векторными картами).
Да, это удел тех, кого в четвертом классе школы на самом деле интересовала география. Да, это для тех, кто готов знать, что такое датум, альманах и «поперечный Меркатор». Эти люди составляют сообщество увлеченных, которое помогает другим постичь тонкости мастерства.

О чем речь

В начале был Garmin. Он останется и в конце. Товарищи из этой компании уже давно выпускают навигационные приборы с поддержкой карт. Они же и разработали способы описания географических объектов для своих электронных устройств, которые так или иначе были перенесены и на другие платформы. Потом появились наладонники, которые могли соединяться с навигаторами посредством кабелей. В этом случае навигатор мог быть без поддержки карт (стало быть, дешевле), но КПК был обязан иметь программное обеспечение, способное принимать данные от навигатора и визуализировать их. А потом КПК обзавелись встроенными модулями GPS, либо каким-то из более элегантных, чем кабель, вариантов подключения к внешнему устройству (Bluetooth, CF и проч.).
За рубежом было выпущено несколько программ для работы с картами и GPS. Как правило, при покупке прибора или этой программы имелась возможность купить и сами карты. Однако, территория России там не была представлена, и этот софт был нам бесполезен. К тому же, большинство из этих систем имеют закрытые форматы данных, и создать или изменить карту в них - нереально. В пику им появились продукты, лишенные этих проблем, и, по понятным причинам, в нашей стране тоже. Отрадно, что, пожалуй, лучшая программа такого класса - отечественная.
Это GPSMapEdit Константина Галичского (http://geopainting.com/). Она относится к классу Shareware, имеет бесплатную версию с ограниченным функционалом, но, тем не менее, вполне достаточную для того, чтобы творить. Работает на десктопе, написана под windows. Полная версия добавляет некоторые дополнительные возможности. Справедливости ради упомяну, что есть аналог этой программы (есть подозрения, что этот аналог использует код МапЭдита), который работает под Windows Mobile. Это PTGMAP (http://imocoding.com/). C помощью PTGMAP можно править карты прямо в КПК, но это - только для настоящих маньяков.
GPSMapEdit имеет множество инструментов для работы с картами и экспортирует результаты в несколько форматов. Это форматы программ GisRussa и Navitel Navigator очень близкие между собой и существующие во владениях Windows Mobile; форматы Holux и Alan Map, о которых мне мало что известно. C помощью стороннего ПО (cgpsmapper) можно сохранять карты для навигаторов Garmin в формате IMG.
Я пытался найти программу лучше, чем GPSMapEdit, однако, не нашел даже близких по функциональным способностям аналогов, поэтому все, что следует ниже - будет в ключе работы именно с GPSMapEdit.

Что называть картой. Объекты карты

На самом деле, любой владелец навигатора, скорее всего, был автором своей собственной карты. Все умеют ставить путевые точки. А как именовать еще процесс сохранения координат в какой-либо формат, пусть это будет даже внутренний формат Garmin, как не созданием карты? Просто в этом случае карта хранит только объекты одного типа - точки, которые отличаются друг от друга только своей надписью. Но даже такая карта выполняет свои функции - она хранит информацию о расположении различных объектов. Любая карта является проекцией объектов реального мира (дорог, рек, озер, линий электропередач или бензоколонок) на некую плоскость, будь то плоскость листа бумаги или плоскость экрана навигатора.
Любая карта служит одной лишь цели - дать возможность сопоставить расположение в пространстве некоторого объекта (например, владельца навигатора) относительно других объектов (например, дома, где живет владелец). В процессе этого сопоставления появляется возможность получить важную производную информацию (расстояние, которое должен пройти владелец навигатора до своего дома, расчетное время, когда владелец может оказаться дома, вероятность того, успеет ли владелец к ужину или нет и многое другое).
Стало быть, самое главное, что мы можем ожидать от карты - это возможность с максимальной точностью изображать интересующие нас предметы и их координаты, и снабжать их важной для нас сопутствующей информацией.
Сопутствующая информация может быть двух типов. Первое - это текст. Словами можно описать объект в произвольной форме, начиная от «здесь был Вася», до подробнейшего рассказа о переживаниях автора в данной точке пространства в конкретное время. Второй тип сопутствующей информации - это попытка классификации описываемого объекта с помощью значков, цвета и формы. Существуют три основных категории объектов карты:

Точка. Это тип объектов обычно конечного размера, который используется, когда нас интересует только его расположение в пространстве. Точкой можно описать, например, вершину горы, родник, полянку с грибами, кафе с хорошими булочками. Для точки мы можем назначить пиктограмму, которая поможет быстрее увидеть на карте то, что мы ищем. GPSMapEdit и программы, использующие карты, созданные им, определяют большое количество таких значков, в категориях: обозначения населенных пунктов, объекты гидрографии, торговые точки, просто метки, морские объекты и много-много чего еще.
Линия. Линия используется в случаях, когда нас интересует протяженность объекта, но не интересует его ширина. Это может быть дорога, линия электропередач, горизонталь, улица города, небольшая река и т.п. Количество подобных объектов заметно меньше, чем количество возможных точек, но все же вполне достаточное для того, чтобы не перечислять их здесь все. По своей сути, линия - это ряд точек, соединенных прямыми отрезками.
Полигон. Все, что мы не смогли описать точкой или линией описывается полигоном. Полигон - это объект, занимающий определенную площадь. Так изображаются леса, кварталы города, озера, реки, шириной которых мы не можем пренебречь. Количество возможных полигонов еще меньше, чем линий, но их хватит, чтобы изобразить все, что нужно. Полигоны тоже состоят из точек, но эти точки образуют замкнутую линию вдоль периметра всего объекта. По правилам, эти точки не могут образовывать линию, которая пересекается сама с собой.

На первый взгляд покажется странным, но это все возможные варианты. Больше не существует ничего, однако, приведенных элементов вполне достаточно для создания пригодной для эксплуатации карты.
Итак, чтобы изобразить на карте некий объект нам нужно определить, изображать его точкой, линией или полигоном, выбрать из списка тип для него, нанести его с помощью инструментов редактирования в ту область, где он должен быть и сделать подпись, которая окончательно его характеризует.
Эта операция, повторенная множество раз и занимает основное время при подготовке карты.
Уместно сделать одно замечание. Когда мы рисуем на листе бумаги, мы ориентируемся на отступы кисти от края листа или от предыдущих штрихов, используя привычные меры длины для этих отступов - сантиметры, миллиметры или дюймы, когда мы делаем то же самое в фотошопе, мы ориентируемся на пиксели и пункты. А когда мы строим карту, мы используем в качестве координат точек реальные координаты географических объектов - в градусах, минутах и секундах. Именно это помогает навигационной программе расположить точку, только что отмерянную чипом навигации (в этих самых минутах и секундах) на том месте, на котором мы ожидаем ее увидеть. Любая карта должна иметь привязку своих объектов к их настоящим координатам. Бумажные образцы для этого используют координатные и километровые сетки, а электронные - умеют пересчитывать координаты, заданные в координатах точек в пиксели экрана.

Особенности карт для GPS. Форматы карт. Источники информации

Не секрет, что любое изображение на компьютере может быть представлено либо в растровом виде, либо в векторном. Описание различия между этими типами выходит за рамки этой статьи, плюсы и минусы того или иного подхода можно получить из множества других источников.
Карты тоже являются изображениями, и тоже бывают растровые и векторные. В мире растра господствует программа OziExplorer. C ее помощью можно «привязать» точечное изображение, будь то отсканированная бумажная карта или спутниковый снимок, к географическим координатам изображенных на нем объектов. Поскольку растровые карты - один из основных источников данных для нас, умение пользоваться OziExplorer'ом обязательно. Обойтись  без Ozi  можно только в одном случае: если есть возможность заполучить уже «привязанные» карты.
GPSMapEdit создан для работы с векторными картами. Навигаторы Garmin, программы Navitel Navigator и GISRussa тоже используют векторные данные. Причин тому несколько. Во-первых, такие изображения занимают меньше места. Навигаторы имеют определенную предысторию, и в прошлые времена под карты в тех же Garmin'ах отводилось довольно ограниченное пространство, поэтому исходно был выбран более компактный способ хранения данных. Во-вторых, векторные изображения более удобны для масштабирования. Приблизить или уменьшить карту на экране навигатора - привычная манипуляция в дороге. В третьих, немаловажно более простое редактирование векторной карты, при гораздо меньшем риске потери деталей. Справедливости ради нужно сказать, что можно довольно быстро нанести на растровую карту, уже привязанную для Ozi интересующие нас объекты и просто сохранить картинку, но для этого нужно неплохо владеть каким-нибудь пакетом для работы с растром, например, тем же Photoshop'ом. Существует и промежуточный вариант: Ozi позволяет вместе с данными привязки сохранить на карте и точки (в векторном виде), чем активно и пользуются сторонники этой программы.
Итак, если уже понятно, откуда берутся исходные материалы для создания растровых карт, настало время перечислить, чем можно пользоваться при сборке векторной карты в GPSMapEdit.
Те самые растровые данные. Это могут быть привязанные отсканированные карты, спутниковые снимки GoogleMaps и любые другие подобные материалы. GPSMapEdit может открывать такие файлы, и их удобно использовать в качестве «подложки» при отрисовке вектора. Выбрав инструмент создания точки, полилинии или полигона, мы просто обводим контуры растрового материала и получаем его копию в векторном виде. При этом, в точки наших объектов записываются их географические координаты.
Точки и треки, снятые навигатором непосредственно с местности. Большинство приборов позволяют сохранять текущие координаты и передавать их в виде файлов. Эти данные можно загрузить в GPSMapEdit и либо так же, как растр обвести по контуру, либо конвертировать в тот или иной объект. Например, трек, записанный при путешествии по лесу можно трансформировать в объект «тропа» и дать ему подпись «дорога до грибной поляны». Так получается фрагмент карты, который можно использовать для повторения своего маршрута.
Точки, найденные в Интернете, полученные от знакомых в виде числовых координат объектов. Что-то вроде «N49°59.314', E86°28.153' - родник у тропы». По сути, это те же самые точки, снятые навигатором, но они были записаны автором в блокнот, а не в файл. Это могло быть по причине старого навигатора, не поддерживающего такую возможность, либо автор по каким-то причинам больше доверял блокноту. Такие данные тоже можно наносить на карту. Просто ставится точка нужного типа (родник в данном случае) в произвольном месте карты, а потом в свойствах этой точки указываются точные координаты, после чего она встанет на свое законное место.
Данные SRTM. Это материал о высотах поверхности Земли, полученный со спутника. С помощью SRTM можно построить сетку горизонталей для интересующей местности. То, как и зачем это делать - тема для отдельного разговора.
Возможно, существуют и другие пути получения исходного материала, но перечисленные здесь на сегодняшний день - основные. К сожалению, душещипательный рассказ о том, как раздобыть в нашей стране качественную карту местности и привязать ее для OziExplorer с учетом того, что нужно пересчитать датум Пулково-1942 в используемый в GPSMapEdit WGS-84, просто не поместился бы в эту статью, поэтому предлагаю оставить это на другой раз, или попробовать поискать в Интернете.

Слои карты. Детализация карты. Информационная чистота карты.

Да, типичная карта для GPS имеет слои. Появление слоев связано с необходимостью отображать на карте только то, что интересует пользователя. Поясняю. Первый соблазн при создании своей карты - разместить на ней как можно больше информации. Однако не всегда нужно видеть все, что хранит в себе карта. Когда едешь на автомобиле по пригороду, информация о грибных и рыбных местах будет только отвлекать от важного - расположения дорог и населенных пунктов, однако, когда из машины выходишь и направляешься в лес, в область внимания попадают совершенно другое - тропы, болота и поляны, бесполезные автомобилисту.
В этом случае можно использовать две разные карты, но возможность разделения информации на слои в рамках одной карты значительно упрощает жизнь.
Слои друг от друга отделяются по принципу масштаба. То есть, при увеличении или уменьшении карты в навигаторе в зависимости от текущего масштаба мы видим тот или иной слой.
Когда карта создается, мы указываем количество слоев, необходимых для нас, и для каждого слоя задаем его масштаб. Всего доступно около 20 уровней увеличения от масштаба стран и континентов (1200км) до масштаба отдельных деревьев и домов (30м). Количество используемых слоев зависит от назначения карты, и, как правило, лежит в промежутке от 2 до 7.
Чаще всего, расположение объектов по слоям делается автоматически (есть специальные программы для этого). При таком подходе вручную создается самый подробный слой, после чего определяются правила построения последующих слоев. Эти правила описывают, какие объекты первого слоя переходят на вышележащий уровень и какие трансформации эти объекты должны пережить.
Например, на нижнем (самом подробном) слое грунтовая дорога обозначена жирной линией, чтобы отличить ее от «тонкой» тропы. На менее детальном слое грунтовая дорога имеет меньший интерес, чем шоссе и ее жирный вид становится неуместен. В этом случае указываем, что жирность линии при переходе на слой крупного масштаба нужно уменьшить (просто грунтовку обозначаем другим типом полилинии - например, тропой). А чтобы карта на этом слое выглядела чистой, тропы вообще исключаем, как малозначимые элементы. После загрузки такой карты в навигатор, при большом увеличении мы видим, как по тропе мы приходим к грунтовой дороге, где стоит наш автомобиль. Сев в машину, увеличиваем скорость своего движения, и увеличиваем масштаб. При этом исчезают тропы и приобретают другой вид дороги.
Таким образом, слои служат для разделения всех данных карты на уровни детализации. Этому есть аналог в «бумажной» картографии - одна и та же местность там представлена пакетом карт разного масштаба. При этом каждый масштаб имеет свой набор допустимых пиктограмм и свой набор «разрешенных к показу» элементов. Это позволяет быть карте удобочитаемой, то есть, удобной в использовании (быстрее находятся нужные значки и надписи).
Создавая электронную карту, нужно стремиться к такой же лаконичности и чистоте. Не следует размещать на карте те объекты, которые вам не интересны, или не относятся к специфике карты. Важно понять, что карта не должна быть максимально подробной, она должна максимально соответствовать своему предназначению. Система слоев служит для сохранения лаконичности и информационной чистоты карты.

Что дальше?

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

Как сделать свою первую карту - это материал следующей статьи. Кому же не терпится начать, можно порекомендовать воспользоваться поиском информации в Интернете. Рекомендую для старта такие ресурсы, как замечательный сайт «В дорогу!» (http://v-dorogu.narod.ru/), проект «Нарисуй карту» с возможностью пройти курс обучения созданию карт (http://freemaps.gisrussa.ru/), форум на сайте программы Navitel Navigator, где обсуждаются как вопросы эксплуатации навитела, так и вопросы создания карт (http://forum.navitel.ru/). Думаю, для начала достаточно. Эти ресурсы содержат большое количество информации и ссылок на сайты смежной тематики.
Те же, кто после прочтения этой статьи решили, что это не для них и заниматься этой нудной работой они никогда не будут должны быть благодарны мне за сэкономленное время.
Удачи всем!

Комментарии (0)

mem: 1262 total: 11 module: 5 xsl: 3