Как таковой, программы GMT нет. Это просто набор небольших консольных программ (модулей) каждая из которых на стандартный выход передает содержимое ps-файла ими сгенерированного. Например, программа psbasemap рисует рамку и координатную сетку, программа pscoast рисует линию побережья, grdimage – растровую карту, psxy – точки и линии. Всего таких программ около 60-ти, и для каждой картографической задачи можно подыскать соответствующую.
Чтобы создать более или менее приличную карту, как правило требуется запускать подряд несколько программ, так как каждая программа предназначена для выполнения какой-то одной цели и рисует лишь «порцию» карты. По-этому, часто удобно использовать shell-скрипт, последовательно запускающий каждую из программ и направляющий ее вывод в ps-файл.
В Unix-терминалах для того чтобы записать результат выполнения программы достаточно в ее хвосте написать «>», и после этого имя файла, в который результат будет записан. Например, «ls ~/ > file.txt» запишет в file.txt содержимое вашей домашней директории. Чтобы приписать приписать результат к уже имеющемуся файлу, вместо «>» следует использовать «>>«.
Файл, получаемой на выводе каждой из программ состоит из трех частей:
- Начало – в котором содержится служебная часть ответственная за начало нового ps-рисунка, а также, возможно, рамка, координатная сетка, и т.п.
- Собственно карта
- Конец – завершающая часть ps-файла.
Для того чтобы отсечь конечную часть файла, чтобы мы дальше могли приписывать к нему следующие «порции» следует использовать флаг -K. Для отсечения конечной части файла следует использовать флаг -O, так мы сможем приписать нашу «порцию» к уже существующей. Таким образом все кроме последней комманды в shell-скрипте должны быть с флагом -K, и все кроме первой должны быть с флагом -O.
Почти все gmt-программы требуют указать два параметра: -R и -J. С их помощью мы задаем границы карты и ее проекцию соответственно. Например, параметр -R90/180/0/70 указывает GMT рисовать карту с южной границей 10° с.ш., с северной границей 60° с.ш, с восточной границей 180° в.д. и западной 100° в.д. А с помощью параметра -JM6i мы указываем GMT что хотим ипользовать проекцию меркатор с шириной экватора 8 дюймов.
Чтобы не писать в скрипте длинную строку параметров напротив каждой комманды, достаточно написать ее при вызове первой программы, а все последующие вызовы сопровождать пустыми флагами: «-R -J». GMT поймет что границы и проекция карты такие же как и при вызове предыдущей программы, и возьмет их из файла в текущей директории .gmtcommands4, в котором GMT хранит важные опции последних запущеных gmt-команд чтобы небыло необходимости указывать их каждый раз. Во избежание путаницы при последующих запусках скрипта, при завершении его работы лучше удалять этот файл командой «rm .gmtcommands4«.
Пример:
#!/bin/sh
psbasemap -R90/180/0/70 -JM6i -K -B10g10:.»Example map»: > plot.ps
pscoast -R -J -Gblack -O >> plot.ps
rm .gmtcommands4
Параметр -B10g10 во втрой строчке определяет интервал, через который psbasemap будет рисовать координатную сетку. -Gblack в третей строчке задает черный цвет континента.Результатом выполнения скрипта станет такая замечательная карта:![]()
Красота!
Разумеется, на странице проекта находится подробный мануал по всем флагам для каждой из комманд. Эти дни сайт недоступен, поэтому прямого линка дать не могу. Как только сайт «очнется», обновлю пост.
Tags: cartography, GMT, linux, publication
Январь 27, 2008 в 1:36 дп
Действительно отличная и очень мощьная программа (хоть это и не программа )) Было бы неплохо если б кто нить в коце концов перевёл к ней туториал и она начала бы своё победное шествие по Российским институтам ))
Похоже ваши посты – единственное что есть на русском про GMT ) Сослался на вас тут http://koldunov.net/?p=51
Январь 27, 2008 в 4:07 дп
Вы правы, на GMT у нас обращают незаслуженно мало внимания, хотя функционал у нее ого-го какой! Рад что все-таки есть в наших институтах люди, активно использующие GMT, и будем надеятся, со временем их станет болше.
P.S. Полезный у вас блог. Подписался на новости.
Январь 27, 2008 в 12:07 пп
К сожалению я не в нашем институте (( И будучи России про GMT слышал только от немцев, которые большие его фанаты ) Но это действительно – мегавесч! )
Февраль 6, 2009 в 3:22 пп
pscoast увы не содержит областных границ Европы.
pscoast -N… отрабатывает границы государств, но в более детальном масштабе необходимы именно границы области или района.
1 = National boundaries
2 = State boundaries within the Americas
3 = Marine boundaries
a = All boundaries (1-3)
Возможнен ли export esri shp таких границ областей ?