Створення простих топографічних карт
В цьому уромці підручника «Геоінформаційні системи» буде показано, як створювати прості топографічні карти на основі вільних географічних даних засобами вільного програмного забезпечення (набору програм 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
Локатор з рельєфом
[ред.]В цьому прикладі буде створена карта-локатор Сирії з позначеними адміністративними центрами. Як і у випадку Африки, процес розбито на декілька кроків:
- Зображення морського дна та водоймищ
- Нанесення рельєфу суходолу
- Нанесення текстових позначок (адміністративні центри)
Однак, на відміну від попереднього прикладу, тут буде паралельно створено маску для затінення сусідніх країн.
Також тут знадобиться ряд допоміжних файлів: шкала кольорів для дна та для суходолу, координати і назви міст. В якості моделі рельєфу вибрана 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
Посилання
[ред.]Див. також
[ред.]- Підручник «Геоінформаційні системи»
- Довідку «GMT» (підручник GMT в німецькій Вікіпедії)
- Довідку «Cartographie» у французькій Вікіпедії