名前
x_system - クロスオーバー誤差解析ツール
イントロダクション
x_system は地球物理学的トラックデータ、例えば重力、地磁気、
水深をグリッド化する作業を補助するために開発されました。ト
ラックに沿ったデータの質がまったく良くても、2つのトラック
が交わる点においてたいてい食い違いが生じることが長い間認識
されていました。これらのクロスオーバー誤差 (COE) が大きい
と最終的なグリッドデータセットに人工的な特徴を引き起こし、
そうした地図の地質学的解釈を疑わしくする場合もあります。ま
た、極めて悪い航海では高い COE がトラックに沿って生じ、理
想的にはグリッド化をしようとする前に除去するべきです。 COE
が生じる理由はたくさんありここでは扱いません。もともとは海
上重力データへの利用だけを意図していますが、 x_system は
地磁気や水深も扱えるように設計されています (重力の COE の
概観については、 Wessel and Watts [1988] を参照)。多くの場
合、海上重力の COE はたった2つのパラメータからなる単純なモ
デルで説明できます。これらは航海の期間中に適用されるDCシフ
トとドリフト率です。 COE 解析の目標は最小自乗法的に COE を
最小化する各レグのDCシフトとドリフト率を決め、同時に (DCシ
フト/ドリフト補正後も) 不合理に高い COE がある航海を識別す
ることです。さらに、 COE の標準偏差から 'quality index' を
各航海について決めることもできます。DCシフト/ドリフト率モ
デルは地磁気と水深については重力ほど意味を持つものではない
かもしれません。しかし、それでも高い COE を探すことは地磁
気/水深データセットの系統誤差を特定する最良の方法の1つです。
x_system の哲学
与えられた航海に対するDCシフト/ドリフト補正は他の航海との
交差点で生じた COE の値に完全に依存するため、データベース
にデータを追加し続ける限り '最終的な補正' というものはあり
ません。これはシステムが新しいデータを組み入れ新しい COE
を考慮したDCシフト/ドリフト率の新しいセットを計算できなけ
ればならないことを意味します。 x_system はモジュールにな
っていて、1つのプログラムが実際の COE を計算し、1つのプロ
グラムが COE の情報をアーカイブし、残りのプログラムが (悪
い航海を識別するため) 統計的情報を報告したり、 COE データ
ベースのサブセットを抽出したり、最適なDCシフト/ドリフト補
正を求めたりします。このようにして、新しい補正解を求める前
には、新しく生じた COE を計算してデータベースに加えるだけ
で済むようになりました。
x_system パッケージを構成する8つのプログラムはすべて C プ
ログラミング言語で書かれており UNIX マシン上で実行すること
を意図しています。そのため、ユーザが awk, grep, sort のよ
うな UNIX ツールにアクセスすることや、オペレーティングシス
テムが入出力にリダイレクトするための手段を提供していること
を想定しています。同様に、すべての地球物理学的データが GMT
MGG サプリメントマニュアルページで概説されている GMT-フォ
ーマットで記録されていて、 1 × 1 度の bin 情報ファイル
(gmtindex.b と gmtlegs.b) が作られデータベース保管者により
管理されていることを想定しています。
いかにそれをするか
いかにしてセットアップするかを示すため、必要なステップと使
用法、有用な技術、落とし穴を説明していきます (各プログラム
がすることのより正確な記述は各プログラムのマニュアルページ
にあります)。最初に N 個の航海が GMT データバンクに入って
いて、 x_system パッケージを受け取ったばかりだとします。
最初にすることは x_init を実行して空のデータベースシステム
を作ることです。これは通常1度だけ行います。手元にある N 個
の航海で最悪の場合 N*(N+1)/2 通りの可能な組合せを比較しな
ければなりません。このようなとき x_setup が役に立ちます。
これは 1 × 1 度の bin 情報ファイルを読んでチェックする必
要のある組のリストを出力します。組を作る2つの航海は少なく
とも1回は同じ 1 × 1 度の bin に入っていて、交差している可
能性があります。共通の bin を持たない組合せは明らかにチェ
ックする必要はありません。この組のリストを xpairs.lis とし
ましょう。
x_over はパッケージのメインプログラムで COE の位置決めと計
算を担っています。アルゴリズムの詳細は、 Wessel [1989] を参
照してください。2つの航海の名前を引数としてそれらの間に生じ
たすべての COE を (もしあれば) 書き出します。 xpairs.lis に
はごく少数の組しか含まれていないでしょうから、 x_over を実
行する最も効率的な方法は実行可能なコマンド (バッチ) ファイ
ルを作って各組について x_over を実行することです。 awk を
用いてこれを実行します:
pratt% awk '{ printf "x_over -<options> %s %s\n",
$1, $2}' xpairs.lis > xjob
pratt% chmod +x xjob (実行可能にする)
pratt% xjob > xjob.d &
そして xjob が計算している間はくつろいでいてください。これ
は COE 解析の中でも時間のかかる部分で、 SUN-3 コンピュータ
にインストールされた Floating Point Accelerator を用いて1
日あたり平均約 10,000 組の航海になります。巨大な xjob ファ
イルを小さな部分に分け、出力ファイルを xjob.d1, xjob.d2 な
どとするとうまくいくかもしれません。実行時間の大部分は GMT
ファイルを読むのに費やされます; メモリに入れば実際の計算は
かなり速くなります。いま出力ファイル xjob.d にはすべての
COE の情報が ASCII 形式で入っています。各レグの組について
航海の名前と開始年を記述したヘッダレコードがあるはずです。
次のヘッダレコード (または End-Of-File) まで続く残りのレコ
ードには見つかった各 COE の緯度, 経度, 時刻, 値などが含ま
れます。これは一時的なファイルですが、万一に備えてテープに
バックアップしておくのが賢明です。
x_over の部分が終わったら、 ASCII ファイルよりも効率的にデ
ータをアーカイブします。これは x_update でデータを再配列
してバイナリデータベースシステムを更新することにより行いま
す。このステップの後 xjob.d ファイルを削除することができま
す (テープにバックアップされているとします)。この段階では
いくつかのオプションが利用可能です。 COE の一部を表示させ
るには x_list を実行し、渡したオプションに一致する COE を
抽出します。例えば、航海 c2104 の内部の COE すべてを求めた
り、時刻と重力の COE だけを出力したりすることができます。
詳細はマニュアルページを参照してください。 x_report を実
行すると、別々の航海の統計情報、すなわち異なるデータセット
(重力/地磁気/水深) の COE の平均と標準偏差を出力します。最
適な補正を求めるには x_solve_dc_drift を実行します。この
プログラムはDCシフト/ドリフト率をすべての航海について解き、
データベースシステムの情報を更新し、補正テーブル (ASCII お
よび/またはバイナリ) を作ります。これで COE 解析を最初の
GMT データバンクについて完了しました。
しかし、後になって、新しい航海の集合が手に入ります。そのと
きは同じ手順に従って戻って x_setup を実行しますが、今回は
-L オプションを用いて新しい航海が関与する組だけが返るよう
にします。それから残りのプログラムを上に記述したとおりに実
行します。
関連事項
gmt(l)
作者
Paul Wessel, Lamont-Doherty Geological Observatory, Pal-
isades, NY 10964. Wessel, P. XOVER: A Cross-over Error
Detector for Track Data, Computers & Geosciences, 15,
333-346.
Wessel, P. and A. B. Watts, On the Accuracy of Marine
Gravity Measurements, J. Geophys. Res., 93, 393-413, 1988.
15 Oct 2001 x_system(l)
Man(1) output converted with
man2html