Раз попалась мне в руки Garmin eTrex Vista, раз мы идем с ней в поход в район Прибайкалья и раз у нее целых 24 мегабайта памяти, то возникает желание загрузить в приемник карту тех мест, куда мы пойдем, и желательно физическую. Но, как и следовало ожидать, таких карт в природе не существует, а существует только растровая двухкилометровка из альбома Прибайкалье. Вывод неутешительный, будем пытаться векторизовать карту самостоятельно, лишний experience никогда не помешает. Наш маршрут проходит полностью по листу с номером 72 альбома Прибайкалье или по листу 19 альбома Хамар-Дабан, что одно и тоже, значит, его я и буду пытаться погрузить в GPS. В этой статейке я опишу, как я векторизовал карту, и что в результате получилось. Не претендую на открытие Америки, тем более на то, что нашел наиболее простой и лучший способ векторизации карт для Garmin, но главное - он работает. И так начнем.
Построение карты в MapInfo заключается. Использование для создания карт файлов в формате. Мастер создания карт в MapInfo Pro и удобные настройки. Сохранение окна карты в формат GeoTIFF.
Буду предполагать, что читатель - полный чайник во всей этой тематике, то есть ровно на том этапе, с которого я начал. Система координат и привязка карты Оказывается, в приемнике Гармин основная система координат - WGS84, то есть импорт и экспорт всех точек и карт происходит в этой системе координат. А карта, которую я векторизую, дана в системе Пулково - 1942. Отсюда начинается первая пачка мучений.
Чтобы во всем разобраться и убедиться, что нет ошибок, сначала надо попытаться привязать карту в OziExplorer. Я пользуюсь OZI версией 3.95.3, которую можно скачать на родном сайте. Поройтесь, в сети обязательно найдутся краки. Устанавливаем в любое удобное место, запускаем и пытаемся привязать карту. Возможны три варианта: 1. На карте есть градусная сетка.
Самый простой вариант, разберетесь сами. На карте есть километровая сетка, но нет градусной. Это как раз мой случай. На карте нет ни той ни другой сетки.
Печальный случай, в этой статье не рассматривается. Моя карта имеет километровую сетку, но не имеет градусной. Что бы ее правильно привязать, надо знать в какой она находится зоне, знать центральный меридиан этой зоны и координаты хотя бы одной точки карты. На мое счастье, половина работы по привязке карты уже сделана: на сайте узнал, что центральный меридиан для этой зоны 105 градусов, что для узла сетки в левом верхнем углу рядом с мягким знаком от слова 'Гань' координаты (468, 5704).
Запускаем Ози, заходим File/Load and calibrate map, выбираем картинку и видим такой диалог: В Map Datum выбираем Пулково 1942, в Map Projection выбираем Transverse Mercator, при этом выскакивает окно с настройками проекции: Давайте в вкратце разберемся, что это за цифры. 105 - это центральный меридиан нашей зоны.
Ставим E потому что это восточная часть полушария. Scale Factor по всей видимости некое масштабирование, почему оно равно 1, не знаю. А вот 500000 - это смещение вдоль оси X.
Оно означает, что в точке лежащей на центральном меридиане ваша координата по X будет равна 500000, а не ноль. Нужно это для того, чтобы по всей зоне координата X была положительная (если бы на центральном меридиане был ноль, то соответственно по одну сторону координаты будут положительные, по другую отрицательные). Сей замечательный факт еще в дальнейшем сыграет свою роль. Теперь открываем закладку Point 1, кликаем курсором мышки в узел сетки на нашей карте, для которого мы знаем вертикальное и горизонтальное смещение и прописываем известные координаты (в метрах): Что бы привязать карту, Ози нужно как минимум 3 точки, для пущей верности надо ввести 4 по углам карты. Для этого надо вычислить их координаты с помощью километровой сетки (между линиями по 4 км).
Не забудем, что при движении направо, координата X увеличивается, а при движении вниз координата Y уменьшается. Потом нажимаем Save и сохраняем файл в озиевском формате.map. Первый тест, который должна пройти ваша привязка - координатные линии, проведенные Ози и их растровые собратья должны максимально совпадать. Для этого включим отображение сетки в Ози: Map/Grod line setup: Еще зайдем в настройки Ози: File/Configuration и на закладке Maps выберем User Grid: Теперь любуемся на наше произведение, если сетки практически совпадают, то почти наверняка все сделано правильно.
Для пущей верности можно попросить у местных координаты каких-нить примечательных точек в формате Long/Lat, вбить их в Ози и посмотреть куда лягут. Если попали куда надо, можно спать спокойно. В моем случае это точки присланные знакомыми из Иркутска Если все сделано правильно, значит мы застрахованы от ошибок при позиционировании карты, когда будем ее векторизовывать. Форматы и программы 1. Программа, в которой больше всего работаешь и собственно векторизуешь карту это R2V.
В ней происходит привязка карты к нужным координатам, полуавтоматическая и ручная прорисовка нужных деталей по слоям и экспорт в файлы ArcView.shp 2. Программа ArcView нужна для того, чтобы открыть файл shp генеренный из R2V и пересохранить в этом же формате. При этом исправляется какой-то глюк в файле, который оставляет после себя R2V, и файл уже можно грузить в MapEdit. Сразу импортировать в MapEdit полученный из R2V файл SHP не получается, потому что отображается только первый элемент, который вы рисовали, а остальные исчезают. Этот глюк удалось обойти только с промежуточным звеном ArcView. MapEdit импортирует shp-файлы, при этом преобразует координаты в систему WGS84. Там же вы выбираете, как будут отрисовываться ваши объекты в приемнике.
Карта сохраняется в польском текстовом формате. Программа cgpsmapper.exe импортирует файл в польском текстовом формате и сохраняет его в формате IMG. Программа SendMap посылает ваш img в приемник. Такой неблизкий путь надо пройти, чтобы увидеть правильнопривязанную карту в вашем Garmin-е.
2.1 Программа R2V и привязка к системе координат Где ее достать в сети, не знаю. Поищите, может найдете.:) Запускаете, заходите File/Open image or project, выбираете вашу картинку, смотрите, любуетесь. Все это вам предстоит прорисовать практически руками.:) Для начала надо привязать карту, поэтому жимаем сюда: и выставляем те же 4 точки, которые выставляли в Ози: Сохраняем точки привязки File/Save control points и получаем файл. Он вам не раз еще пригодится.
Теперь совет, что б не повторять моих ошибок, заведите много слоев с помощью кнопки: и в каждом слое рисуйте объекты определенного типа. Если вы временно не редактируете слой, то закройте его с помощью кнопки Lock/Unlock. Если слой мешается, его можно сделать Off. Чтоб слой было видней на карте, можно выбрать подходящий цвет.
Не буду описывать подробности работы с R2V. К нему прилагается замечательный 30 minutes tutorial, читайте и въезжайте. Возможности R2V мне очень понравились, аккуратная безглючная программа позволяет достаточно быстро просто руками прорисовать все главные горизонтали (у меня на это ушло часа 4 для карты Хамар-Дабана, чего говорить о Южном Урале, где горизонталей гораздо меньше).
А что касается рек, то их можно векторизовать практически в автоматическом режиме, если перед этим поколдовать в Photoshop-е чтоб кроме рек на карте ничего не осталось. К сожалению, горизонтали так вычленить не удалось отчасти, потому что исходный растр был не очень хорошего качества, отчасти потому что их слишком много и они слишком часто и сам-то не всегда разберешься, какая горизонталь куда идет. Если вы, как и я решили ручками обвести все основные горизонтали, делайте это сразу аккуратно, а то потом будете долго и упорно поправлять передвигая узловые точки туда, где им следует быть.
Я в R2V обвел все основные горизонтали, часть не основных в том районе, куда мы собираемся идти, все реки, все дороги, поставил станции и мосты. По идее можно всем объектам дать название, оно будет отображаться в приемнике, когда наведете на него курсор, но мне было лень. В R2V можно прорисовать и экспортировать точечные и линейные объекты (точечные - это, например, станции, а линейные - реки). Для этого они, разумеется, должны быть в разных слоях. А вот площадные объекты, такие как озера, экспортировать не удалось, хотя MapEdit понимает такие шейпы и умеет их импортировать. Я нашел такой выход.
Прорисовал форму озер в R2V, открыл их в ArcView, Создал там новую тему и поверх первой повторил только уже как полигоны (они даже автоматически закрашиваются). Первую тему просто забыл, а вторую (которую создал в ArcView) экспортнул в SHP и потом уже грузанул в MapEdit. Тогда озера выглядят на карте озерами. Вот как выглядят мои художества в R2V, если отключить показ карты. Желтые - это вспомогательные горизонтали, остальное это основные горизонтали и реки. В левом верхнем углу часть ЛЭП-ы. Вот как это выглядит поверх карты: После того, как вы достаточно нарисовались, можно экспортировать результаты своего труда в файлы SHP.
Это надо делать отдельно по каждому слою, для этого надо отключить все слои кроме одного и нажать File/Export Vector. Выбрать тип SHP, и в возникшем диалоге ввести так: Если вы экспортируете точечный слой (содержащий точечные объекты) выберите Points. Кроме того, в R2V не забывайте сохранять проект.
Если что, в проект можно добавить шейп, пользуясь меню File/Import geo-coded vector, где надо указать точно те настройки, которые вы выставляли, когда экспортировали SHP. 2.2 ArcView, пересохранение SHP и прорисовка площадных объектов. Как уже говорилось, в MapEdit не получается загрузить полученные шейпы по какой-то странной причине. Если попытаться, вы там увидите только первую линию или только первую точку. Может есть другой способ побороть этот глюк, но я использовал ArcView версии 3.2. Программа весьма ревниво охраняется Ersi, и просто так из сети скачать ее вам не удастся. Идите на Горбушку.:) 1.
Создайте новый проект. Создайте новый вид. Зайдите Вид/Добавить тему (у меня русифицированная версия), программа предложит выбрать шейп: Вы увидите нечто подобное: Значит, все получилось. Заходим Тема/Преобразовать в шейп-файл и пересохраняем в другой шейп. Если вы хотите прорисовать озера, как я уже говорил выше, создайте новую тему при этом выберите и рисуйте на здоровье.
Потом так же сохраняете. 2.3 MapEdit, преобразование системы координат и сбор всех слоев вместе. MapEdit - еще одна милая программа, с которой нам предстоит работать. Она легко доступна через интернет. Устанавливаем, запускаем, выбираем File/Import/ERSI Shape.shp. Можно выбрать за раз все ваши шейпы, сколько их там, и программа по очереди для каждой запустит мастера в зависимости от типа импортируемого шейпа.
Импорт состоит из нескольких этапов: 1. Выбираем символ, каким будут отображаться объекты вашего шейпа. Если это точечные объекты, будут предложены точечные символы, если это линии, будет предложен перечень линейных объектов, если это, например, озера, будут предложены площадные объекты: 2. Выбираем подписи объектов.
Я обычно ничего не выбираю, чтоб потом не любоваться на нолики. Выбираем систему координат, в которой представлен наш шейп: Тут начинаются пре-вра-ще-ния. Как я смог догадаться, ума не приложу, наверное жена у меня - ничего себе.:) Товарищ MapEdit почему-то предлагает работать с системой координат Pulkovo 1942 года отлично от OziExplorer. А именно тут указывается не смещение относительно центрального меридиана и не центральный меридиан, а меридиан, от которого начинается отсчет, ну или что-то типа того. Способ задания преобразования указанный на скриншоте оказался успешным, хоть я не до конца понимаю внутреннее содержание фокуса. Кто знает разгадку, поделитесь с общественностью. В последнем окне диалога надо выбрать некий уровень, о котором читайте ниже, и нажать ОК.
Потом переходите к следующему шейпу. По мере загрузке шейпов, они будут у вас отображаться на карте и вы можете любоваться своими художествами, по крайней мере мой конечный результат меня очень обрадовал: Теперь об уровнях. Зайдите File/Map properties. Там на закладке Levels мы видим: Все шейпы вы загружали в уровень 0, это означает, что они будут отображаться при масштабе карты крупнее чем 1.2 км, то есть если в приемнике вы захотите уменьшить масштаб, все ваши художества пропадут, и вам придется наблюдать карту только с масштабом 500 метров и крупнее. MapEdit нам предлагал загружать шейпы только в один уровень с номером 0, хотя на самом деле в пустой карте их по умолчанию два.
Дело в том, что в последний уровень нам объекты добавлять не предлагают. Поэтому на самом деле надо было сначала добавить еще уровень 1.2 - 3 км (а можно и еще несколько), и при загрузке шейпов выбрать все эти уровни, и карта у вас будет показываться при более мелких масштабах. Но тут такая странная вещь, перед тем, как не загрузишь хоть один шейп, никак не удается добавлять новые уровни. Так что сначала загружаем любой не самый важный шейп, потом добавляем нужное кол-во уровней, потом загружаем оставшиеся шейпы в добавленые уровни.
Такая вот бодяга. Кроме того, в списке уровней следите, чтобы строго соблюдалась последовательность по возрастающей, иначе не удастся экспортировать карту в формат IMG. Успешным оказался такой способ задания зумовых уровней: Все наши старания сохраняем в польском текстовом формате и радуемся, потому что мучений осталось совсем не много.
2.4 cGPSMapper, из польского текстового формата в IMG. Программка cGPSMapper тоже лихо распространяется через интернет, скачиваем, разворачиваем архив куда нравится. Параметры ей можно передавать через командную строку, а можно сделать еще проще. В MapEdit нажимаем File/Export/cGPSMapper, выбираем путь к программе, нажимаем ок и ждем, пока она конвертирует. Потом рядом с cGPSMapper видим появившийся файл img.
2.4 SendMap, IMG - Garmin. Sendmap свободно распространяется в интернете.
Корпиуем IMG в папку с SendMаp, в командной строке пишем: SendMap COM2 -s0000.IMG Смысл этих параметров наверное ясен. Первое - это компорт к которому подключен у вас Гармин, второе - это скорость порта (можно поставить меньше), третье это имя загружаемого файла. Смотрим, что получилось в Гармине. Собственно, что вы нарисовали, то у вас и получилось.:) Если результат радует, идем пить чай.
Не стесняйтесь делиться своими картами с другими, чтоб люди не делали дважды одну и ту же работу.:) 3 Напоследок несколько файлов. По поводу векторизаторов. Есть MapEdit3.5 (не путать с мапедитом для ЖПС), делает все тоже самое что и изитрейс(прямой конкурент), но он защищен ключем на LPT-порте! Если есть умельцы отучить от ключа стучитесь в почту. Все таки с картами у нас туговато встране и пока одиночки не векторизуют все секретные и не секретные масштабы топоснов, ни чего не сдвинется. Смешно сказать.
Они там уже звездочки у нас на паганох считают из космоса амы карты образца 70-ти лохматого года не можем легально использовать. Так что озиексплорер форрева:). Делюсь опытом. Оказывавается, использовать треки для редактирования карт в GPSMap Edit очень просто: из FileAdd загружается файл с треками поверх ранее загруженной карты, далее - одно удовольствие. Единственная особенность: перед сохранением результатов редактирования лучше свои треки выгрузить из памяти, иначе они останутся как в 'польском' формате, так и в результирующем.img после конвертации через cgpsmaper. Для этого надо в режиме 'Select object' выбрать мышкой любой трек и на правой кнопке Detach file или просто нажать Del. Закачивать несколько карт в Legenda можно и из MapSource: открыть закладку 'Map', нажать кнопку 'Map Tool' и кликнуть мышкой по соответствующей открытой в основном окне карте - ее имя появится списке карт в окне закладки.
При повторном клике имя исчезает из списка. Закачиваются в навигатор все карты по этому списку.
При попытке выкачать карты из навигатора в файл выдается только их список. Если список урезать (клик по имени, Del) и закачивать меньшее число карт, чем было в навигаторе, то в нем остается только это, т.е. Меньшее, количество, например, одна карта. При переезде в существенно новые места можно легко заменять набор карт в навигаторе.