GIS - GMT で標高データを描画(その2)!

Updated:


こんにちは。

以前、GMT(The Generic Mapping Tools) で地図に標高データを反映させる方法について紹介しました。

今回は、もう少し洗練したものに仕上げてみました。

(当方、 GIS についてはそれほど精通している訳でもありません。ご承知おきください)

0. 前提条件

1. 標高データの準備

過去記事「GIS - GMT で標高データを描画!」を参照。

2. シェルスクリプトの作成

以下は「メルカトル図法」で描画する例。(各種説明は「GIS - GMT で標高データを描画!」を参照)

File: JAPAN_ETOPO1.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#! /bin/bash

# 各種定数
GRD_PATH=/path/to/ETOPO1_Bed_g_gmt4.grd
IMG_DIR=imgs
IMG_FILE=JAPAN_ETOPO1
T=-10000/10000/100
R=122/148/23/47
J=M12c
E=100
B=a5f5g5
D=9c/-1c/5c/0.5ch
F=+j+a+f12p,Helvetica,black

# 用紙サイズ
gmtset PS_MEDIA = Custom_15cx17c

# 範囲抽出
grdcut $GRD_PATH -R$R -G${IMG_FILE}.grd

# 配色設定
makecpt -Cglobe -T$T -Z > ${IMG_FILE}.cpt

# 陰影データ作成
grdgradient $IMG_FILE.grd -A270 -G${IMG_FILE}.int -Ne0.7

# 図描画
grdimage ${IMG_FILE}.grd -I${IMG_FILE}.int -R -J$J -C${IMG_FILE}.cpt -E$E -X1.5 -Y2.5 -P -K > ${IMG_DIR}/${IMG_FILE}.ps

# 海岸線描画
pscoast -R -J -Dh -W,darkgreen -O -K >> ${IMG_DIR}/${IMG_FILE}.ps

# 縦軸・横軸描画
psbasemap -R -J -B$B -O -K >> ${IMG_DIR}/${IMG_FILE}.ps

# コピーライト描画
echo "132 36 BL 0.0 (c)mk-mode.com" | pstext -R -J -F$F -O -K >> ${IMG_DIR}/${IMG_FILE}.ps

# 凡例描画
psscale -Ba4000g2000f1000 -C${IMG_FILE}.cpt -D$D -O >> ${IMG_DIR}/${IMG_FILE}.ps

# ps -> png
ps2raster ${IMG_DIR}/${IMG_FILE}.ps -Tg -Qt -Qg -E$E
# ps -> jpg
#ps2raster ${IMG_DIR}/${IMG_FILE}.ps -Qt -Qg -E$E

以下は「アルベルス正積円錐図法」で描画する例。(各種説明は「GIS - GMT で標高データを描画!」を参照)

File: JAPAN_ETOPO1_b.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#! /bin/bash

# 各種定数
GRD_PATH=/path/to/ETOPO1_Bed_g_gmt4.grd
IMG_DIR=imgs
IMG_FILE=JAPAN_ETOPO1_b
T=-10000/10000/100
R=122/148/23/47
J=b135/35/30/40/1:20000000
E=100
W=,darkgreen
B=a5f5g5
D=11c/-1c/5c/0.5ch
F=+j+a+f12p,Helvetica,black

# 用紙サイズ
gmtset PS_MEDIA = Custom_15.5cx17c

# 範囲抽出
grdcut $GRD_PATH -R$R -G${IMG_FILE}.grd

# 配色設定
makecpt -Cglobe -T$T -Z > ${IMG_FILE}.cpt

# 陰影データ作成
grdgradient $IMG_FILE.grd -A270 -G${IMG_FILE}.int -Ne0.7

# 図描画
grdimage ${IMG_FILE}.grd -I${IMG_FILE}.int -R -J$J -C${IMG_FILE}.cpt -E$E -X1 -Y2.5 -P -K > ${IMG_DIR}/${IMG_FILE}.ps

# 海岸線描画
pscoast -R -J -Dh -W$W -O -K >> ${IMG_DIR}/${IMG_FILE}.ps

# 縦軸・横軸描画
psbasemap -R -J -B$B -O -K >> ${IMG_DIR}/${IMG_FILE}.ps

# コピーライト描画
echo "132 36 BL 0.0 (c)mk-mode.com" | pstext -R -J -F$F -O -K >> ${IMG_DIR}/${IMG_FILE}.ps

# 凡例描画
psscale -Ba4000g2000f1000 -C${IMG_FILE}.cpt -D$D -O >> ${IMG_DIR}/${IMG_FILE}.ps

# ps -> png
ps2raster ${IMG_DIR}/${IMG_FILE}.ps -Tg -Qt -Qg -E$E
# ps -> jpg
#ps2raster ${IMG_DIR}/${IMG_FILE}.ps -Qt -Qg -E$E

(以前の「GIS - GMT で標高データを描画!」と大きく異なるのは、陰影データを作成・描画している箇所)

3. シェルスクリプトの実行

$ ./JAPAN_ETOPO1.sh
$ ./JAPAN_ETOPO1_b.sh

4. 画像の確認

メルカトル図法で描画した画像、アルベルス正積円錐図法で描画した画像を確認してみる。

JAPAN_ETOPO1 JAPAN_ETOPO1_B

5. 参考サイト


綺麗な地図が描画できるので、何かと応用できそうです。

以上。





 

Sponsored Link

 

Comments