- Работа с GMT под Windows
-
Работа с GMT под Windows
Generic Mapping Tools (Универсальные картографические инструменты, GMT) – набор программ с открытыми кодами, предназначенных для обработки и отображения двумерной и трёхмерной информации, растеризации, фильтрации и других алгоритмов обработки изображения, а также отрисовки различных картографических проекций.
GMT позволяет создавать карты профессионального качества, которые часто используются в качестве иллюстраций в печатных и электронных изданиях, в том числе в «Википедии».
В данной статье на примере рассматриваются принципы создания географических карт с использованием GMT, а также обсуждаются некоторые особенности работы с Windows-версией пакета.
Содержание
Вводные замечания
В настоящее время (январь 2010 года) существует достаточно полное описание Linux-версии GMT на английском языке, которое можно скачать с сайта Гавайского университета. Дистрибутив Windows-версии GMT[1] включает архив объёмом 15 Мбайт с официальной документацией Linux-версии в форматах PDF и HTML. Эта документация, однако, достаточна бедно иллюстрирована, и большая часть приведённых там примеров далека от чисто картографических задач.
Русскоязычные материалы о GMT фрагментарны. Одна из немногих доступных в Интернете статей[2] касается Linux-версии GMT и не в полном объёме применима для Windows-пользователей.
Установка GMT под Windows
GMT
Установка GMT под Windows не имеет никаких особенностей. Установочные программы скачиваются с сайта Гавайского университета[1]. Дистрибутив содержит:
- Базовую установку GMT (GMT_basic_install.exe) объёмом 17 Мбайт, включающую данные среднего разрешения о береговой линии;
- Данные высокого разрешения о береговой линии (GSHHS_highfull_install.exe) объёмом 37 Мбайт;
- Документация (GMT_pdf_install.exe) объёмом 15 Мбайт.
Три указанных установочных файла запускаются в произвольной последовательности. Программа устанавливается в каталог C:\programs\GMT, никаких дополнительных настроек не требуется. Утилиты командной строки находятся в каталоге C:\programs\GMT\bin. Назначение остальных ключевых каталогов указаны в следующей таблице.
Ключевые каталоги Windows-установки GMT (C:\programs\GMT...)
Подкаталог Пояснения \bin Утилиты командной строки \share\doc\gmt\pdf Документация в PDF-формате \share\doc\gmt\html Документация в HTML-формате. Рекомендуется для первоначального ознакомления, так как обладает более удобными средствами навигации. \share\doc\gmt\examples Примеры работы с GMT. Каждый из 23 примеров содержит командный файл и все необходимые для его работы данные. По окончании работы командного файла формируется графическое изображение в виде доступного для просмотра PostScript-файла. \share\pslib Таблицы кодирования символов для различных алфавитов. Кодировка кириллических символов находится в файле ISO-8859-5.ps. Пути к ключевым каталогам при установке регистрируются в реестре Windows, поэтому при вызове утилит из командного файла указывать полный путь не требуется.
GhostScript и GSView
Выходные данные GMT формируются в виде файлов формата PostScript. Чтобы иметь возможность просматривать изображения и преобразовывать их в другие графические форматы, необходимо установить какую-либо утилиту для просмотра PostScript-файлов. Наиболее популярной утилитой такого рода является бесплатная программа GhostScript, которую можно скачать с сайта разработчика[3].
Для нормального просмотра PostScript-файлов необходимо скачать установить на компьютере две программы: интерпретатор PS-файлов GhostScript и графическую оболочку для их просмотра GSView. Программы устанавливаются без особенностей, дополнительных настроек не требуется. После установки программ PS-файлы просматриваются двойным щелчком мышки.
Цифровая модель рельефа
Для отрисовки физических и топографических карт необходимо иметь данные о высоте рельефа местности. Наиболее популярные бесплатные базы рельефа GLOBE с разрешением 900 м можно скачать с сайта Национального центра геофизических данных[4]. Данные представляют собой 16 файлов объёмом от 6 до 59 Мбайт, каждый из которых охватывает определённую область земной поверхности. Так, например, архив h10g.gz объёмом 28 Мбайт охватывает часть юго-восточной Азии с координатами 90-180° в.д. по долготе и 0-50° с.ш. по широте. В случае, если нет необходимости скачивать данные по большой территории, на той же странице можно оформить заявку на посылку определённого фрагмента файла. Архив будет прислан на указанный адрес электронной почты.
Скачанные файлы необходимо разархивировать (например, архиватором RAR) и поместить в каталог C:\programs\GMT\share\dbase. В находящемся здесь же файле grdraster.info необходимо зарегистрировать эти файлы. В случае, если все указанные 16 файлов были скачаны, файл grdraster.info будет иметь вид:
1 "GLOBE_G" "m" -R-180/-90/50/90 -I0.5m P i 1 0 -500 a10g 2 "GLOBE_G" "m" -R-90/0/50/90 -I0.5m P i 1 0 -500 b10g 3 "GLOBE_G" "m" -R0/90/50/90 -I0.5m P i 1 0 -500 c10g 4 "GLOBE_G" "m" -R90/180/50/90 -I0.5m P i 1 0 -500 d10g 5 "GLOBE_G" "m" -R-180/-90/0/50 -I0.5m P i 1 0 -500 e10g 6 "GLOBE_G" "m" -R-90/0/0/50 -I0.5m P i 1 0 -500 f10g 7 "GLOBE_G" "m" -R0/90/0/50 -I0.5m P i 1 0 -500 g10g 8 "GLOBE_G" "m" -R90/180/0/50 -I0.5m P i 1 0 -500 h10g 9 "GLOBE_G" "m" -R-180/-90/-50/0 -I0.5m P i 1 0 -500 i10g 10 "GLOBE_G" "m" -R-90/0/-50/0 -I0.5m P i 1 0 -500 j10g 11 "GLOBE_G" "m" -R0/90/-50/0 -I0.5m P i 1 0 -500 k10g 12 "GLOBE_G" "m" -R90/180/-50/0 -I0.5m P i 1 0 -500 l10g 13 "GLOBE_G" "m" -R-180/-90/-90/-50 -I0.5m P i 1 0 -500 m10g 14 "GLOBE_G" "m" -R-90/0/-90/-50 -I0.5m P i 1 0 -500 n10g 15 "GLOBE_G" "m" -R0/90/-90/-50 -I0.5m P i 1 0 -500 o10g 16 "GLOBE_G" "m" -R90/180/-90/-50 -I0.5m P i 1 0 -500 p10g
Если какой-то из 16 файлов отсутствует, соответствующая строка должна быть закомментирована символом # в первой позиции. В дальнейшем при формировании изображения рельефа обращение к данным осуществляется по номеру, который стоит в начале строки. Какой конкренный номер стоит в каждой строке - не важно, важно только, чтобы номера не повторялись.
Существует также более подробная информация о рельефе местности: база STRM3 (разрешение 90 м) и база STRM1 (территория США с разрешением 30 м), которые можно скачать с сайта NASA [5].
Например, скачиваем файл N43E132.hgt.zip в котором содержится информация о рельефе земной поверхности в диапазоне широт 43—44° с.ш. и долгот 132—133° в.д. Внтутри находится файл N43E132.hgt объёмом 2,8 Мбайт, где в виде двухбайтовых целых чисел указаны высоты точек на поверхности земли через 3 угловых секунды. Этот файл имеет другой формат по сравнению с файлами проекта GLOBE и при одинаковом покрытии территории примерно в 100 раз больший размер (поскольку разрешение в 10 раз лучше). Этот файл преобразуется в формат GRD, принятый в GMT, следующей командой:
xyz2grd N43E132.hgt -Dm/m/m/1/0/=/= -GN43E132.grd -R132/133/43/44 -I3c -N-9999 -ZTLhw
Значение параметров команды см. далее.
Батиметрическая информация
Для отображения на картах глубины мирового океана, необходимо иметь данные о рельефе морского дна. Эти данные можно скачать с сайта [6].
Поддержка кириллических шрифтов
Чтобы заставить GMT использовать кириллические шрифты, необходимо перед выполнением графических операций установить кодовую таблицу ISO-8955-5. Для этого нужно вызвать утилиту gmtset.exe, поместив в начале командного файла строку
gmtset CHAR_ENCODING ISO-8859-5
Однако использование кодовой таблицы ISO-8859-5 не решает проблему русификации GMT по двум причинам:
- Таблица кодировки символов для ISO-8859-5 без изменений перенесена из Linux-версии программы, где кодировка русских букв отличается от стандартной кириллической Windows-кодировки cp1251. Например, русские буквы А–Я, а–я (без букв Ё, ё) занимают в cp1251 диапазон кодов 192-255, а в ISO-8859-5 – диапазон 176–239, то есть смещены на 16 символов. Буквы E,ё имеют в cp1251 коды 168, 184, а в ISO-8859-5 – 161, 241;
- Ни в исходной кодовой таблице ISO-8859-5, ни в стандартной кодовой таблице cp1251 нет символов /ring и /quotesingle, которыми GMT обозначает градусы и минуты. Поэтому при отрисовке, например, координатной сетки, программа выдаёт предупреждение и вместо вышеуказанных символов ставит пробелы.
Решение этой проблемы состоит в том, чтобы отредактировать файл, в котором записана таблица кодировки:
- Заменить таблицу исходной Linux-версии на стандартную таблицу cp1251;
- Выбрать два каких-нибудь кода, которые в кодировке cp1251 соответствуют не используемым на практике символам и заменить их символами /ring и /quotesingle.
Файлы с кодировочными таблицами лежат в каталоге C:\programs\GMT\share\pslib\. Кодировка по умолчанию находится в файле Standard+.ps, а кодировка ISO-8859-5 – в файле ISO-8859-5.ps. Чтобы сохранить за пакетом GMT многоязычную поддержку, необходимо исправить файл ISO-8859-5.ps. Если же многоязычная поддержка неактуальна, можно исправить файл Standard+.ps. В последнем случае даже не придётся переключать кодовую таблицу командой gmtset, как было показано выше.
Рекомендуемое содержимое файла Standard+.ps следующее (можно скопировать текст с экрана и перенести в файл):
/Standard+_Encoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /tilde /.notdef /ring /quotesingle /quotesinglbase /afii10100 /quotedblbase /ellipsis /dagger /daggerdbl /Euro /perthousand /afii10058 /guilsinglleft /afii10059 /afii10061 /afii10060 /afii10145 /afii10099 /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /afii10106 /guilsinglright /afii10107 /afii10109 /afii10108 /afii10193 /space /afii10062 /afii10110 /afii10057 /currency /afii10050 /brokenbar /section /afii10023 /copyright /afii10053 /guillemotleft /logicalnot /hyphen /registered /afii10056 /degree /plusminus /afii10055 /afii10103 /afii10098 /mu1 /paragraph /periodcentered /afii10071 /afii61352 /afii10101 /guillemotright /afii10105 /afii10054 /afii10102 /afii10104 /afii10017 /afii10018 /afii10019 /afii10020 /afii10021 /afii10022 /afii10024 /afii10025 /afii10026 /afii10027 /afii10028 /afii10029 /afii10030 /afii10031 /afii10032 /afii10033 /afii10034 /afii10035 /afii10036 /afii10037 /afii10038 /afii10039 /afii10040 /afii10041 /afii10042 /afii10043 /afii10044 /afii10045 /afii10046 /afii10047 /afii10048 /afii10049 /afii10065 /afii10066 /afii10067 /afii10068 /afii10069 /afii10070 /afii10072 /afii10073 /afii10074 /afii10075 /afii10076 /afii10077 /afii10078 /afii10079 /afii10080 /afii10081 /afii10082 /afii10083 /afii10084 /afii10085 /afii10086 /afii10087 /afii10088 /afii10089 /afii10090 /afii10091 /afii10092 /afii10093 /afii10094 /afii10095 /afii10096 /afii10097 ] def
Если же заменяется содержимое файла ISO-8859-5.ps, первая строка должна быть следующая:
/ISO-8859-5_Encoding [
Работа с GMT. Пример
Создание изображения рельефа
Прежде чем начать отрисовку карты, необходимо преобразовать цифровую модель рельефа в растровое изображение. Для этого возьмём, например, один из фрагментов базы GLOBAL (а именно – фрагмент Юго-восточной Азии в файле h10g, поскольку мы будем рисовать карту Приморского края). Этот фрагмент скачивается в виде архива h10g.gz, разархивируется архиватором Rar (или другим архиватором, поддерживающим формат gz), помещается (как сказано в разделе «Цифровая модель рельефа») в каталог C:\programs\GMT\share\dbase и регистрируется в файле grdraster.info того же каталога строкой типа:
8 "GLOBE_G" "m" -R90/180/0/50 -I0.5m P i 1 0 -500 h10g
После этого необходимо преобразовать цифровую модель рельефа в растр командой:
grdraster 8 -R90/180/0/50 -Gh.grd
Значение параметров команды grdraster указаны в таблице:
Параметр Пояснение 8 Номер, под которым исходный файл зарегистрирован в файле C:\programs\GMT\share\dbase\grdraster.info. -R90/180/0/50 Область, которую необходимо преобразовать в растр. В данном примере преобразуется область 90–180° в.д., 0–50° с.ш., то есть полный диапазон координат файла h10g. Если в дальнейшем не предполагается создавать карты всей этой территории, то для экономии времени и места на диске можно преобразовать только нужный фрагмент. Например, для карты Приморского края было бы достаточно (с небольшим запасом) -R129/141/42/50. -Gh.grd Имя выходного файла (h.grd). Создание изображения полутеней
Для создания реалистичных физических карт желательно выделять полутенями особенности рельефа поверхности. Это создаёт ощущение освещённости рельефа некоторым виртуальным источником света (солнцем) и впечатление объёмности изображения. Для этого формируется растровое изображение полутеней и при отрисовке карты накладывается на основное изображение рельефа. В качестве исходных данных используется утилита grdgradient и изображение рельефа, сформированное на предыдущем шаге:
grdgradient h.grd -Ne0.3 -A100 -M -Ghi.grd
Значение параметров команды grdgradient указаны в таблице:
Параметр Пояснение h.grd Исходный файл с изображением, по которому формируются полутени. -Ne0.3 Интенсивность полутеней в относительных единицах. В данном случае – 0,3 -A100 Положение виртуального источника света. В данном случае азимут источника 100°, считая по часовой стрелке от севера, то есть почти точно на востоке с отклонением 10° на юго-восток. -M ? -Ghi.grd Имя выходного файла (hi.grd). Палитра рельефа
Палитра рельефа — это файл, в котором задаётся соответствие высоты рельефа и цвета, которым отрисовывается на карте соответствующий участок территории. Ниже приведён пример содержимого палитры. Полагаем, что файл называется mount.cpt:
#file mount.cpt #COLOR_MODEL = RGB # 0 96 185 96 200 16 122 47 200 16 122 47 500 232 215 125 500 232 215 125 1000 161 67 0 1000 161 67 0 1500 130 30 30 1500 130 30 30 2200 110 110 110 N 0 97 71 F 255 0 0 B 0 97 71
Строки 1 и 3 являются комментариями. Во строке 2 (#COLOR_MODEL = RGB) объявляется цветовая модель (RGB). В строках 4—8 задаётся соответствие высот и цветов. Каждая строка имеет формат
Hmin R1 G1 B1 Hmax R2 G2 B2,
где Hmin и Hmax — минимальная и максимальная высоты диапазона; R1, G1, B1, и R2, G2, B2 — соответствующие цвета в формате RGB. Цвета, лежащие посередине между Hmin и Hmax находятся линейной интерполяцией цветов R1G1B1 и R2G2B2.
Строки, начинающиеся с символов B, F, N задают цвета соответственно фона (когда высота точки меньше минимальной заданной высоты), переднего плана (когда высота точки больше максимальной заданной высоты) и точек, для которых высота рельефа неизвестна.
В строках 4—8 числа разделены между собой символами табуляции, в остальных строках — пробелами. Количество строк, задающих диапазоны высот, неограничено. Диапазоны высот должны примыкать друг к другу, т.е. Hmax одной из строчек должна быть равна Hmin другой строки (кроме минимальной Hmin и максимальной Hmax). Если диапазоны высот в разных строчках образуют разрывы или пересекаются, это считается ошибкой.
Отрисовка рельефа
Для отрисовки рельефа вызываем утилиту grdimage:
grdimage h.grd -Ihi.grd -R130/42/140.8/49.8r -JB135/46/42/50/6i -Cmount.cpt -K > map.ps
Параметр Пояснение h.grd Исходный файл с изображением рельефа. -Ihi.grd Исходный файл с изображением полутеней (hi.grd). -R130/42/140.8/49.8r Координаты отображаемой территории. -JB135/46/42/50/6i Вид и параметры картографической проекции. -Cmount.cpt Файл с описанием цветовой палитры для отображения рельефа. -K Ключ, означающий, что формирование выходного файла данной командой не завершено. > map.ps Перенаправление выходного потока со стандартного устройства вывода (монитора) в файл map.ps. Отрисовка водных объектов, границ и координатной сетки
pscoast -R -J -S151/190/255 -O -K -Df -B2g1 -W0.25p,royalblue -Na/1p,white -Ia/0.25p,blue -Lf141.7/-43.5/-43/200 >> map.ps
Параметр Пояснение -R Координаты отображаемой территории. Поскольку численные данные не указаны, берутся данные из параметра -R предыдущей команды. -J Вид и параметры картографической проекции. Поскольку численные данные не указаны, берутся данные из параметра -R предыдущей команды. -R130/42/140.8/49.8r Координаты отображаемой территории. -JB135/46/42/50/6i Вид и параметры картографической проекции. -S151/190/255 Цвет отрисовки (R/G/B) водных бассейнов. -K Ключ, означающий, что формирование выходного файла данной командой не завершено. -O Ключ, означающий, что команда является продолжением предыдущей команды. -Df Качество отрисовки границ водных бассейнов. -B2g1 Отрисовка координат и координатной сетки. Численные значения координат проставляются через 2 градуса, координатные линии - через 1 градус. -W0.25p,royalblue Линия для отрисовки границ водных бассейнов. Толщина линии 0,25, цвет – тёмно-голубой (royalblue). -Na/1p,white Линия для отрисовки границ. Толщина линии 1, цвет – белый (white). Символ «а» означает, что линия относится ко всем типам границ. -Ia/0.25p,blue Линия для отрисовки рек. Lf141.7/-43.5/-43/200 Отображение масштабной линейки. >> map.ps Выходные данные программы дописываются в конец файла map.ps. (Продолжение следует)
Ссылки
Примечания
- ↑ 1 2 GMT for Windows . Дистрибутив Windows-версии GMT на сайте Гавайского университета.
- ↑ Кондратьев М. Начало работы с GMT (на сайте GIS-Lab).
- ↑ GhostScript. Официальный сайт разработчика.
- ↑ GLOBE: Download the Elevation Tiles.
- ↑ Shuttle Radar Topographry Mission. Топографические данные, полученные в проекте SRTM.
- ↑ ds759.3 Data Access.
Wikimedia Foundation. 2010.