Створення простих топографічних карт

В цьому уромці підручника «Геоінформаційні системи» буде показано, як створювати прості топографічні карти на основі вільних географічних даних засобами вільного програмного забезпечення (набору програм GMT).

Перед початком уроку слід ознайомитись з довідкою «Звідки взяти дані для географічних карт».

Підтримка кирилиці

ред.

Програми з набору GMT працюють з текстовими рядками, що мають 1-байтове (8-бітне) кодування. Кирилічні тексти підтримує кодування ISO-8859-5. Аби встановити цю кодову сторінку, слід виконати команду:

GMT gmtset CHAR_ENCODING ISO-8859-5

Недоліком цієї кодової сторінки є те, що вона не підтримує стандартних символів градуса та хвилини, які використовують програми з набору GMT для позначення на картах. Виправити цю проблему можна додаванням відповідних символів до файлу з кодуванням. В системах Linux цей файл матиме ім'я:

 /usr/share/gmt/pslib/ISO-8859-5.ps

в системах Windows цей файл може мати ім'я:

 C:\programs\GMT\share\pslib\ISO-8859-5.ps

Файл, яким визначене стандартне кодування має ім'я Standard+.ps.

Слід обрати позиції символів, що не використовуються, та замінити їх на символи /ring та /quotesingle. Можна навіть замінити весь файл на кодування Windows-1251, тоді на системах Windows не доведеться змінювати кодування текстових рядків в командах та текстових файлах. Наприклад, файл стандартного кодування може мати такий вигляд:

/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

Програма iconv зручно і швидко виконує перекодування між різними кодовими сторінками. Достатньо виконати одну команду:

iconv -t ISO-8859-5 < системне_кодування.sh > кодування_iso.sh

Аби змінити кодування в файлі системне_кодування.sh на бажане кодування ISO-8859-5. Кодова сторінка Windows-1251 в програмі iconv також зветься і cp1251:

iconv -t cp1251 < системне_кодування.sh > кодування_win.sh


Південна Африка

ред.

Початок роботи

ред.

Для створення карти знадобиться дві шкали кольорів: для суходолу, та для океанського дна.

# Файл afrika_land.cpt
   0   0  97  71    100  16 122  47
 100  16 122  47    500 232 215 125
 500 232 215 125   1500 161  67   0
1500 161  67   0   3000 130  30  30
3000 130  30  30   4000 110 110 110
4000 110 110 110   5000 255 255 255
5000 255 255 255   6000 255 255 255
B   0  97  71
F 255 255 255
N 255 255 255

Другий файл, шкала кольорів для океанського дна:

# Файл afrika_sea.cpt
-12000  36  38 175   -8000  56  58 195
 -8000  56  58 195   -4000  70  72 214
 -4000  70  72 214   -2000  81 102 217
 -2000  81 102 217   -1000 100 129 223
 -1000 100 129 223    -500 131 161 230
  -500 131 161 230    -200 164 192 240
  -200 164 192 240       0 170 200 255
B  36  38 175
F 170 200 255
N 255 255 255

В цьому прикладі використані дані з набору ETOPO1, файл ETOPO1_Ice_c_gmt4.grd. Після завантаження запакованого файлу в форматі GNU Zip (.gz) та розпакування, слід створити витяг бажаного прямокутника:

GMT grdcut ETOPO1_Ice_c_gmt4.grd -R-10/70/-50/10 -Gafrika.grd

Пояснення:

GMT grdcut
виклик програми grdcut, яка і створює необхідний витяг
-R0/-36/52/0r
прямокутник, який визначається двома кутами: нижнім лівим (0° довготи та -36° широти); та верхнім правим (52° довготи та 0° широти).
-Gafrika.grd
результати роботи будуть збережені в файлі afrika.grd.

Крок 1

ред.

Виконати команду:

GMT grdgradient afrika.grd -A45 -Ne0.5 -Gafrika_gradient.grd</code>

Пояснення:

GMT grdgradient
ефект відмивки обчислює програма grdgradient
afrika.grd
джерелом даних вказаний файл afrika.grd
-A45
азимут джерела світла. В цьому випадку, дорівнює -45°, тобто, північний схід.
-Ne0.5
ефект відмивки буде нормалізованим (-N). Параметр "e" вказує, що буде використано розподіл Лапласа. Інтенсивність дорівнює 0.5.
-Gafrika_gradient.grd
результати обчислень будуть збережені в файлі afrika_gradient.grd.

Крок 2

ред.

Виконати команду:

GMT grdimage afrika.grd -Cafrika_sea.cpt -JL30/-20/-28/-12/18c -R0/-36/52/0r -X1.5c -Y8c -P -K >afrika.ps

Пояснення:

grdimage
гіпсометрична карта буде обчислена програмою grdimage
afrika.grd
джерелом даних вказаний файл afrika.grd
-Cafrika_meer.cpt
параметром -C як шкала кольорів вказаний файл afrika_sea.cpt
-JL30/-20/-28/-12/18c
параметром -J вказана картографічна проекція Ламберта. Центр проекції знаходиться за координатами 30° довготи та -20° широти. Стандартні паралелі -28° та -12° широти. Результат буде шириною 18 см.
-R0/-36/52/0r
прямокутник, який визначається двома кутами: нижнім лівим (0° довготи та -36° широти); та верхнім правим (52° довготи та 0° широти).
-X1.5c
центр координат посунуто в напрямі вісі x (-X) на 1.5 см від краю аркуша.
-Y8c
центр координат посунуто в напрямі вісі y (-Y) на 8 см від краю аркуша.
-P
аркуш розгорнуто в форматі "портрету".
-K
це не остання команда
>afrika.ps
результат обчислень буде додано до PostScript файлу з іменем afrika.ps

Крок 3

ред.

Виконати команду:

GMT pscoast -JL30/-20/-28/-12/18c -R0/-36/52/0r -Gc -Di -P -K -O >>afrika.ps

Пояснення:

GMT pscoast
команда pscoast запам'ятає границі суходолу
-JL30/-20/-28/-12/18c
параметром -J вказана картографічна проекція Ламберта. Центр проекції знаходиться за координатами 30° довготи та -20° широти. Стандартні паралелі -28° та -12° широти. Результат буде шириною 18 см.
-R0/-36/52/0r
прямокутник, який визначається двома кутами: нижнім лівим (0° довготи та -36° широти); та верхнім правим (52° довготи та 0° широти).
-Gc
параметр -Gc зазначає, що вказані границі служитимуть як края відсікання
-Di
точність ліній -D середня "i".
-P
аркуш розгорнуто в форматі "портрету".
-K
це не остання команда
-O
це не перша команда
>>afrika.ps
результат обчислень буде додано до PostScript файлу з іменем afrika.ps

Після виконання цієї команди будуть вказані края відрізання за лінією границі суходолу. Тому на наступному кроці карта океанського дна не буде затерта картою рельєфу на суходолі. Ці края буде знято командою на 5 кроці.

Крок 4

ред.

Виконати команду:

GMT grdimage afrika.grd -Iafrika_gradient.grd -Cafrika_land.cpt -JL30/-20/-28/-12/18c -R0/-36/52/0r -P -K -O >>afrika.ps

Пояснення:

grdimage
гіпсометрична карта буде обчислена програмою grdimage
afrika.grd
джерелом даних вказаний файл afrika.grd
-Iafrika_schatten.grd
для створення ефекту відмивки "-I" будуть використані дані з файлу afrika_gradient.grd
-Cafrika_land.cpt
параметром -C як шкала кольорів вказаний файл afrika_land.cpt
-JL30/-20/-28/-12/18c
параметром -J вказана картографічна проекція Ламберта. Центр проекції знаходиться за координатами 30° довготи та -20° широти. Стандартні паралелі -28° та -12° широти. Результат буде шириною 18 см.
-R0/-36/52/0r
прямокутник, який визначається двома кутами: нижнім лівим (0° довготи та -36° широти); та верхнім правим (52° довготи та 0° широти).
-P
аркуш розгорнуто в форматі "портрету".
-K
це не остання команда
-O
це не перша команда
>>afrika.ps
результат обчислень буде додано до PostScript файлу з іменем afrika.ps

Крок 5

ред.

Виконати команду:

GMT pscoast -JL30/-20/-28/-12/18c -R0/-36/52/0r -Q -K -O >>afrika.ps

Пояснення:

GMT pscoast
команда pscoast запам'ятає границі суходолу
-JL30/-20/-28/-12/18c
параметром -J вказана картографічна проекція Ламберта. Центр проекції знаходиться за координатами 30° довготи та -20° широти. Стандартні паралелі -28° та -12° широти. Результат буде шириною 18 см.
-R0/-36/52/0r
прямокутник, який визначається двома кутами: нижнім лівим (0° довготи та -36° широти); та верхнім правим (52° довготи та 0° широти).
-Q
зняття краю відсікання, встановленого на 3 кроці
-K
це не остання команда
-O
це не перша команда
>>afrika.ps
результат обчислень буде додано до PostScript файлу з іменем afrika.ps

Після виконання цієї команди буде знято края відсікання, встановлені на 3 кроці. Тепер наступні команди стосуватимуться всієї карти.

Крок 6

ред.

Виконати команду:

GMT pscoast -JL30/-20/-28/-12/18c -R0/-36/52/0r -Ba10g10 -W0.25p,40/40/120 \
            -Ia/0.25p,40/40/120 -N1/0.75p,255/255/255 -Di -Lfx15.5c/1c/-20/1000 \
            -P -K -O --LABEL_FONT_SIZE=14p --ANNOT_FONT_SIZE_PRIMARY=12p >>afrika.ps

Пояснення:

pscoast
програма pscoast може також наносити лінії кордонів на карту
-JL30/-20/-28/-12/18c
параметром -J вказана картографічна проекція Ламберта. Центр проекції знаходиться за координатами 30° довготи та -20° широти. Стандартні паралелі -28° та -12° широти. Результат буде шириною 18 см.
-R0/-36/52/0r
прямокутник, який визначається двома кутами: нижнім лівим (0° довготи та -36° широти); та верхнім правим (52° довготи та 0° широти).
-Ba10g10
будуть нанесені лінії широти і довготи (-B). Кожні 10 градусів буде проведена лінія (a10) та напис (g10).
-W0.25p,40/40/120
лінії узбережжя (-W) мають ширину 0.25 пункта і колір 40/40/120 в просторі RGB.
-Ia/0.25p,40/40/120
лінії річок (-I) всіх категорій (a) мають ширину 0.25 пункта та колір 40/40/120 в просторі RGB.
-N1/0.75p,255/255/255
лінії кордонів (-N) типу 1 (країни) мають ширину 0.75 пункта та колір 255/255/255 в просторі RGB.
-Di
точність ліній (-D) середня (i).
-Lfx15.5c/1c/-20/1000
шкала масштабу чорнобіла структурована (-Lf). Вона знаходиться по відношенню до нижнього лівого кута (x) карти на відстані 15.5 см від лівого та 1 см нижнього краю карти. Масштаб обчислений на -20° ширини і становить 1000 км завдовшки.
-P
аркуш розгорнуто в форматі "портрету".
-K
це не остання команда
-O
це не перша команда
--LABEL_FONT_SIZE=14p
розмір шрифта для позначення масштабу становитиме 14 пунктів
--ANNOT_FONT_SIZE_PRIMARY=12p
розмір шрифта для позначення довготи і широти становитиме 12 пунктів.
>>afrika.ps
результат обчислень буде додано до PostScript файлу з іменем afrika.ps

Крок 7

ред.

Виконати команду:

GMT psscale -Cafrika_land.cpt -D0.5c/2.5c/4c/0.4c -B:"m": -L -P -O --LABEL_FONT_SIZE=14p --ANNOT_FONT_SIZE_PRIMARY=12p >>afrika.ps

Пояснення:

psscale
використаємо команду psscale для створення шкали висот
-Cafrika_land.cpt
параметром -C як шкала кольорів вказаний файл afrika_land.cpt
-D0.5c/2.5c/4c/0.4c
шкала (-D) знаходитиметься на 0.5 см від лівого та 2.5 см від нижнього краю карти і матиме довжину 4 см та ширину 0.4 см.
-B:"m":
поруч з відмітками висоти стоятиме літера "m"
-L
позначки висоти для відрізків рівної довжини
-P
аркуш розгорнуто в форматі "портрету".
-O
це не перша команда
--LABEL_FONT_SIZE=14p
розмір шрифта для позначення шкали становитиме 14 пунктів
--ANNOT_FONT_SIZE_PRIMARY=12p
розмір шрифта для позначення приміток шкали висоти становитиме 12 пунктів.
>>afrika.ps
результат обчислень буде додано до PostScript файлу з іменем afrika.ps. Оскільки параметр -K відсутній, то файл завершений і готовий для перегляду.

Завершення роботи

ред.

В результаті зроблених кроків отримано файл в форматі PostScript. Його можна переглядати в програмі Evince, GhostView, та інших. Зручний спосіб конвертації в растрові формати пропонує програма convert з набору ImageMagick:

convert -density 250 afrika.ps -flatten -trim -antialias afrika.jpg

тепер маємо файл afrika.jpg в форматі JPEG, який можна переглядати майже будь-де.

Вся послідовність команд виглядає так:

# підготовка. витяг
GMT grdcut ETOPO1_Ice_c_gmt4.grd -R-10/70/-50/10 -Gafrika.grd
# крок 1. відмивка
GMT grdgradient afrika.grd -A45 -Ne0.5 -Gafrika_gradient.grd
# крок 2. океанське дно
GMT grdimage afrika.grd -Cafrika_sea.cpt -JL30/-20/-28/-12/18c -R0/-36/52/0r -X1.5c -Y8c -P -K >afrika.ps
# крок 3. края відсікання
GMT pscoast -JL30/-20/-28/-12/18c -R0/-36/52/0r -Gc -Di -P -K -O >>afrika.ps
# крок 4. відмивка та гіпсометрична карта
GMT grdimage afrika.grd -Iafrika_gradient.grd -Cafrika_land.cpt -JL30/-20/-28/-12/18c -R0/-36/52/0r -P -K -O >>afrika.ps
# крок 5. зняття країв відсікання
GMT pscoast -JL30/-20/-28/-12/18c -R0/-36/52/0r -Q -K -O >>afrika.ps
# крок 6. лінії кордонів, річок та берегів
GMT pscoast -JL30/-20/-28/-12/18c -R0/-36/52/0r -Ba10g10 -W0.25p,40/40/120 -Ia/0.25p,40/40/120 \
            -N1/0.75p,255/255/255 -Di -Lfx15.5c/1c/-20/1000 -P -K -O \
            --LABEL_FONT_SIZE=14p --ANNOT_FONT_SIZE_PRIMARY=12p >>afrika.ps
# крок 7. шкала висот
GMT psscale -Cafrika_land.cpt -D0.5c/2.5c/4c/0.4c -B:"m": \
            -L -P -O --LABEL_FONT_SIZE=14p --ANNOT_FONT_SIZE_PRIMARY=12p >>afrika.ps
# конвертація в формат JPEG
convert -density 250 afrika.ps -flatten -trim -antialias afrika.jpg

Локатор з рельєфом

ред.

В цьому прикладі буде створена карта-локатор Сирії з позначеними адміністративними центрами. Як і у випадку Африки, процес розбито на декілька кроків:

  1. Зображення морського дна та водоймищ
  2. Нанесення рельєфу суходолу
  3. Нанесення текстових позначок (адміністративні центри)

Однак, на відміну від попереднього прикладу, тут буде паралельно створено маску для затінення сусідніх країн.

Також тут знадобиться ряд допоміжних файлів: шкала кольорів для дна та для суходолу, координати і назви міст. В якості моделі рельєфу вибрана ETOPO1.

Шкала кольорів для морського та озерного дна:

# File afrika_sea.cpt
-12000  36  38 175   -8000  56  58 195
 -8000  56  58 195   -4000  70  72 214
 -4000  70  72 214   -2000  81 102 217
 -2000  81 102 217   -1000 100 129 223
 -1000 100 129 223    -500 131 161 230
  -500 131 161 230    -200 164 192 240
  -200 164 192 240       0 170 200 255
B  36  38 175
F 170 200 255
N 255 255 255

Шкала кольорів для суходолу:

# File europa_land.cpt
    0 148 191 139     200 189 204 150
  200 189 204 150     500 239 235 192
  500 239 235 192    1000 222 214 163
 1000 222 214 163    2000 202 185 130
 2000 202 185 130    5000 192 154  83
B 160 194 222
F 192 154  83
N 255 255 255

Координати та назви міст:

# File cities.txt
37:10    36:13     9 0 1 TL Халеб
36.292   33.513    9 0 1 BL @_Дамаск@_
36:6:22  32:37:31  9 0 1 BC Дара
40:9     35:20     9 0 1 TL Дейр-ез-Зор
36:45    35:08     9 0 1 TL Хама
40:45    36:29     9 0 1 TL Хасеке
36:42:34 34:43:51  9 0 1 TL Хомс
36:38    35:56     9 0 1 TL Ідліб
35:47    35:31     9 0 1 TL Латакія
35:49:26 33:07:32  9 0 1 TL Ель-Кунейтра
39:01    35:57     9 0 1 BL Ракка
36:34    32:42     9 0 1 TL Ас-Сувейда
35:53    34:53     9 0 1 TL Тартус
 
Готова карта.

Сценарій створення карти і маски:

#!/bin/sh

SRC_GRD=ETOPO1_Ice_c_gmt4.grd

# координати крайніх точок, взяті з шаблону карти локатора
# Шаблон:Карта розташування Сирія
# захід, схід, південь, північ
RECT=34.9/42.7/32.0/37.6
PROJ=M16c
ORIENT=-P

# робочий файл, де зберігатиметься витяг
GRD=syria.grd

# перекодування назв міст
GMT gmtset CHAR_ENCODING ISO-8859-5
iconv -t ISO-8859-5 cities.txt > _cities.iso.txt

# створення витягу в разі потреби
if [ ! -e ${GRD} ] ; then
    GMT grdcut "${SRC_GRD}" -G${GRD} -R${RECT}
fi

# створення тіней для ефекту відмивки
if [ ! -e gradient.grd ] ; then
    GMT grdgradient ${GRD} -A135 -Ne0.2 -Ggradient.grd
fi

# фарбування морського дна
GMT grdimage ${GRD} -Cafrika_sea.cpt -E300 \
    -J${PROJ} -R${RECT} ${ORIENT} -K >syria.ps

# границі відсікання за лінією узбережжя
GMT pscoast -J${PROJ} -R${RECT} -Gc -Di ${ORIENT} -K -O >>syria.ps

# нанесення рельєфу суходолу з ефектом відмивки
GMT grdimage ${GRD} -Igradient.grd -Ceuropa_land.cpt -E300 \
    -J${PROJ} -R${RECT} ${ORIENT} -K -O >>syria.ps

# скасування відсікання
GMT pscoast -J${PROJ} -R${RECT} -Q -K -O >>syria.ps

# нанесення річок (-I), та кордонів (-N)
GMT pscoast -J${PROJ} -R${RECT} -W0.25p,9/120/171 \
    -I1/0.5p,9/120/171 -I2/0.5p,9/120/171 \
    -N1/0.85p,5/5/5 -Na/0.55p,105/105/105 -Df \
    ${ORIENT} -K -O >>syria.ps

# позначки населених пунктів
GMT psxy _cities.iso.txt -J${PROJ} -R${RECT} \
    -Ss0.18c -G204/0/0 -W0.5p -P -K -O >>syria.ps

# нанесення назв населених пунктів
GMT pstext _cities.iso.txt -J${PROJ} -R${RECT} \
    -Dj0.06c/0.06c -P -O >>syria.ps

# створення заготовки для маски
GMT pscoast -J${PROJ} -R${RECT} -G0/0/0 -S255/255/255 -N1/0.85p,255/255/255 -Df >clip.ps

convert -density 150 syria.ps -flatten -trim -antialias syria.tiff
convert -density 150 clip.ps -flatten -trim -antialias clip.tiff

В результаті роботи буде отримано два файла: syria.tiff — основа карти, clip.tiff — заготовка для маски.

Тепер обидва файли слід відкрити в графічному редакторі, наприклад, w:GIMP в заготовці маски слід видалити чорну область, що відповідає території Сирії та виправити будь-які зайві артефакти. Тепер готову маску слід нанести додатковим шаром з прозорістю 30% та режимом "Darken only" на основу. В результаті отримаємо готову карту.

Піренейський півострів

ред.

Вступ

ред.
 
Топографічна карта Піренейського півострова

Піренейський (або Іберійський) півострів — найбільший у Південній Європі. Топографічну карту цього півострова будемо створювати на основі двох наборів даних: ETOPO1 (для суходолу) та GLOBE (для океанського дна). На відміну від попереднього прикладу, тут вже присутні значні текстові фрагменти на карті, тому дуже важливо правильно розібратись з підтримкою кирилічних шрифтів.

Допоміжні файли

ред.

Міста

ред.
# File ih_cities_1.txt
 03:03 36:46 8 0 1 BR @_Алжир@_
 02:10 41:24 8 0 1 TL Барселона
-03:42 40:25 8 0 1 BR @_Мадрид@_
# File ih_cities_2.txt
-09:10 38:43 8 0 1 TL @_Лісабон@_
-04:25 36:43 8 0 1 TL Малага
-00:38 35:41 8 0 1 BR Оран
-05:59 37:23 8 0 1 TL Севілья
-05:48 35:47 8 0 1 BR Танжер
-00:22 39:29 8 0 1 TL Валенсія
-00:54 41:39 8 0 1 BL Сарагоса
# File ih_cities_3.txt
-01:51 39:00 8 0 1 TR Альбасете
-03:22 40:28 8 0 1 BL Алькала-де-Енарес
-05:27 36:08 8 0 1 BL Альхесірас
-00:29 38:21 8 0 1 TL Аліканте
-02:26 36:50 8 0 1 TL Альмерія
-06:58 38:53 8 0 1 TL Бадахос
 02:16 41:29 8 0 1 BL Бадалона
-02:56 43:16 8 0 1 TL Більбао
 02:50 36:27 8 0 1 TL Бліда
-00:35 44:50 8 0 1 TL Бордо
-03:41 42:21 8 0 1 TR Бургос
-06:17 36:32 8 0 1 TR Кадіс
-00:59 37:37 8 0 1 TL Картахена
-00:03 39:58 8 0 1 TL Кастельйон-де-ла-Плана
-04:46 37:53 8 0 1 BR Кордова
 01:20 36:10 8 0 1 BL Шлеф
-00:41 38:16 8 0 1 BR Ельче
-03:44 40:18 8 0 1 TL Хетафе
-05:42 43:32 8 0 1 BL Хіхон
-03:36 37:10 8 0 1 TR Гранада
 02:04 41:19 8 0 1 BR Л'Успіталет-да-Любрагат
-06:56 37:15 8 0 1 TL Уельва
-03:47 37:46 8 0 1 BL Хаен
-06:07 36:40 8 0 1 BR Херес-де-ла-Фронтера
-08:24 43:22 8 0 1 BR Ла-Корунья
-05:34 42:35 8 0 1 TL Леон
-02:27 42:28 8 0 1 TL Логроньйо
 03:53 43:37 8 0 1 BR Монпельє
 00:05 35:56 8 0 1 TL Мостаганем
-03:52 40:20 8 0 1 TR Мостолес
-01:08 37:59 8 0 1 BR Мурсія
 04:21 43:50 8 0 1 BL Нім
-07:52 42:20 8 0 1 TL Оренсе
-05:50 43:21 8 0 1 TR Ов'єдо
 02:39 39:34 8 0 1 TR Пальма
-01:39 42:49 8 0 1 TL Памплона
 02:54 42:42 8 0 1 BR Перпіньян
-08:35 41:10 8 0 1 BL Порто
 02:07 41:33 8 0 1 BR Сабадель
-05:40 40:58 8 0 1 BL Саламанка
-01:59 43:19 8 0 1 TL Сан-Себастьян
-03:48 43:28 8 0 1 BL Сантандер
-00:38 35:12 8 0 1 BL Сідді-Бель-Аббес
 01:14 41:07 8 0 1 TL Таррагона
-05:22 35:34 8 0 1 BL Тетуан
-01:19 34:53 8 0 1 BL Тлемсен
 01:27 43:36 8 0 1 TR Тулуза
-04:43 41:38 8 0 1 BR Вальядолід
-08:43 42:14 8 0 1 BL Віго
-02:40 42:51 8 0 1 TL Віторія

Країни

ред.
# File ih_countries.txt
 02:30 35:15 10 0 1 MC А л ж и р
 01:20 42:21  8 0 1 MC А н д о р р а
 02:00 44:15 10 0 1 MC Ф р а н ц і я
-03:05 34:58  8 0 1 MC М а р о к к о
-08:00 39:55 10 0 1 MC П о р т у г а л і я
-03:30 39:35 10 0 1 MC І с п а н і я

Вершини

ред.
# File ih_hoehen_1.txt
 04:12 44:55 6 0 1 TC 1754
 04:03 36:28 6 0 1 TC 2308
-01:50 41:47 6 0 1 TC 2313
-04:39 34:59 6 0 1 TC 2456
-05:18 40:15 6 0 1 TC 2592
-04:48 43:12 6 0 1 TC 2648
 00:39 42:38 6 0 1 TC 3404
-03:19 37:03 6 0 1 TC 3478
# File ih_hoehen_2.txt
-02:15 39:15 6 0 1 TC 740
-04:45 42:05 6 0 1 TC 750
# File ih_hoehen_3.txt
-04:15 35:45 6 0 1 BC 1500
 04:20 41:00 6 0 1 BC 2700
-00:15 36:50 6 0 1 BC 2700
 04:00 37:55 6 0 1 BC 2800
-04:45 44:30 6 0 1 BC 4500
-10:00 36:15 6 0 1 BC 4800
-10:00 44:15 6 0 1 BC 5000

Гірські масиви

ред.
# File ih_mountains.txt
-03:00 37:35 8  15 1 MC К о р д і л ь є р а  Б е т і к а
-05:27 35:16 8 -35 1 MC Е р -
-05:04 35:06 8 -25 1 MC Р и ф
-02:40 42:15 8 -35 1 MC І б е р і й с ь к і
-00:50 41:05 8 -45 1 MC Г о р и
-06:15 42:55 8  10 1 MC К а н т а б р і й с ь к і
-03:50 43:10 8   0 1 MC г о р и
-05:47 40:25 8  15 1 MC Ц е н т р а л ь н а
-03:40 41:05 8  25 1 MC к о р д і л ь є р а
 00:43 42:46 8 -10 1 MC П і р е н е ї
 02:30 36:00 8  15 1 MC Т е л ь - А т л а с
 03:10 44:50 8   0 1 MC Ц е н т р а л ь н и й
 03:10 44:35 8   0 1 MC м а с и в

Річки

ред.
# File ih_rivers.txt
-07:38 41:05 6   8 1 MC Дору
-03:31 41:45 6 -16 1 MC Дору
-01:11 41:58 6 -41 1 MC Ебро
 00:40 44:05 6 -18 1 MC Гаронна
-05:21 37:38 6  20 1 MC Гвадалквівір
-07:47 37:51 6  88 1 MC Гвадіана
-03:36 39:06 6  24 1 MC Гвадіана
 04:35 44:34 6  82 1 MC Рейн
-05:25 39:43 6   0 1 MC Тагус
-08:29 39:17 6  40 1 MC Тагус

Моря

ред.
# File ih_seas.txt
-10:20 41:00 10 85 1 MC А т л а н т и ч н и й  о к е а н
-02:40 44:10  8  0 1 MC Б і с к а й с ь к а 
-02:40 43:55  8  0 1 MC з а т о к а
 01:50 37:30 10 20 1 MC С е р е д з е м н е  м о р е

Легенда

ред.
# File ih_legend_1.txt
L 10 1 L Піренейський півострів
G 0.1c
L 6 1 L Рівнокутова конічна проекція Ламберта
L 6 1 L Стандартні паралелі 38\260 та 42\260 півн.
# File ih_legend_2.txt
S 0.1c s 0.18c 204/0/0 0.5p 0.1c Понад 1 000 000 мешканців
S 0.1c s 0.18c 204/0/0 0.5p 0.1c Від 500 000 до 1 000 000 мешканців
S 0.1c c 0.12c 204/0/0 0.5p 0.1c Менше 500 000 мешканців
# File ih_legend_3.txt
S 0.1c s 0.06c 0/0/0 - 0.35c \040
# File ih_legend_4.txt
S 0.4c l 0.28c/@_Мадрид@_ 0/0/0 - 1c Столиця
S 0.4c - 0.8c - 0.75p,100/100/100 1c Кордон
S 0.4c - 0.8c - 0.5p,9/120/171 1c Річка
# File ih_legend_5.txt
S 0.1c t 0.08c 0/0/0 - 0.3c Висота гори, м н.р.м
S 0.1c c 0.04c 0/0/0 - 0.3c Висота, м н.р.м
S 0.1c i 0.08c 9/120/171 - 0.3c Глибина, м
# File ih_legend_6.txt
L 8 1 L Глибина
# File ih_legend_7.txt
L 8 1 L Висота

Палітри та шкали кольорів

ред.
# File ih_land.cpt
   0 148 191 139    200 189 204 150
 200 189 204 150    500 239 235 192
 500 239 235 192   1000 222 214 163
1000 222 214 163   2000 202 185 130
2000 202 185 130   5000 192 154  83
B 148 191 139
F 192 154  83
N 148 191 139
# File ih_sea.cpt
-5000 160 194 222   -2000 173 203 230
-2000 173 203 230   -1000 185 213 237
-1000 185 213 237    -500 196 223 244
 -500 196 223 244    -200 206 231 249
 -200 206 231 249       0 218 240 253
B 160 194 222
F 218 240 253
N 255 255 255
# File ih_sea_scale.cpt
   0 218 240 253    200 206 231 249
 200 206 231 249    500 196 223 244
 500 196 223 244   1000 185 213 237
1000 185 213 237   2000 173 203 230
2000 173 203 230   5000 160 194 222
B 218 240 253
F 160 194 222
N 255 255 255

Команди

ред.
#!/bin/sh

TOPO_RECT=-15/10/30/50
IMG_RECT=-10.75/34.5/5.5/45r
PROJ=L-3/40/38/42/18c

GMT gmtset CHAR_ENCODING ISO-8859-5

# підготовка даних: склеювання окремих сегментів даних GLOBE та
# створення витягу з даних ETOPO1
GMT grdpaste f10g.grd g10g.grd -Gih_land.grd
GMT grdgradient ih_land.grd -A135 -Ne0.2 -Gih_gradient.grd
GMT grdcut ETOPO1_Ice_c_gmt4.grd -R${TOPO_RECT} -Gih_sea.grd

# створення гіпсометричної карти океанського дна, суходолу та
# застосування ефекту відмивки до суходолу
GMT grdimage ih_sea.grd -Cih_sea.cpt -J${PROJ} -R${IMG_RECT} \
             -E300 -X1.5c -Y8.5c -P -K >ih.ps
GMT pscoast -J${PROJ} -R${IMG_RECT} -Gc -Dh -P -K -O >>ih.ps
GMT grdimage ih_land.grd -Iih_gradient.grd -Cih_land.cpt \
             -J${PROJ} -R${IMG_RECT} -P -K -O >>ih.ps
GMT pscoast -J${PROJ} -R${IMG_RECT} -Q -K -O >>ih.ps
GMT pscoast -J${PROJ} -R${IMG_RECT} -Ba0g4 -W0.25p,9/120/171 \
            -Ia/0.25p,9/120/171 -I1/0.5p,9/120/171 -I2/0.5p,9/120/171 \
            -N1/0.75p,100/100/100 -Dh -P -K -O --FRAME_PEN=0.8p \
            --GRID_PEN_PRIMARY=0.25p,9/120/171 >>ih.ps

# нанесення координатної сітки
GMT psbasemap -J${PROJ} -R${IMG_RECT} -Ba4g0SN -Xa-0.2c -Ya0c -P -K -O \
              --ANNOT_FONT_PRIMARY=1 --ANNOT_FONT_SIZE_PRIMARY=6p \
              --OBLIQUE_ANNOTATION=6 --PLOT_DEGREE_FORMAT=ddd:mm:ss \
              --BASEMAP_FRAME_RGB=+9/120/171 --FRAME_PEN=0p,0_100:0p \
              --TICK_PEN=0p,0_100:0p --TICK_LENGTH=-0.45c >>ih.ps
GMT psbasemap -J${PROJ} -R${IMG_RECT} -Ba4g0WE -Xa0c -Ya0.2c -P -K -O \
              --ANNOT_FONT_PRIMARY=1 --ANNOT_FONT_SIZE_PRIMARY=6p \
              --OBLIQUE_ANNOTATION=6 --PLOT_DEGREE_FORMAT=ddd:mm:ss \
              --BASEMAP_FRAME_RGB=+9/120/171 --FRAME_PEN=0p,0_100:0p \
              --TICK_PEN=0p,0_100:0p --TICK_LENGTH=-0.55c >>ih.ps

# нанесення відміток міст з різною кількістю населення
GMT psxy ih_cities_1_iso.txt ih_cities_2_iso.txt -J${PROJ} -R${IMG_RECT} \
          -Ss0.18c -G204/0/0 -W0.5p -P -K -O >>ih.ps
GMT psxy ih_cities_1.txt -J${PROJ} -R${IMG_RECT} \
          -Ss0.06c -G0/0/0 -P -K -O >>ih.ps
GMT psxy ih_cities_3.txt -J${PROJ} -R${IMG_RECT} \
         -Sc0.12c -G204/0/0 -W0.5p -P -K -O >>ih.ps
GMT psxy ih_hoehen_1.txt -J${PROJ} -R${IMG_RECT} \
         -St0.08c -G0/0/0 -P -K -O >>ih.ps
GMT psxy ih_hoehen_2.txt -J${PROJ} -R${IMG_RECT} \
         -Sc0.04c -G0/0/0 -P -K -O >>ih.ps
GMT psxy ih_hoehen_3.txt -J${PROJ} -R${IMG_RECT} \
         -Si0.08c -G9/120/171 -P -K -O >>ih.ps

# нанесення назв міст
GMT pstext ih_cities_1_iso.txt ih_cities_2_iso.txt \
           -J${PROJ} -R${IMG_RECT} -Dj0.08c/0.08c -P -K -O >>ih.ps
GMT pstext ih_cities_3_iso.txt -J${PROJ} -R${IMG_RECT} \
           -Dj0.06c/0.06c -P -K -O >>ih.ps
GMT pstext ih_hoehen_1_iso.txt ih_hoehen_2_iso.txt \
           -J${PROJ} -R${IMG_RECT} -Dj0c/0.08c -P -K -O >>ih.ps
GMT pstext ih_hoehen_3_iso.txt -J${PROJ} -R${IMG_RECT} \
           -G9/120/171 -Dj0c/0.08c -P -K -O >>ih.ps
GMT pstext ih_rivers_iso.txt ih_seas_iso.txt -J${PROJ} -R${IMG_RECT} \
           -G9/120/171 -P -K -O >>ih.ps
GMT pstext ih_mountains_iso.txt -J${PROJ} -R${IMG_RECT} \
           -P -K -O >>ih.ps
GMT pstext ih_countries_iso.txt -J${PROJ} -R${IMG_RECT} \
           -G100/100/100 -P -K -O >>ih.ps

# легенда карти
GMT pslegend ih_legend_1_iso.txt -J${PROJ} -R${IMG_RECT} \
             -Dx0c/0c/18c/2.5c/TL -C0.2c/0.1c -G255/255/255 \
             -F -P -K -O --FRAME_PEN=0.8p >>ih.ps
GMT pslegend ih_legend_2_iso.txt -J${PROJ} -R${IMG_RECT} \
             -Dx5.4c/0c/12.6c/2.5c/TL -C0.2c/0.15c -P -K -O \
             --ANNOT_FONT_PRIMARY=1 --ANNOT_FONT_SIZE_PRIMARY=8p >>ih.ps
GMT pslegend ih_legend_3_iso.txt -J${PROJ} -R${IMG_RECT} \
             -Dx5.4c/0c/12.6c/2.5c/TL -C0.2c/0.15c -P -K -O \
             --ANNOT_FONT_PRIMARY=1 --ANNOT_FONT_SIZE_PRIMARY=8p >>ih.ps
GMT pslegend ih_legend_4_iso.txt -J${PROJ} -R${IMG_RECT} \
             -Dx11.5c/0c/6.5c/2.5c/TL -C0.2c/0.15c -P -K -O \
             --ANNOT_FONT_PRIMARY=1 --ANNOT_FONT_SIZE_PRIMARY=8p >>ih.ps
GMT pslegend ih_legend_5_iso.txt -J${PROJ} -R${IMG_RECT} \
             -Dx14.8c/0c/3.2c/2.5c/TL -C0.2c/0.15c -P -K -O \
             --ANNOT_FONT_PRIMARY=1 --ANNOT_FONT_SIZE_PRIMARY=8p >>ih.ps
GMT pslegend ih_legend_6_iso.txt -J${PROJ} -R${IMG_RECT} \
             -Dx5.4c/-1.8c/12.6c/0.7c/TL -C0.2c/0.1c -P -K -O >>ih.ps
GMT pslegend ih_legend_7_iso.txt -J${PROJ} -R${IMG_RECT} \
             -Dx12c/-1.8c/6c/0.7c/TL -C0.2c/0.1c -P -K -O >>ih.ps

# масштаб карти, шкала глибин та висоти
GMT psbasemap -J${PROJ} -R${IMG_RECT} -Lfx2.25c/-1.75c/40/300+lкм -P -K -O \
              --LABEL_FONT=1 --LABEL_FONT_SIZE=8p \
              --ANNOT_FONT_PRIMARY=1 --ANNOT_FONT_SIZE_PRIMARY=8p >>ih.ps
GMT psscale -D9.1c/-2c/-3.7c/0.25ch -Cih_sea_scale.cpt -B/:"м": -A -L -P -K -O \
            --ANNOT_FONT_PRIMARY=1 --ANNOT_FONT_SIZE_PRIMARY=8p \
            --ANNOT_OFFSET_PRIMARY=0.15c --FRAME_PEN=0.8p --GRID_PEN_PRIMARY=0.5p \
            --TICK_LENGTH=0.1c >>ih.ps
GMT psscale -D15.5c/-2c/3.7c/0.25ch -Cih_land.cpt -B/:"м": -A -L -P -O \
            --ANNOT_FONT_PRIMARY=1 --ANNOT_FONT_SIZE_PRIMARY=8p --ANNOT_OFFSET_PRIMARY=0.15c \
            --FRAME_PEN=0.8p --GRID_PEN_PRIMARY=0.5p --TICK_LENGTH=0.1c >>ih.ps

# конвертування в формат JPEG
convert -density 150 ih.ps -flatten -trim -antialias iberia_wp.jpg

Посилання

ред.

Див. також

ред.