GMT: Как это работает

Январь 17, 2008

Как таковой, программы 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 в третей строчке задает черный цвет континента.Результатом выполнения скрипта станет такая замечательная карта:plot.png

Красота!

Разумеется, на странице проекта находится подробный мануал по всем флагам для каждой из комманд. Эти дни сайт недоступен, поэтому прямого линка дать не могу. Как только сайт «очнется», обновлю пост.

Tags: , , ,

4 коммент. к “GMT: Как это работает”

  1. magik говорит:

    Действительно отличная и очень мощьная программа (хоть это и не программа )) Было бы неплохо если б кто нить в коце концов перевёл к ней туториал и она начала бы своё победное шествие по Российским институтам ))

    Похоже ваши посты – единственное что есть на русском про GMT ) Сослался на вас тут http://koldunov.net/?p=51

  2. fatune говорит:

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

    P.S. Полезный у вас блог. Подписался на новости. ;)

  3. magik говорит:

    К сожалению я не в нашем институте (( И будучи России про GMT слышал только от немцев, которые большие его фанаты ) Но это действительно – мегавесч! )

  4. ogopogo говорит:

    pscoast увы не содержит областных границ Европы.
    pscoast -N… отрабатывает границы государств, но в более детальном масштабе необходимы именно границы области или района.

    1 = National boundaries
    2 = State boundaries within the Americas
    3 = Marine boundaries
    a = All boundaries (1-3)

    Возможнен ли export esri shp таких границ областей ?


Ответить