いちからはじめる GMT その59 - ps2raster

2011年 12月 1日 掲載


さて,前回使ったコマンド,ps2raster の解説である.

ps2raster は,GMT で出力した PSファイル(EPSファイル)を, ラスタ画像(ビットマップ形式の画像)に変換するコマンドである. とりあえず,コマンドのあとに対象となる PSファイル(EPSファイル)を指定すれば, ラスタ画像ができあがるので,ちょっとためしてみよう. psbasemapコマンドで 1x1 の EPSファイルを作って変換してみる.

$ psbasemap -Jx1 -R0/1/0/1 -Ba1 > a.eps
$ ps2raster a.eps

とすると,新しく「a.jpg」という JPEGファイルができているはずである.

$ ls -ltr
:
:
-rw-r--r--  1 kdo  wheel  22082 Dec 1 21:31 a.eps
-rw-r--r--  1 kdo  wheel  13820 Dec 1 21:31 a.jpg

できあがった a.jpg は,下のような画像である.

ps2raster

なんか横になってるし…. これは,-Pオプションでポートレートモードにすることで解決できる.

$ ps2raster a.eps -P

ps2raster -P

画像の向きはなおったが,今度は余白が広すぎるのが気になる. 描画範囲ギリギリで切り出すのが -Aオプションである.

$ ps2raster a.eps -P -A

ps2raster -P -A

この -Aオプションは,軸ラベルなどが元の EPSファイルの BoundingBox からはみ出したのを修正する用途にも使うことができる(その58).

さて,余白を取り除いたとしても,できあがった JPEGファイルはかなり大きい. いったいどういう縮尺で変換しているのだろう. man を読むとデフォルトでは 300dpi(1cm が 118ピクセル)で変換しているようである. これは印刷用の解像度で,このページのような WEB に掲載するには解像度が高すぎる. 変換時の解像度を変更するには -Eオプションを使う.

$ ps2raster a.eps -P -E72

ps2raster -P -E72

PC の標準解像度 72dpi で変換してみた.

これで,確かに画像のサイズはちょうどいい大きさになった. が,目盛数値はガクガク,枠線はやせすぎで,あまり見栄えがよくない. これは -Qオプションでアンチエイリアシングをかけることで解決できる. -Qt で,テキスト(目盛数値,軸ラベルなど)にアンチエイリアシングがかかる.

$ ps2raster a.eps -P -E72 -Qt

ps2raster -P -E72 -Qt

-Qg で,グラフ(枠線もふくむ)にアンチエイリアシングがかかる.

$ ps2raster a.eps -P -E72 -Qg

ps2raster -P -E72 -Qg

テキストとグラフの両方にアンチエイリアシングをかけるには, -Qtg ではなくて,-Qt と -Qg を両方指定する.

$ ps2raster a.eps -P -E72 -Qt -Qg

ps2raster -P -E72 -Qt -Qg

ps2rasterコマンドのデフォルトの出力は JPEGファイルであるが, -Tオプションで,別の形式の画像ファイルに変換できる. たとえば,-Tg と指定すると,PNGファイルを出力する.

$ ps2raster a.eps -P -Tg

ps2raster -P -Tg

出力画像ファイルの形式の指定は,それぞれ

である. EPS,PDF はラスタ形式ではないが,ps2raster で変換できる.

出力ファイル名は,元の PSファイル(EPSファイル)の拡張子を変えたものになるが, -Fオプションで変更することもできる. このとき拡張子は自動的に付けられるので指定する必要はない(指定しても無効である).

$ ps2raster a.eps -A -Te -Fa2
$ ls -ltr
:
:
-rw-r--r--  1 kdo  wheel  22049 Dec 1 21:40 a2.eps

ps2raster -A -Te -Fa2

この例のように EPSファイルから EPSファイルに変換する場合は, 元のファイル名と出力ファイル名が,デフォルトでは同じになってしまうので, -Fオプションでのファイル名変更は必須となる.

最後に,地図をラスタ画像化するときの小技を紹介しよう.

GMT で地図を描画して,-Eオプションで縮小し, -Qgオプションでアンチエイリアシングをかけると,陸地に細い線が入ることがある.

$ pscoast -Jm0.5 -R120/150/20/50 -Ggray -Dh -P -Ba10f5 > map.eps
$ ps2raster map.eps -E72 -Qt -Qg -Tg

地図

これは,GMT の陸地のデータが分割されているためで, アンチエイリアシングをかけると,継目が見えてしまうのである. これを避けるには,デフォルトの 300dpi でアンチエイリアシングなしでラスタ化した画像を, ImageMagick の convertコマンドなどで縮小するとよい.

$ ps2raster map.eps -Tg -Ftmp
$ convert -resize 24% tmp.png map.png

地図


[ KDOホームにもどる] [ いちからはじめる GMT インデックスにもどる ]


(C) 2011 KDO