Menu

скачать

Generic Mapping Tools (Универсальные картографические инструменты, GMT) набор программ с открытыми кодами, предназначенных для обработки и отображения двумерной и трёхмерной информации, растеризации, фильтрации и других алгоритмов обработки изображения, а также отрисовки различных картографических проекций.

GMT позволяет создавать карты профессионального качества, которые часто используются в качестве иллюстраций в печатных и электронных изданиях, в том числе в Википедии.

В данной статье на примере рассматриваются принципы создания географических карт с использованием GMT, а также обсуждаются некоторые особенности работы с Windows-версией пакета.

Вводные замечания

В настоящее время (январь 2010 года) существует достаточно полное описание Linux-версии GMT на английском языке, которое можно скачать с сайта Гавайского университета. Дистрибутив Windows-версии GMT включает архив объёмом 15 Мбайт с официальной документацией Linux-версии в форматах PDF и HTML. Эта документация, однако, достаточна бедно иллюстрирована, и большая часть приведённых там примеров далека от чисто картографических задач.

Русскоязычные материалы о GMT фрагментарны. Одна из немногих доступных в Интернете статей касается Linux-версии GMT и не в полном объёме применима для Windows-пользователей.

Установка GMT под Windows

Установка GMT под Windows не имеет никаких особенностей. Установочные программы скачиваются с сайта Гавайского университета. Дистрибутив содержит:

  • Базовую установку 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\GMT0Щ

Пути к ключевым каталогам при установке регистрируются в реестре Windows, поэтому при вызове утилит из командного файла указывать полный путь не требуется.

Выходные данные GMT формируются в виде файлов формата PostScript. Чтобы иметь возможность просматривать изображения и преобразовывать их в другие графические форматы, необходимо установить какую-либо утилиту для просмотра PostScript-файлов. Наиболее популярной утилитой такого рода является бесплатная программа GhostScript, которую можно скачать с сайта разработчика.

Для нормального просмотра PostScript-файлов необходимо скачать установить на компьютере две программы: интерпретатор PS-файлов GhostScript и графическую оболочку для их просмотра GSView. Программы устанавливаются без особенностей, дополнительных настроек не требуется. После установки программ PS-файлы просматриваются двойным щелчком мышки.

Для отрисовки физических и топографических карт необходимо иметь данные о высоте рельефа местности. Наиболее популярные бесплатные базы рельефа GLOBE с разрешением 900 м можно скачать с сайта Национального центра геофизических данных. Данные представляют собой 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 10g
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 .

Например, скачиваем файл N43E132.hgt.zip в котором содержится информация о рельефе земной поверхности в диапазоне широт 430d4` с.ш. и долгот 1320a33` в.д. Внтутри находится файл 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

Значение параметров команды см. далее.

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

Чтобы заставить GMT использовать кириллические шрифты, необходимо перед выполнением графических операций установить кодовую таблицу ISO-8955-5. Для этого нужно вызвать утилиту gmtset.exe, поместив в начале командного файла строку

 gmtset CHAR_ENCODING ISO-8859-5

Однако использование кодовой таблицы ISO-8859-5 не решает проблему русификации GMT по двум причинам:

  • Таблица кодировки символов для ISO-8859-5 без изменений перенесена из Linux-версии программы, где кодировка русских букв отличается от стандартной кириллической Windows-кодировки cp1251. Например, русские буквы А-Я, а-я (без букв , ё) занимают в cp1251 диапазон кодов 1920b55, а в ISO-8859-5 диапазон 1760b39, то есть смещены на 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/asteris/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	/bracetleft/bacslash/bracetright/asciicircum/underscore
/quoteleft/a	/b	/c	/d	/e	/f	/g
/h	/i	/j	/	/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	/trademar/afii10106 /guilsinglright/afii10107/afii10109/afii10108/afii10193 
/space	/afii10062/afii10110/afii10057/currency/afii10050/broenbar/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 указаны в таблице:

Для создания реалистичных физических карт желательно выделять полутенями особенности рельефа поверхности. Это создаёт ощущение освещённости рельефа некоторым виртуальным источником света (солнцем) и впечатление объёмности изображения. Для этого формируется растровое изображение полутеней и при отрисовке карты накладывается на основное изображение рельефа. В качестве исходных данных используется утилита grdgradient и изображение рельефа, сформированное на предыдущем шаге:

 grdgradient h.grd -Ne0.3 -A100 -M -Ghi.grd  

Значение параметров команды grdgradient указаны в таблице:

Палитра рельефа это файл, в котором задаётся соответствие высоты рельефа и цвета, которым отрисовывается на карте соответствующий участок территории. Ниже приведён пример содержимого палитры. Полагаем, что файл называется mount.cpt:

#file mount.cpt
#COLOR_MODEL = RGB
#
096185962001612247
2001612247500232215125
5002322151251000161670
100016167015001303030
150013030302200110110110
N 0 97 71
F 255 0 0
B 0 97 71

Строки 1 и 3 являются комментариями. Во строке 2 (#COLOR_MODEL = RGB) объявляется цветовая модель (RGB). В строках 40h задаётся соответствие высот и цветов. Каждая строка имеет формат

H R G B H R G B,

где H и H минимальная и максимальная высоты диапазона; R, G, B, и R, G, B соответствующие цвета в формате RGB. Цвета, лежащие посередине между H и H находятся линейной интерполяцией цветов RGB и RGB.

Строки, начинающиеся с символов B, F, N задают цвета соответственно фона (когда высота точки меньше минимальной заданной высоты), переднего плана (когда высота точки больше максимальной заданной высоты) и точек, для которых высота рельефа неизвестна.

В строках 40h числа разделены между собой символами табуляции, в остальных строках пробелами. Количество строк, задающих диапазоны высот, неограничено. Диапазоны высот должны примыкать друг к другу, то есть H одной из строчек должна быть равна H другой строки (кроме минимальной H и максимальной H). Если диапазоны высот в разных строчках образуют разрывы или пересекаются, это считается ошибкой.

Для отрисовки рельефа вызываем утилиту grdimage:

grdimage h.grd -Ihi.grd -R130/42/140.8/49.8r -JB135/46/42/50/6i -Cmount.cpt -K > 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

(Продолжение следует)

Hosted by uCoz