https://wiki.gis-lab.info/index.php?title=%D0%9D%D0%B0%D1%87%D0%B0%D0%BB%D0%BE_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_GMT&feed=atom&action=historyНачало работы с GMT - История изменений2024-03-28T09:00:41ZИстория изменений этой страницы в викиMediaWiki 1.39.6https://wiki.gis-lab.info/index.php?title=%D0%9D%D0%B0%D1%87%D0%B0%D0%BB%D0%BE_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_GMT&diff=6967&oldid=prevМаксим Дубинин в 19:08, 6 августа 20122012-08-06T19:08:04Z<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="ru">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Предыдущая версия</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Версия от 20:08, 6 августа 2012</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l330">Строка 330:</td>
<td colspan="2" class="diff-lineno">Строка 330:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>В завершение, в левом нижнем углу карты разместим схематичный фрагмент окрестностей мелкого масштаба (карту врезку), на котором выделим наш регион:</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>В завершение, в левом нижнем углу карты разместим схематичный фрагмент окрестностей мелкого масштаба (карту врезку), на котором выделим наш регион:</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> <syntaxhighlight>pscoast -R160/210/45/70 -JB-175/60/50/70/5c -O -K -Wthinnest,black -X10.5c -A400 >> map.ps</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> <syntaxhighlight <ins style="font-weight: bold; text-decoration: none;">lang="bash"</ins>>pscoast -R160/210/45/70 -JB-175/60/50/70/5c -O -K -Wthinnest,black -X10.5c -A400 >> map.ps</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> psxy -R -J -L -Wthinnest,black -O <> map.ps</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> psxy -R -J -L -Wthinnest,black -O <> map.ps</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> 182 64</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> 182 64</div></td></tr>
</table>Максим Дубининhttps://wiki.gis-lab.info/index.php?title=%D0%9D%D0%B0%D1%87%D0%B0%D0%BB%D0%BE_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_GMT&diff=6966&oldid=prevМаксим Дубинин: /* Пример */2012-08-06T19:06:08Z<p><span dir="auto"><span class="autocomment">Пример</span></span></p>
<a href="//wiki.gis-lab.info/index.php?title=%D0%9D%D0%B0%D1%87%D0%B0%D0%BB%D0%BE_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_GMT&diff=6966&oldid=6965">Внесённые изменения</a>Максим Дубининhttps://wiki.gis-lab.info/index.php?title=%D0%9D%D0%B0%D1%87%D0%B0%D0%BB%D0%BE_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_GMT&diff=6965&oldid=prevМаксим Дубинин в 18:56, 6 августа 20122012-08-06T18:56:26Z<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="ru">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Предыдущая версия</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Версия от 19:56, 6 августа 2012</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l3">Строка 3:</td>
<td colspan="2" class="diff-lineno">Строка 3:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">'''</del>Введение<del style="font-weight: bold; text-decoration: none;">'''</del></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">== </ins>Введение <ins style="font-weight: bold; text-decoration: none;">==</ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>GMT (Generic Mappnig Tools) — набор из 60-и консольных инструментов, направленных на обработку географических данных и на создание высококачественных Encapsulated PostScript (EPS) иллюстраций этих данных от простых x-y графиков, до искусственно освещенных карт рельефа и 3-х мерных изображений моделей поверхностей. Начиная в 1988 году с нескольких несложных картографических программ в дипломной работе двух студентов, сейчас GMT это мощная, полнофункциональная ГИС широко распространенная по всему миру в научной сфере. GMT поддерживает около 30 проекций, имеет данные о береговых линиях континентов, рек и политических границах, которые использует для построения карт.<br /> Несмотря на внушительный набор возможностей по обработке данных, основная цель GMT — это уменьшение количества времени, затрачиваемых на подготовку высококачественных иллюстраций для публикаций в научных журналах, проектах или слайдов для презентаций.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>GMT (Generic Mappnig Tools) — набор из 60-и консольных инструментов, направленных на обработку географических данных и на создание высококачественных Encapsulated PostScript (EPS) иллюстраций этих данных от простых x-y графиков, до искусственно освещенных карт рельефа и 3-х мерных изображений моделей поверхностей. Начиная в 1988 году с нескольких несложных картографических программ в дипломной работе двух студентов, сейчас GMT это мощная, полнофункциональная ГИС широко распространенная по всему миру в научной сфере. GMT поддерживает около 30 проекций, имеет данные о береговых линиях континентов, рек и политических границах, которые использует для построения карт.<br /> Несмотря на внушительный набор возможностей по обработке данных, основная цель GMT — это уменьшение количества времени, затрачиваемых на подготовку высококачественных иллюстраций для публикаций в научных журналах, проектах или слайдов для презентаций.</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l11">Строка 11:</td>
<td colspan="2" class="diff-lineno">Строка 11:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Почти все GMT-инструменты посылают на стандартный выход код на языке Postscript. Этот код является каким либо элементом карты. Стандартный выход мы можем просто перенаправить и записать в нужный нам файл или приписать к уже существующему ("&gt; file" или "&gt;&gt; file" после вызова утилиты). Этим достигается необычайная гибкость - одну карту мы рисуем последовательно вызывая утилиты, каждая из которых добавляет в файл свою порцию данных (рамка, изолинии, маршруты, точки, надписи, масштабная линейка, легенда и т.п.). По этой причине, последовательность вызовов утилит принято оформлять в shell-скрипт, незначительно отредактировав который мы можем перерисовать карту, или нарисовать новую.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Почти все GMT-инструменты посылают на стандартный выход код на языке Postscript. Этот код является каким либо элементом карты. Стандартный выход мы можем просто перенаправить и записать в нужный нам файл или приписать к уже существующему ("&gt; file" или "&gt;&gt; file" после вызова утилиты). Этим достигается необычайная гибкость - одну карту мы рисуем последовательно вызывая утилиты, каждая из которых добавляет в файл свою порцию данных (рамка, изолинии, маршруты, точки, надписи, масштабная линейка, легенда и т.п.). По этой причине, последовательность вызовов утилит принято оформлять в shell-скрипт, незначительно отредактировав который мы можем перерисовать карту, или нарисовать новую.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;">'''</del>Пример<del style="font-weight: bold; text-decoration: none;">'''</del></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;">== </ins>Пример <ins style="font-weight: bold; text-decoration: none;">==</ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Рассмотрим процесс оформления карты подробнее.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Рассмотрим процесс оформления карты подробнее.</div></td></tr>
<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l17">Строка 17:</td>
<td colspan="2" class="diff-lineno">Строка 17:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Допустим, мы имеем грид ЦМР на Чукотский полуостров ([http://gis-lab.info/other/gmt-elev.zip скачать]) . Чтобы отобразить его с помощью GMT, создадим вот такой скрипт:</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Допустим, мы имеем грид ЦМР на Чукотский полуостров ([http://gis-lab.info/other/gmt-elev.zip скачать]) . Чтобы отобразить его с помощью GMT, создадим вот такой скрипт:</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> <<del style="font-weight: bold; text-decoration: none;">nowiki</del>>#!/bin/bash</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> <<ins style="font-weight: bold; text-decoration: none;">syntaxhighlight lang="bash"</ins>>#!/bin/bash</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> makecpt -Ctopo -T1/1300/1 &gt; map.cpt</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> makecpt -Ctopo -T1/1300/1 &gt; map.cpt</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> grdimage elev.grd -R-178/-168/64/68 -JM16с -Cmap.cpt -K &gt; map.ps</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div> grdimage elev.grd -R-178/-168/64/68 -JM16с -Cmap.cpt -K &gt; map.ps</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> psbasemap -R -J -B2/1 -O &gt;&gt; map.ps</<del style="font-weight: bold; text-decoration: none;">nowiki</del>></div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> psbasemap -R -J -B2/1 -O &gt;&gt; map.ps</<ins style="font-weight: bold; text-decoration: none;">syntaxhighlight</ins>></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Сохраним его под именем gmt.sh. Для запуска скрипта откроем терминал (консоль) и перейдем в папку где он хранится. Разрешим выполнение файла скрипта набрав: chmod u+x gmt.sh Теперь мы можем его запустить: ./gmt.sh</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Сохраним его под именем gmt.sh. Для запуска скрипта откроем терминал (консоль) и перейдем в папку где он хранится. Разрешим выполнение файла скрипта набрав: chmod u+x gmt.sh Теперь мы можем его запустить: ./gmt.sh</div></td></tr>
</table>Максим Дубининhttps://wiki.gis-lab.info/index.php?title=%D0%9D%D0%B0%D1%87%D0%B0%D0%BB%D0%BE_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_GMT&diff=6568&oldid=prevAmuriy в 13:50, 28 июля 20122012-07-28T13:50:27Z<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="ru">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Предыдущая версия</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Версия от 14:50, 28 июля 2012</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l9">Строка 9:</td>
<td colspan="2" class="diff-lineno">Строка 9:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Основным отличием GMT от большинства ГИС является отсутствие графического интерфейса, что многим кажется большим неудобством. Однако, при большом объеме обрабатываемых данных и большом количестве карт, которые требуется получить на выходе, это является скорее достоинством. Можно легко написать скрипт, который сам будет извлекать требуемую порцию данных, соответствующим образом их обрабатывать, и оформлять все это дело в карту.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Основным отличием GMT от большинства ГИС является отсутствие графического интерфейса, что многим кажется большим неудобством. Однако, при большом объеме обрабатываемых данных и большом количестве карт, которые требуется получить на выходе, это является скорее достоинством. Можно легко написать скрипт, который сам будет извлекать требуемую порцию данных, соответствующим образом их обрабатывать, и оформлять все это дело в карту.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div>Почти все GMT-инструменты посылают на стандартный выход код на языке <del style="font-weight: bold; text-decoration: none;">post-script</del>. Этот код является каким либо элементом карты. Стандартный выход мы можем просто перенаправить и записать в нужный нам файл или приписать к уже существующему ("&gt; file" или "&gt;&gt; file" после вызова утилиты). Этим достигается необычайная гибкость - одну карту мы рисуем последовательно вызывая утилиты, каждая из которых добавляет в файл свою порцию данных (рамка, изолинии, маршруты, точки, надписи, масштабная линейка, легенда и т.п.). По этой причине, последовательность вызовов утилит принято оформлять в shell-скрипт, незначительно отредактировав который мы можем перерисовать карту, или нарисовать новую.</div></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>Почти все GMT-инструменты посылают на стандартный выход код на языке <ins style="font-weight: bold; text-decoration: none;">Postscript</ins>. Этот код является каким либо элементом карты. Стандартный выход мы можем просто перенаправить и записать в нужный нам файл или приписать к уже существующему ("&gt; file" или "&gt;&gt; file" после вызова утилиты). Этим достигается необычайная гибкость - одну карту мы рисуем последовательно вызывая утилиты, каждая из которых добавляет в файл свою порцию данных (рамка, изолинии, маршруты, точки, надписи, масштабная линейка, легенда и т.п.). По этой причине, последовательность вызовов утилит принято оформлять в shell-скрипт, незначительно отредактировав который мы можем перерисовать карту, или нарисовать новую.</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br/></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''Пример'''</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''Пример'''</div></td></tr>
</table>Amuriyhttps://wiki.gis-lab.info/index.php?title=%D0%9D%D0%B0%D1%87%D0%B0%D0%BB%D0%BE_%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%8B_%D1%81_GMT&diff=6565&oldid=prevAmuriy: Новая страница: «{{Статья|Опубликована|gmt}} {{Аннотация|Описание работы с GMT на конкретном примере.}} '''Введ…»2012-07-28T13:45:50Z<p>Новая страница: «{{Статья|Опубликована|gmt}} {{Аннотация|Описание работы с GMT на конкретном примере.}} '''Введ…»</p>
<p><b>Новая страница</b></p><div>{{Статья|Опубликована|gmt}}<br />
{{Аннотация|Описание работы с GMT на конкретном примере.}}<br />
<br />
<br />
'''Введение'''<br />
<br />
GMT (Generic Mappnig Tools) — набор из 60-и консольных инструментов, направленных на обработку географических данных и на создание высококачественных Encapsulated PostScript (EPS) иллюстраций этих данных от простых x-y графиков, до искусственно освещенных карт рельефа и 3-х мерных изображений моделей поверхностей. Начиная в 1988 году с нескольких несложных картографических программ в дипломной работе двух студентов, сейчас GMT это мощная, полнофункциональная ГИС широко распространенная по всему миру в научной сфере. GMT поддерживает около 30 проекций, имеет данные о береговых линиях континентов, рек и политических границах, которые использует для построения карт.<br /> Несмотря на внушительный набор возможностей по обработке данных, основная цель GMT — это уменьшение количества времени, затрачиваемых на подготовку высококачественных иллюстраций для публикаций в научных журналах, проектах или слайдов для презентаций.<br />
<br />
Основным отличием GMT от большинства ГИС является отсутствие графического интерфейса, что многим кажется большим неудобством. Однако, при большом объеме обрабатываемых данных и большом количестве карт, которые требуется получить на выходе, это является скорее достоинством. Можно легко написать скрипт, который сам будет извлекать требуемую порцию данных, соответствующим образом их обрабатывать, и оформлять все это дело в карту.<br />
<br />
Почти все GMT-инструменты посылают на стандартный выход код на языке post-script. Этот код является каким либо элементом карты. Стандартный выход мы можем просто перенаправить и записать в нужный нам файл или приписать к уже существующему ("&gt; file" или "&gt;&gt; file" после вызова утилиты). Этим достигается необычайная гибкость - одну карту мы рисуем последовательно вызывая утилиты, каждая из которых добавляет в файл свою порцию данных (рамка, изолинии, маршруты, точки, надписи, масштабная линейка, легенда и т.п.). По этой причине, последовательность вызовов утилит принято оформлять в shell-скрипт, незначительно отредактировав который мы можем перерисовать карту, или нарисовать новую.<br />
<br />
'''Пример'''<br />
<br />
Рассмотрим процесс оформления карты подробнее.<br />
<br />
Допустим, мы имеем грид ЦМР на Чукотский полуостров ([http://gis-lab.info/other/gmt-elev.zip скачать]) . Чтобы отобразить его с помощью GMT, создадим вот такой скрипт:<br />
<br />
<nowiki>#!/bin/bash<br />
makecpt -Ctopo -T1/1300/1 &gt; map.cpt<br />
grdimage elev.grd -R-178/-168/64/68 -JM16с -Cmap.cpt -K &gt; map.ps<br />
psbasemap -R -J -B2/1 -O &gt;&gt; map.ps</nowiki><br />
<br />
Сохраним его под именем gmt.sh. Для запуска скрипта откроем терминал (консоль) и перейдем в папку где он хранится. Разрешим выполнение файла скрипта набрав: chmod u+x gmt.sh Теперь мы можем его запустить: ./gmt.sh<br />
<br />
После запуска скрипта, в его каталоге появиться наша карта - файл map.ps. Его можно просмотреть с помощью любого просмотрщика, поддерживающего формат PostScipt. Разработчики рекомендуют использовать ghostview.<br />
<br />
<center>[[Image:gmt-01.gif|516px|gmt]]</center><br />
<br />
Посмотрим на работу скрипта шаг за шагом.<br />
<br />
Строка 1 - стандартное начало любого Unix-скрипта - путь к программе-интерпретатору.<br />
<br />
Строка 2- создаем цветовую палитру (файл map.cpt) для карты командой makecpt.<br />
<br />
{| align="center"<br />
| width="218" valign="top" |<br />
'''-Ctopo'''<br />
| width="258" valign="top" |<br />
'''-T1/1300/1'''<br />
|-<br />
| width="218" valign="top" |<br />
Имя палитры (одной из 20 палитр, имеющихся в GMT) которую мы возьмем за основу<br />
| width="258" valign="top" |<br />
Интервал значений, для которого следует создавать таблицу. Интервал значений грида можно узнать командной grdinfo.<br />
|}<br />
<br />
Строка 3 - отрисовка грида командой '''grdimage'''. С этой командом необходимо использовать большое количество флагов в которых с первого раза легко запутаться (для GMT это нормально). Разберем их подробнее:<br />
<br />
{| align="center"<br />
| width="92" valign="top" |<br />
'''elev.grd'''<br />
| width="161" valign="top" |<br />
'''-R-178/-168/64/68'''<br />
| width="109" valign="top" |<br />
'''-JM16с'''<br />
| width="123" valign="top" |<br />
'''-Cmap.cpt'''<br />
| width="127" valign="top" |<br />
'''-K'''<br />
|-<br />
| width="92" valign="top" |<br />
имя грида для отрисовки<br />
| width="161" valign="top" |<br />
Размер региона (minx/maxx/miny/maxy), который будет отрисовываться (может быть больше или меньше размеров рисуемого грида)<br />
| width="109" valign="top" |<br />
Проекция Меркатор. Ширина экватора нарисованной карты составит 16 сантиметров.<br />
| width="123" valign="top" |<br />
Использовать цветовую палитру map.cpt<br />
| width="127" valign="top" |<br />
После текущей команды ожидается следующая.<br />
|}<br />
<br />
Теперь назначение флагов стало более или менее понятно, кроме последнего -K. Этот флаг отсекает добавление в файл нашей карты финализирующей части postscript кода, для того чтобы следующие gmt-инструменты могли добавить к карте новые детали.<br />
<br />
Строка 4 - создание рамки и координатной сетки командой psbasemap. Описание использованных флагов:<br />
<br />
{| align="center"<br />
| width="152" valign="top" |<br />
'''-R'''<br />
| width="150" valign="top" |<br />
'''-J'''<br />
| width="150" valign="top" |<br />
'''-B2/1'''<br />
| width="150" valign="top" |<br />
'''-O'''<br />
|-<br />
| width="152" valign="top" |<br />
Использовать тот же размер, что и при вызове предыдущей команды<br />
| width="150" valign="top" |<br />
Использовать ту же проекцию, что и при вызове предыдущей команды<br />
| width="150" valign="top" |<br />
Расставить подписи координатной сетки на оси X через 2 градуса, на оси Y через 1 градус.<br />
| width="150" valign="top" |<br />
Добавить к существующему файлу.<br />
|}<br />
<br />
Знакомые нам флаги -R и -J, задающие регион и проекцию на этот раз используются без параметров. GMT догадается использовать такие же параметры региона и проекции как и при выполнении прошлой команды. Флаг -O аналогичен флагу -K, но действует наоборот - отсекает вступительную часть postscript кода, для того чтобы корректно добавить новый фрагмент карты в уже существующий файл. Далее по тексту, в таблицах объяснений параметров, объяснения параметров -J, -R, -O, -K пропускается.<br />
<br />
Как видим, пока ничего сложного. Только вот на карте отсутствует береговая линия, и океан. Нарисуем океан вставив перед '''psbasemap''' следующую строку:<br />
<br />
pscoast -R -J -Slightblue -O -K -Df &gt;&gt; map.ps<br />
<br />
<br /><br />
<br />
{| align="center"<br />
| width="142" valign="top" |<br />
'''-Slightblue'''<br />
| width="173" valign="top" |<br />
'''-Df'''<br />
|-<br />
| width="142" valign="top" |<br />
Закрасить моря и океаны светло-серым цветом.<br />
| width="173" valign="top" |<br />
Использовать высокое разрешение для данные о береговой линии.<br />
|}<br />
<br />
'''Pscoast''' рисует не только моря или океаны, но и континент (если задана опция -G) и береговую линию (опцией -W) и гидросеть (опцией -I) и даже политические границы (опцией -N). Мы задали лишь опцию -S, в результате океан залит светло-серым цветом и наша карта выглядит уже вполне сносно.<br />
<br />
<center>[[Image:gmt-02.gif|513px|gmt]]</center><br />
<br />
Поэкспериментируем с результатом. Чтобы не загружать процессор понапрасну, будем отрисовывать на карте только береговую линию, закомментировав третью строку и слегка изменив четвертую:<br />
<br />
<nowiki>#!/bin/bash<br />
makecpt -Ctopo -T1/1300/1 &gt; map.cpt<br />
#grdimage elev.grd -R-178/-168/64/68 -JM16с -Cmap.cpt -K &gt; map.ps<br />
pscoast -R-178/-168/64/68 -JM16c -Slightblue -K -Df &gt; map.ps<br />
psbasemap -R -J -B2/1 -O &gt;&gt; map.ps</nowiki><br />
<br />
<center>[[Image:gmt-03.gif|520px|gmt]]</center><br />
<br />
Попробуем в третей строчке вместо '''-JM16c''' написать '''-JM16i''' изменив тем самым ширину экватора с 16 сантиметров на 16 дюймов. Запустим скрипт и увидим, что в нашем файле уместился только край карты.<br />
<br />
<center>[[Image:gmt-04.gif|500px|gmt]]</center><br />
<br />
Вернуть все назад можно написав '''-JM6c''', и размер карты будет совпадать с размером 16-и сантиметровой карты. От цилиндрической проекции перейдем к конической написав '''-JB-173/66/64/68/6i''' (Albers projection -JBlon0/lat0/lat1/lat2/width).<br />
<br />
<center>[[Image:gmt-05.gif|496px|gmt]]</center><br />
<br />
Уменьшим разрешение береговой линии с полного (full) до минимального (crude) изменив параметр -D команды pscoast c '''-Df''' на '''-Dc'''.<br />
<br />
<center>[[Image:gmt-06.gif|503px|gmt]]</center><br />
<br />
Граница сильно генерализована, но для крупномасштабной карты такая степень генерализации в самый раз. Азимутальная проекция '''-JS-173/66/6i''' (General Stereographic - JSlon0/lat0/width).<br />
<br />
<center>[[Image:gmt-07.gif|466px|gmt]]</center><br />
<br />
Изменим проекцию, а заодно и размеры региона с -R-180/180/-90/90 на -JG-180/40/20c.<br />
<br />
<center>[[Image:gmt-08.gif|500px|gmt]]</center><br />
<br />
Установим следующие параметры: -R-178/-176/66/67-JM16с, и перед '''psbasemap''' вставим строку:<br />
<br />
grdcontour elev.grd -R -J -C100 -A200+kblack -O -K &gt;&gt; map.ps<br />
<br />
<center>[[Image:gmt-09.gif|506px|gmt]]</center><br />
<br />
Команда grdcontour отображает изолинии поверхности грида и имеет следующие параметры:<br />
<br />
{| align="center"<br />
| width="122" valign="top" |<br />
'''elev.grd'''<br />
| width="139" valign="top" |<br />
'''-C100'''<br />
| width="221" valign="top" |<br />
'''-A200+kblack'''<br />
|-<br />
| width="122" valign="top" |<br />
грид, для которого надо нарисовать изолинии<br />
| width="139" valign="top" |<br />
Интервал изолиний 100 м.<br />
| width="221" valign="top" |<br />
Через каждые 200 м будет нарисована сплошная изолиния, и подписана шрифтом черного цвета.<br />
|}<br />
<br />
Вернем наш скрипт к первоначальному варианту и изменим проекцию на цилиндрическую:<br />
<br />
<nowiki>#!/bin/bash<br />
makecpt -Ctopo -T1/1300/1 &gt; map.cpt<br />
grdimage elev.grd -R-178/-168/64/68 -JB-173/66/64/68/6i -Cmap.cpt -K &gt; map.ps<br />
pscoast -R -J -Slightblue -O -K -Df &gt;&gt; map.ps<br />
psbasemap -R -J -B2/1 -O &gt;&gt; map.ps</nowiki><br />
<br />
Неплохо было как-нибудь бы озаглавить нашу карту. Чуть-чуть исправим строчку psbasemap:<br />
<br />
psbasemap -R -J -B2/1:."Цифровая модель рельефа Чукотского полуострова": -O -V &gt;&gt; map.ps<br />
<br />
Для нормального отображения кириллицы в ps-файле, файл нашего скрипта нужно сохранить в кодировке ISO-8859-5, а в начале скрипта, перед вызовом остальных gmt инструментов, добавить сразу после !#/bin/bash:<br />
<br />
gmtset CHAR_ENCODING ISO-8859-5<br />
<br />
<center>[[Image:gmt-10.gif|562px|gmt]]</center><br />
<br />
Команда '''gmtset''' устанавливает глобальные параметры для GMT, хранящиеся в файле .gmtdefaults4 в директории $GMTHOME (каталоге установки GMT). Перед тем как производить какие-либо изменения в этом файле, gmtset копирует его в текущую директорию, и изменяет копию. Все последующие gmt-инструменты обнаружив .gmtdefaults4 в текущей директории, будут брать настройки из него. Поэтому, для того чтобы не возникало недоразумений (особенно, когда в одной директории хранится сразу несколько скриптов), перед завершением скрипта лучше удалить этот файл, а заодно и .gmtcommands, в котором хранится история введенных параметров, общих для всех gmt-инструментов (-R, -J, -P, и др.):<br />
<br />
rm .gmt*<br />
<br />
Примечание: К сожалению, поддержка русского языка в GMT слабая. Если вы запустите этот скрипт, то в терминале увидите сообщения '''psbasemap''' о том что символы для обозначения градусов, минут и секунд отсутствуют, и поэтому он вставит на их место пробелы. Также, если вы конвертируете post-script в pdf (например командой ps2pdf) то, в зависимости от просмотровщика, все символы сползут со своих мест. Впрочем, Acrobat Reader 7.0 такие pdf-файлы отображает корректно.<br />
<br />
Один из способов решения этой проблемы предложил [https://listserv.hawaii.edu/cgi-bin/wa?A3=ind0705&L=GMT-HELP&E=base64&P=1657625&B=--------------070008050009060207000702&T=application%2Fzip;%20name=%22gmt-cyrillic.zip%22&N=gmt-cyrillic.zip Михаил Чернышев], и заключается он в установке дополнительных кирилических шрифтов в ghostscript, и ссылки на них в gmt. После этого шрифты можно использовать в gmt под номерами 36 и больше. Однако, стоит отметить, что ps-файлы, полученные таким способом будут корректно отображаться только на компьютере с установленными кирилическими шрифтами в ghostsript.<br />
<br />
Изменим шрифт заголовка с Times на Helvetica:<br />
<br />
gmtset CHAR_ENCODING ISO-8859-5 HEADER_FONT 1 HEADER_FONT_SIZE 20<br />
<br />
<center>[[Image:gmt-11.gif|400px|gmt]]</center><br />
<br />
Теперь, добавим поселки и их названия. Отрисовка векторных элементов в GMT осуществляется командой '''psxy''' для двухмерной карты и '''psxyz''' для псевдо-трехмерного изображения. Эти команды визуализируют векторные объеты, передаваемые им в формате .xy (или .xyz), который является простым текстовым файлом, в каждой строчке которого содержится координаты x и y (и z, в формате .xyz). Например:<br />
<br />
-173.19806733 64.45356668<br />
-172.84372109 64.50418757<br />
-172.26769026 64.41341907<br />
-171.72657038 65.50962321<br />
-171.01264126 65.58991841<br />
-169.79599432 66.15896705<br />
-171.89763408 66.96541022<br />
-173.00954815 67.03523214<br />
-174.95932524 67.42972598<br />
-175.84780916 67.83294757<br />
-175.82511704 65.00515984<br />
-175.41316772 64.80442182<br />
<br />
Сохраним список в файл points.xy. Следующая команда нарисует на месте поселков белые кружочки.<br />
<br />
psxy points.xy -J -R -Sc0.14 -W2black -Gwhite -O -K -V &gt;&gt; map.ps<br />
<br />
{| align="center"<br />
| width="140" valign="top" |<br />
points.xy<br />
| width="112" valign="top" |<br />
-Sc0.14<br />
| width="137" valign="top" |<br />
-W2black<br />
| width="100" valign="top" |<br />
-Gwhite<br />
|-<br />
| width="140" valign="top" |<br />
xy-файл, содержащий координаты поселков<br />
| width="112" valign="top" |<br />
Рисуем кружок радиусом 0.14 см.<br />
| width="137" valign="top" |<br />
Кружок нарисуем карандашом черного цвета и толщиной 2<br />
| width="100" valign="top" |<br />
Зальем кружок белым цветом<br />
|}<br />
<br />
<center>[[Image:gmt-12.gif|308px|gmt]]</center><br />
<br />
Чтобы напротив каждого поселка написать его название воспользуемся командной '''pstext'''. Pstext размещает на карте в заданных местах надписи, определенного размера, и начертания, построчно записанные в простом текстовом файле. В каждой строке такого файла написаны x-y координаты (как в .xy файле), размер надписи, наклон, номер ps-шрифта, выравнивание по вертикали (M-по середине, T-по верху, B-по низу) и выравнивание по горизонтали (L-лево, C-центр, R-право), и, собственно, надпись. Вот как такой файл будет выглядеть для надписей названий поселков ([http://gis-lab.info/other/points.xy скачать]):<br />
<br />
-173.19806733 64.45356668 8 0 2 TR Провидения<br />
-172.84372109 64.50418757 8 0 2 BL Нов. Чаплино<br />
-172.26769026 64.41341907 8 0 2 BL Чаплино<br />
-171.72657038 65.50962321 8 0 2 TL Лорино<br />
-171.01264126 65.58991841 8 0 2 TL Лаврентия<br />
-169.79599432 66.15896705 8 0 2 BL Уэлен<br />
-171.89763408 66.96541022 8 0 2 BL Энмурино<br />
-173.00954815 67.03523214 8 0 2 BL Нешкан<br />
-174.95932524 67.42972598 8 0 2 BL Нутэпельмен<br />
-175.84780916 67.83294757 8 0 2 BL Ванкарем<br />
-175.82511704 65.00515984 8 0 2 TR Энмелен<br />
-175.41316772 64.80442182 8 0 2 TR Нунлингран<br />
<br />
По сути дела, это дополненный файл points.xy. Мы смело можем удалить его, а на его месте сохранить наш новый файл. '''psxy''' после этого также будет рисовать кружочки, а '''pstext''' из этого же файла надписи к ним:<br />
<br />
pstext points.xy -J -R -Dj0.1c/0.1c -Gblack -K -O &gt;&gt; map.ps<br />
<br />
{| align="center"<br />
| width="142" valign="top" |<br />
'''points.xy'''<br />
| width="224" valign="top" |<br />
'''-Dj0.1c/0.1c'''<br />
| width="139" valign="top" |<br />
'''-Gblack'''<br />
|-<br />
| width="142" valign="top" |<br />
файл, содержащий координаты поселков и их названия<br />
| width="224" valign="top" |<br />
Смещение координат каждой надписи для того чтобы надписи не наползали на символы поселков.<br />
| width="139" valign="top" |<br />
Поселки подписывать шрифтом черного цвета<br />
|}<br />
<br />
Надписи заливов и морей сохраним в файле [http://gis-lab.info/other/names.xy names.xy]:<br />
<br />
-171 67.5 14 -10 0 MC Чукотское море<br />
-176.5 64.5 14 0 0 MC Анадырский залив<br />
-168.8 66 10 80 0 MC Берингов Пролив<br />
-171.6 65.3 8 -10 0 MC Мечигменский<br />
-171.6 65.2 8 -10 0 MC залив<br />
-174.2 66.8 8 -10 0 MC Колючинская<br />
-174.2 66.7 8 -10 0 MC губа<br />
<br />
И отобразим их командой:<br />
<br />
pstext names.xy -J -R -Gblack -K -O &gt;&gt; map.ps<br />
<br />
<center>[[Image:gmt-13.gif|362px|gmt]]</center><br />
<br />
Теперь, неплохо было бы добавить к карте шкалу высот рельефа.<br />
<br />
psscale -Cmap.cpt -D8c/-2c/8c/0.3ch -B100:"Высота рельефа":/:"метры": -A -O -K &gt;&gt; map.ps<br />
<br />
<center> </center><br />
<br />
{| align="center"<br />
| width="152" valign="top" |<br />
'''-Cmap.cpt'''<br />
| width="163" valign="top" |<br />
'''-D8c/-2c/8c/0.3ch'''<br />
| width="117" valign="top" |<br />
'''-B100:"Высота рельефа":/:"метры":'''<br />
| width="111" valign="top" |<br />
'''-A'''<br />
|-<br />
| width="152" valign="top" |<br />
Цветовая палитра, для которой рисуется шкала<br />
| width="163" valign="top" |<br />
Разместить шкалу на странице с центром в точке на 8 см правее и на 2см ниже левого нижнего угла карты. Параметр h рисует горизонтальную шкалу (по умолчанию она вертикальная).<br />
| width="117" valign="top" |<br />
Установить деления на шкале через 100 м и сделать подпись на шкале "Высота рельефа", а на делениях - "метры".<br />
| width="111" valign="top" |<br />
Подпись и деления поместить над шкалой.<br />
|}<br />
<br />
<center>[[Image:gmt-14.gif|500px|gmt]]</center><br />
<br />
Чтобы нарисовать масштабную линейку к команде '''psbasemap''' нужно добавить флаг -Lflat0/lon0/lon/lenght. Мы добавим так: -Lf-173/64.2/66/50:"км":r. После этого на карте в точке с координатами 1173/64.2 отобразиться масштабная линейка, отображающая горизонтальный масштаб для широты 66 градусов, протяженностью в 50 км, с подписью "км", размещенной справа.<br />
<br />
<center>[[Image:gmt-15.gif|507px|gmt]]</center><br />
<br />
В завершение, в левом нижнем углу карты разместим схематичный фрагмент окрестностей мелкого масштаба (карту врезку), на котором выделим наш регион:<br />
<br />
pscoast -R160/210/45/70 -JB-175/60/50/70/5c -O -K -Wthinnest,black -X10.5c -A400 &gt;&gt; map.ps<br />
psxy -R -J -L -Wthinnest,black -O &lt;&gt; map.ps<br />
182 64<br />
182 68<br />
192 68<br />
192 64<br />
EOF<br />
<br />
<center>[[Image:gmt-16.gif|547px|gmt]]</center><br />
<br />
Параметры команды '''pscoast''':<br />
<br />
{| align="center"<br />
| width="108" valign="top" |<br />
'''-R160/210/45/70'''<br />
| width="132" valign="top" |<br />
'''-JB-175/60/50/70/5c'''<br />
| width="92" valign="top" |<br />
'''-Wthinnest,black'''<br />
| width="92" valign="top" |<br />
'''-X10.5c'''<br />
| width="125" valign="top" |<br />
'''-A400'''<br />
|-<br />
| width="108" valign="top" |<br />
размер региона<br />
| width="132" valign="top" |<br />
Коническая проекция, и ширина карт по горизонтали - 5 см<br />
| width="92" valign="top" |<br />
Береговая линия черная, тонкая<br />
| width="92" valign="top" |<br />
сместить карту вправо на 10,5 см.<br />
| width="125" valign="top" |<br />
Упростить береговую линию, отсечением элементов, площадь которых меньше 400 м2.<br />
|}<br />
<br />
Границы региона рисуем командой '''psxy''':<br />
<br />
{| align="center"<br />
| width="127" valign="top" |<br />
-L<br />
| width="127" valign="top" |<br />
-Wthinnest,black<br />
| width="232" valign="top" |<br />
&lt;&lt;EOF<br />
|-<br />
| width="127" valign="top" |<br />
Замкнуть рисуемую кривую<br />
| width="127" valign="top" |<br />
Линия черная, тонкая<br />
| width="232" valign="top" |<br />
координаты кривой находятся не в файле, а следуют после текущей команды, и завершаются строкой 'EOF'<br />
|}<br />
<br />
Содержание результирующего скрипта ([http://gis-lab.info/other/gmt.map.sh.zip скачать скрипт]):<br />
<br />
<nowiki>#!/bin/bash<br />
gmtset CHAR_ENCODING ISO-8859-5 HEADER_FONT 1 HEADER_FONT_SIZE 20<br />
makecpt -Ctopo -T0/1300/1 &gt; map.cpt<br />
grdimage elev.grd -R-178/-168/64/68 -JB-173/66/64/68/6i -Cmap.cpt -K &gt; map.ps<br />
pscoast -R -J -Slightblue -O -K -Df &gt;&gt; map.ps<br />
psxy points.xy -J -R -Sc0.14 -W2black -Gwhite -O -K -V &gt;&gt; map.ps<br />
pstext points.xy -J -R -Dj0.1c/0.1c -Gblack -K -O &gt;&gt; map.ps<br />
pstext names.xy -J -R -Gblack -K -O &gt;&gt; map.ps<br />
psscale -Cmap.cpt -D8c/-2c/10c/0.3ch -B100:"Высота рельефа":/:"метры": -A -O -K &gt;&gt; map.ps<br />
psbasemap -R -J -B2/1:."Цифровая модель рельефа Чукотского полуострова": -Lf-173/64.2/66/50:"км":r -O &gt;&gt; map.ps<br />
<br />
pscoast -R160/210/45/70 -JB-175/60/50/70/5c -O -K -Wthinnest,black -X10.5c -A400 &gt;&gt; map.ps<br />
psxy -R -J -L -Wthinnest,black -O &lt;&gt; map.ps<br />
182 64<br />
182 68<br />
192 68<br />
192 64<br />
EOF<br />
<br />
rm .gmt*</nowiki><br />
<br />
'''Заключение'''<br />
<br />
Как видно, с помощью GMT несложно создавать качественные карты. Простота внутреннего формата данных, а также большое разнообразие поддерживаемых форматов, позволяет использовать GMT в связке с любой ГИС и в любом проекте. А широкий выбор предустановленных параметров позволяет отвлечься от дизайнерской рутины, и сосредоточиться на более важных аспектах работы.<br />
<br />
GMT распространяется под лицензией GPL, ее можно свободно скачать с [http://gmt.soest.hawaii.edu/ официального сайта] . На сайте представлена удобная форма, позволяющая относительно легко получить исходный код и скомпилировать его на компьютере с установленной ОС Linux. Для установки GMT можно ознакомиться с [http://www.oceanographers.ru/wiki/BazaZnanijj/OkeanologicheskieProgrammy/GMT?v=1brk небольшой инструкцией]на русском языке . GMT есть в репозиториях многих дистрибутивов, однако установка программы из них сопровождается некоторыми трудностями. Возможное их решение описано [http://fatune.wordpress.com/?p=31 здесь].<br />
<br />
Данное описание проверено на работоспособность под UNIX. Разработчики утверждают, что программу можно использовать также и и под Windows. На официальном ftp-сервере есть уже скомпилированная версия для win-32. Однако, GMT зависит от ряда классических UNIX утилит (например, awk), так что проще будет установить cygwin, и запустить GMT в нем.</div>Amuriy