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