(Application) 海岸線データ変換(GMT用)
作成者:辻野智紀
概要
GMT (Generic Mapping Tools) フォーマット (ASCII) として配布されている海岸線データを DCL 用の海岸線データに変換するスクリプトです.
GMT フォーマットは以下のような形式でテキストファイルになっています.
> 180.00000 2.00000 180.00000 1.00000 180.00000 0.00000 180.00000 2.00000 > ...
記号「>」によって海岸線の切れ目を表し, その間の実数の第一列目が海岸線の経度, 第二列目が緯度を表します.
ソースファイル
- メインプログラム : gmt2dcl_map.rb. (2016/07/21, 15:00 JST, 文字処理を高速化)
使い方
- 以下のように, 第一引数に GMT フォーマットのアスキーファイル名, 第二引数に DCL の .asc ファイル名を指定して実行する.
$ ruby gmt2dcl_map.rb gmt.txt dcl.asc
DCL への導入
上記によって作成された DCL 用海岸線アスキーデータ dcl.asc は FORTRAN 版 DCL に付属されているバイナリ変換プログラム src/env1/mapdata/cvmapd を用いて変換する.
$ ./cvmapd dcl.asc coast_dclsp # <- 標準入力で 1 つ目にアスキーデータ, 2 つ目に変換後に出力されるバイナリデータ名を記述.
バイナリに変換されたデータ coast_dclsp は DCL のライブラリインストール先の dcldbase ディレクトリ内にコピーする.
# cp coast_dclsp /usr/local/lib/dcldbase # cdcl の場合は cdcldbase 以下.
導入時の注意
- 現在, DCL 側の制限として, 海岸線を描画するための配列要素の最大値が 8192 となっている.
- そのため, 海岸線を一筆書きする際のポリラインの要素数は 8192 が最大となる.
- 特に解像度の高い海岸線データを変換し, DCL に導入する際, 一筆書きする海岸線のデータ点数が 8192 以上だと DCL の実行時にエラーになる可能性がある.
- この制限はハードコーティングされているため, 取り払うには DCL のソースコードを直接書き換え, ライブラリのリビルドが必要となる.
- 書き換えが必要かどうか (変換したデータが 8192 以上のデータを有するかどうか) は, 変換してできた dcl.asc の各行の先頭整数が 8192 x 2 より大きな値であるかどうかで診断できる.
- もし, 8192 x 2 を超えていれば, その最大値 / 2 より大きな値に書き換えなければならない.
書き換えが必要となるソースファイルは以下:
grph2/umpack/{umpmap.f,umfmap.f} grph1/szpack/{szopts.f,szoptt.f} env1/mapdata/cvmapd.f
サンプル
以下に, NOAA において配布されている海岸線データを DCL に追加した例を示す.
描画プログラムは DCL-7.0.0 の demo/grph2/umpack/test07.f を一部改変して使用している.
このデータは NOAA において GMT フォーマットで配布されており, いくつかの解像度に分けられる.
crude (最低解像度) lores (低解像度) inter (中解像度) hires (高解像度) dcl (DCL デフォルト海岸線)
キーワード:[DCL] [GMT] [海岸線]
参照: