X_SYSTEM

名前
序文
x_system の哲学
いかにそれをするか
関連事項
著者

名前

x_system − クロスオーバー誤差解析ツール

序文

x_system は地球物理学的航跡データ、例えば重力、地磁気、水深をグリッド化 する作業を補助するために開発された。航跡に沿ったデータの質が非常に良 く ても、 2 つの航跡が交わる点においてたいてい食い違いが生じることが長い間 認識されていた。これらのクロスオーバー誤差( COE )が大きいと最終的なグリ ッ ドデータセットに人工的な特徴を引き起こし、そうした地図の地質学的解釈 を疑わしくする場合もある。また、極めて条件の悪い航海では高い COE が航跡 に 沿って生じるので、理想的にはグリッド化をしようとする前に除去するべき である。 COE が生じる理由はたくさんあり、ここでは扱わない。もともとは海 上 重力データへの利用だけを意図していたが、 x_system は地磁気や水深も扱 えるように設計されてきた (重力の COE の概観につい て は 、 Wessel and Watts [1988] を参照)。多くの場合、海上重力の COE はたった 2 つのパラメ ータからなる単純なモデルで説明できる。これらは航海の期間中に適用され る DC シフトとドリフト率である。 COE 解析の目標は最小自乗法的に COE を最小 化する各レグの DC シフトとドリフト率を決め、同時に( DC シフト/ドリフ ト 補 正後も)不合理に高い COE が残っている航海を識別することである。さらに 、 COE の標準偏差から各航海について「品質指標」を決めることもでき る 。 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 サプリメント man ページで概説されている GMT フォーマットで記録されて い て 、 1 x 1 度のビン情報ファイル( gmtindex.b と gmtlegs.b )が作られてい てデータベース保管者により管理されていることを想定している。

いかにそれをするか

いかにしてセットアップするかを示すため、必要な段階と使用法、有用な技 術 、 落とし穴を説明していく (各プログラムがすることに関するより正確な記述 は各プログラムの man ページにある)。最初に N 個の航海が GMT データバ ン ク に入っていて、今 x_system パッケージを受け取ったところだとする。ここ で最初にすることは x_init を実行して空のデータベースシステムを作るこ と で ある。これは通常 1 度だけ行われる。手元にある N 個の航海で最悪の場合 N*(N+1)/2 通りの可能な組合せを比較しなければならない。このようなとき に x_setup が役に立つ。これは 1 x 1 度のビン情報ファイルを読んで検査する必 要のある組の一覧を出力する。組を作る 2 つの航海は少なくとも 1 回は同 じ 1 x 1 度のビンに入っており、交差している可能性がある。共通のビンを持た ない組合せは明らかに検査する必要はない。この組の一覧を 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 コンピュータにインストールされた浮動小数点演算ア クセラレータを用いても 1 日当たり平均約 10,000 組の航海しか計算できない 。 巨 大 な xjob ファイルを小さな部分に分け、出力ファイルを xjob.d1, xjob.d2 などとするとうまくいくかもしれない。実行時間の大部分は GMT ファ イ ルを読み込むのに費やされ、メモリに入ってしまえば実際の計算はかなり速 くなる。これが終わると出力ファイル xjob.d には全ての COE の情報がアスキ ー 形式で入っている。各レグの組について航海の名前と開始年を記述したヘッ ダ行があるはずである。次のヘッダ行(又はファイルの終わり)まで続く残り の 行には見つかった各 COE の緯度、経度、時刻、値などが含まれている。これは 一時的なファイルだが、万一に備えてテープにバックアップしておくのが賢 明 である。
x_over
の部分が終わったら、今度はアスキーファイルよりも効率的にデータを アーカイブする。これは x_update によりデータを再配列してバイナリデー タ ベ ースシステムを更新することにより行う。この段階が終われば xjob.d ファ イルを削除することができる (テープにはバックアップされているとする)。こ の段階ではいくつかのオプションが利用可能である。 COE の一部を表示させる には x_list を実行し、渡したオプションに一致する COE を抽出する。例えば 、航海 c2104 の内部の COE 全てを求めたり、時刻と重力の COE だけを出力し たりすることができる。詳細は man ページを参照すること。 x_report を実行 すると、別々の航海の統計的情報、すなわち異なるデータセット(重力/地磁気/ 水深)の COE の平均と標準偏差を出力する。最も良く合う補正を求め る に は x_solve_dc_drift を実行する。このプログラムは DC シフト/ドリフト率を全 ての航海について解き、データベースシステムの情報を更新し、補正テーブル( アスキー及び/又はバイナリ)を作成する。これで始めの GMT データバンクにつ いての COE 解析が完了した。
しかし、後になって、新しい航海の集まりが手に入るであろう。そのときは 同 じ手順に従って戻って x_setup を実行するが、今度は −L オプションを用いて 新しい航海が関与する組だけを返すようにする。それから残りのプログラム を 上に記述したとおりに実行する。

関連事項

GMT(l),

著者

Paul Wessel, Lamont-Doherty Geological Observatory, Palisades, 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.