Работа с GMT под Windows

От Уикикниги
Пример за карта на остров w:Ява, създадена с помощта на GMT

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

В тази статия с помощта на пример се описват принципите на създаване на географски карти с помощта на GMT, като се обсъждат някои особенности при работата под операционната система Windows.

Увод[редактиране]

Подробно описание на Linux версията на GMT на английски език има на сайта на Хавайския университет. Дистрибутивът на Windows версията на GMT [1] GMT for Windows] включва архив с обем 15 Мбайта с официална документациея за Linux версията във формати w:PDF и w:HTML. Тази документация обаче е бедна откъм примери за изпълнение на картографски задачи.

Рускоезичните материали за работа с GMT са фрагментарни. Една от малкото статии в Интернет [2] се отнася за 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\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 м които могат да се свалят от сайта на Националния център за геофизически данни към w:NOAA[4]. Данните са разделени в 16 файла с големина от 6 до 59 Мбайта, всеки от които се отнася за определена част от земната повърхност. Например h10g.gz (28 Мбайта) обхваща част от юго-източна Азия с координати 90-180° и.д. и 0-50° с.ш. На сайта има възможност да се даде заявка само за определен фрагмент от файла. Архивът се изпраща на указания имейл адрес.

Файловете се разархивират в каталога 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 м), които могат да се свалят от сайта на w:НАСА [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, разархивира се с програма поддържаща формата 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).

Палитра на релефа[редактиране]

Изрисуване на релефа посредством утилита grdimage
Изрисуване на водните обекти, границите и координатната мрежа посредством утилита pscoast

Палитрата на релефа се задава във файл, като се задава съответствието между височината на релефа и цвета, който се нанася на съответния участък. По-долу е показан пример на палитра. Да наречем файла 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. [http://gmt.soest.hawaii.edu/gmt/gmt_windows.html
  2. Кондратьев М. Начало работы с GMT (на сайта GIS-Lab).
  3. GhostScript. Официален сайт на разработчика на GhostScript.
  4. GLOBE: Download the Elevation Tiles.
  5. Shuttle Radar Topographry Mission. Топографски данни, получени в проекта SRTM.
  6. ds759.3 Data Access.