Конспект занятия по рисованию векторных карт

Конспект занятия по рисованию векторных карт

Здесь описывается один из способов нарисовать векторную карту для навигаторов Garmin.

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

При создании карты будут необходимы следующие программы:
GpsMapEdit (и его модификацию от Михаила Сотина, GpsMapEditMA) для работы с векторными данными,
OziExplorer для растровых сканированных карт,
MapBuilder для получения склеенных спутниковых снимков с Google Maps,
cgpsmapper & sendmap для окончательного преобразования карты в формат Garmin и загрузки её в GPS.

GpsMapEdit: http://www.geopainting.com/ru/
GpsMapEditMA: http://michus.h12.ru/files/GPSMapEdit_ma_1030_3_01.rar
Cgpsmapper: http://www.cgpsmapper.com/download2/FreeSetup.exe
Sendmap: http://www.cgpsmapper.com/download/sendmap20.zip

  1. Предварительный этап
  2. Процесс рисования карты определяется тем, какие географические данные нам доступны. Мне известны следующие источники:

    А. Спутниковая карта высот, полученная в результате спутниковой съёмки SRTM,
    Б. Существующие векторные карты низкого разрешения,
    В. Растровые карты и спутниковые снимки.

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

    Вначале для выбранного района загружаются спутниковые карты высот и по ним создаются линии горизонталей, затем к ним добавляется "наполнение" (т.е. реки, ледники, дороги, вершины и пр.) из существующих карт низкого разрешения, затем – при необходимости – отрисовывается наполнение по растровым картам и спутниковым снимкам.

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

    Рассмотрим каждый из шагов детальнее.

  3. Создание горизонталей по SRTM .
  4. Вначале примерно определи границы будущей карты, с точностью до градуса. Это можно сделать на глазок, по карте Генерального Штаба.

    Предположим, мы поняли, что наша карта полностью умещается в 35 северной широты и 50 и 51 градусах восточной долготы. Теперь нужно получитиь карту высот для этого диапазона координат с сервера NASA.

    Заходим ftp-клиентом по адресу http://dds.cr.usgs.gov/srtm/version2/

    В папках SRTM1, SRTM3, SRTM30 находятся данные высот. Конкретно, нам нужна папка SRTM3 – в ней данные по всему миру, снятые с разрешением в 3 угловые секунды.

    Данные высоты для каждого градуса хранятся в отдельном файле, с названием, в котором зашифрованы координаты этого градуса. Для нашей карты нужны файлы N35E050.hgt.zip и N35E051.hgt.zip.

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

    Программа запускается из командной строки и принимает имя файла с исходными данными как параметр. В нашем случае нужно выполнить srtm_interp N35E050.hgt и srtm_interp N35E051.hgt

    (Есть и другой способ получить файлы без дырок — например, на сайте CGIAR по адресу http://srtm.csi.cgiar.org/SELECTION/inputCoord.asp можно поискать более аккуратно отреставрированные высоты)

    Открываем исправленные файлы в программе GpsMapEditMA - эта модификация GpsMapEdit от Михаила Сотина умеет строить изолинии высот. Загруженные высоты отображаются как прямоугольные градиентные картинки, каждый из цветов соответствует какой-то своей высоте.

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

    Начертим область отсечения, внутри которой останутся построенные горизонтали. Для этого щелкаем инструмент "Разрезание карты"

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

    Построим основные горизонтали. Щелкнуть Инструменты→Выбор Объектов (S), затем, последовательно нажимая правой кнопкой на градиентных прямоугольниках высот, выбираем пункт "Создать изолинии", выбираем "сечение представляет" Major Land Contour (т.е. "основная горизонталь") и промежуток – 200м.

    Щелкаем. Далее, выбираем только Level0 (вообще сейчас только он должен быть доступен).

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

    Теперь выбираем все построенные горизонтали (Ctrl+A) и удаляем их. Аналогично строим промежуточные горизонтали, выбирая при построении тип линии Minor Land Contour и промежуток 40м. Также как и раньше, отрезаем горизонтали и сохраняем файл (minor.mp).

    Разведение горизонталей по уровням детализации будет дальше, в п.7.

  5. Использование данных из векторных карт низкого разрешения
  6. Находим существующую карту. Это может быть недорисованная карта, начатая каким-нибудь энтузиастом, карта автомобильных дорог, трекинговая карта и т.д. Кроме обычного поиска через Google, существует база данных, подыскивающая карты по заданным географическим координатам – gpsmapsearch.com.

    Из найденных карт нужно удалить горизонтали (если они там есть). Загружаем карту в GpsMapEdit, выбираем Edit→Select→By Type, отмечаем типы линий Intermediate Land Contour, Major Land Contour, Minor Land Contour, и, подтвердив выбор, удаляем. Теперь на карте осталось всё, что не является изолиниями. Сохраняем результат в польском формате (.MP).

  7. Отрисовка карты по растровым изображениям
  8. Если всего вышеперечисленного оказалось недостаточно, можно порисовать вручную, пользуясь привязанной в OziExplorer растровой картой. Такая карта состоит из двух файлов — файла с изображением (напр., m-37-090.png) и файла с привязкой (напр., m-37-090.map).

    Если есть только картинка с отсканированной картой, то необходимо её "привязать", т.е. описать в OziExplorer соответствие между картинкой с картой и географическими координатами (как это делать: http://www.sibir.3dn.ru/publ/14-1-0-155).

    Получив привязанную карту, загужаем в GpsMapEdit файл с расширением ".map" - карта становится подложкой, поверх которой можно проводить векторные линии; загруженная карта никак не влияет на векторный результат и используется только как "коза", которую обрисовывают целиком вручную.

    С точки зрения рисовальщика (картографа: ), векторная карта для Garmin состоит из точек, линий и полигонов. Точками представляются все объекты, чей линейный размер нас не интересует — вершины, родники, седловины перевалов и пр.. Линиями представляются дороги, тропки, реки, горизонтали; полигонами — леса, ледники, моря и т.п. объекты с существенной площадью. При отображении карты gps-навигатором (и GpsMapEdit’ом) точки располагаются поверх линий, а линии — поверх полигонов.

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

    Мне кажется, что для рисования карты совершенно необходимо запомнить следующие быстрые клавиши:

    S – режим "выбора", в котором можно двигать векторные объекты и менять их свойства
    D – режим перетягивания, скроллинга карты
    A – создание точечных объектов
    B – создание линий
    F – создание полигонов
    E – включить/выключить отображение "козы"
    T – включить/выключить полупрозрачное отображение полигонов.

    Подробно рисование в GpsMapEdit описано тут: http://freemaps.ru/lessons/less08.html

    Кроме обычных растровых карт (например, Генштабовских) в качестве "козы" можно использовать карты с Google Maps. Существует программа MapBuilder, которая скачивает элементы карты с сервера Google, склеивает их и создает файл привязки (.map). Необходимо помнить, что размер растровой картинки, которая может быть загружена в GpsMapEdit, ограничен размером свободной видеопамяти, поэтому при склеивании фрагментов в MapBuilder’е целесообразно сразу прикидывать размер получающейся карты (он пишется в диалоговом окне подтверждения сохранения).

  9. Сведение в одну карту и компиляция в гарминовский формат
  10. Теперь осталось свести воедино все, что мы отрисовали.

    Начинаем сведение с горизонталей. Загружаем файл с основными горизонталями (проведенными через 200м). Прежде чем добавлять промежуточные, необходимо настроить уровни детализации. Уровни детализации определяют, какие наборы векторных данных будут отображаться при различных масштабах (увеличениях) в навигаторе. Настраиваются уровни во вкладке File→Map Properties→Levels. Здесь показывается на 1 уровень больше, чем доступно для заполнения (последний, виртуальный уровень всегда пустой). При составлении уровней необходимо помнить, что они должны быть расположены по возрастающей, т.е. "MapSource Zoom" и "Gps Zoom" должны увеличиваться при увеличении номера уровня.

    Для наших целей достаточно двух уровней (т.е. во вкладке будет отображаться два плюс один виртуальный). Сейчас на карте один уровень (нулевой). Выбираем в списке виртуальный первый и нажимаем "Insert Before", теперь стал доступен для наполнения уровень 1 (и добавился уровень 2 виртуальный).

    Нажимаем ОК, и выбираем все горизонтали на карте (т.к. сейчас на карте кроме горизонталей ничего нет, достаточно нажать Ctrl+A и выбрать вообще всё). Проверь — горизонтали сейчас должны находиться на 0 м уровне. Для этого зафиксируй нулевой уровень детализации — нажми кнопку "0" (внизу, в строке состояния, отобразится надпись "*Level0"). Сейчас горизонтали видны. Нажми кнопку "1" — переключись на первый уровень детализации — горизонталей не видно.

    Если всё наоборот и горизонтали видны только на Level1, значит, при добавлении нового уровня (нажатии кнопки "Insert Before" в окне Map Properties) забыли выбрать в списке виртуальный первый уровень и новый уровень добавился перед реально существующим нулевым.

    Теперь сделаем так, чтобы эти горизонтали показывались на 1 м уровне увеличения. Нажимаем правой кнопкой по выбранным горизонталям и в появившемся меню выбираем Modify→Extend all elements up to level... и вводим 1.

    Добавим промежуточные изолинии. File→Add и выбираем файл с промежуточными. В результате этих манипуляций на Zoom Level 1 находятся только основные горизонтали, а на Zoom Level 0 – основные и более детальные.

    Таким же образом, чезер File→Add добавляем остальное наполнение, которое мы предположительно получили из карт низкого разрешения, отрисовали по генштабовке и по GoogleMaps.

    Теперь проводим генерализацю — удаление избыточных, не отображаемых в масштабе, точек полигонов и линий. "Tools→Generalize→Nodes of All Polylines & Polygons."

    Есть ещё два чисто технических шага, которые нужно выполнить для корректного отображения карты в навигаторе: нарисовать большой полигон с типом "Map coverage area (0x4b)", охватывающий всю карту, и прописать в свойствах карты ID (File→Map Properties→Header→ID), наугад, например, 11000204.

    Результирующий большой файл сохраняем в польском формате (.MP), а затем передаем его компилятору гарминовских карт, выбрав "File→Export→Garmin.IMG /cgpsmapper.exe". После компиляции получаем файл с разрешением.img, который уже можно загружать в gps-навигатор.

Причіплений файлРозмір
Программа для коррекции файлов DEM12.1 KБ

Коментарі

upd

Lis's picture

SRTMы теперь находятся по адресу http://dds.cr.usgs.gov/srtm/version2_1/

в будущем они, наверно, будут менять названия папки, поэтому — если что-то не работает — заходить через http://dds.cr.usgs.gov/srtm/ и там искать папку «version...»

А это поправленные файлы?

А это поправленные файлы? Имею в виду, там исправлены скачки высот на вершинах и озерах? Потому что я недавно нашел "почищенные" файлы, написано что SRTM версии 4, а не 3.

не думаю что они там

Lis's picture

не думаю что они там поправили все пробелы.
насчет «версии 3» — в названии папки SRTM3 то не версия, а разрешение — 3 угловые секунды.

За что купил - за то продал

За что купил - за то продал :)
The SRTM data now available from this site has been upgraded to version 4. This latest version represents a significant improvement from previous versions, using new interpolation algorithms and better auxiliary dems. We are confident this is now the highest quality srtm dataset available
http://srtm.csi.cgiar.org/

а. это сайт с

Lis's picture

а. это сайт с интерполированными SRTM, без дырок. только у меня ни разу не вышло там что-то скачать (пробовал пару месяцев назад, и щас ещё раз проверил)

У них глюк в файле для

У них глюк в файле для GoogleEarth, ссылки неправильно проставлены. Я смотрел через Earth имена нужных файлов и напрямую скачивал з фтп-шки ftp://srtm.csi.cgiar.org/SRTM_v41/SRTM_Data_ArcASCII/

ого

Lis's picture

мне бы и в голову такое не пришло. там действительно почищенные файлы с высотами

Варіанти перегляду коментарів

Виберіть бажаний спосіб відображення коментарів і клацніть на "Запам'ятати налаштування", щоб зактивізувати внесені зміни.
Syndicate content