前処理

surfaceコマンドの使用に当たっては,あらかじめデータの前処理を行ってエイリアスの除去を行っておくことが必要です.つまりグリッディングの前にこの作業を行うように心がけなければなりません.GMTには3種の前処理(プリプロセシング)プログラムがあります.それらはそれぞれ blockmean, blockmedian, blockmode です.

 blockmeanはグリッド間隔の「箱」の中の平均をとり,blockmedian, blockmodeはそれぞれメディアンとモードを計算します.

 経験的に,私たちは大抵滑らかなデータ(ポテンシャル場など)には平均法を,ぎざぎざした,正規分布的でないデータ(地形など)にはメディアン法かモード法を使っています.これらの前処理コマンドは,-R-Iオプションの他に,次のオプションをとることが出来ます:

表 3.4: 前処理コマンドのオプション類
オプション 機能と意味
-N pixel registrationを選択します.デフォルトではgridlineです.
-W[i| o] iをつけると入力データの4列目から各点のウェイトを読み込みます.iをつけると出力データの4列目にウェイトを書き出します.
 

 ではこれまでに出てきた船舶による海底地形探査データを用いて,前処理をためしてみます.ここではメディアン法を実行します:

% blockmedian -R245/255/20/30 -I5m -V ship.xyz >! ship_5m.xyz

 こうして出来たファイルship_5m.xyzは,つづいてsurfaceコマンドによりグリッディングすることができます:

% surface ship_5m.xyz -R245/255/20/30 -I5m -Gship.grd -V

 ここまできたらもうgrdcontourを使って等高線図を描くのは簡単でしょう(試してみましょう!).さて,出来た図を良く見てください.nearestneighborコマンドを使って描いた図とずいぶん違うと思いませんか?

 これはsurfaceコマンドが大域法であること,つまり元データから得られる情報が少なすぎてデータ値の計算のしようがない点についてもデータ値を計算しようとするからです.ここで私たちにはたくさんの選択肢があります:

  1. 情報が少なすぎてデータの計算のしようがないノードについては値をNaNとしてしまう.
     
  2. データ値(コンター値)が信頼できないコンターについては白で塗りつぶしてしまう
     
  3. データ値の計算が出来ないエリアのほとんど(全部ではないですが)は陸地なのでそこを陸地としてプロットしてしまう
     
  4. データ値の計算ができる部分だけコンターが引かれるようにクリップパスを設定する

 ここではすべての選択肢について触れている余裕はありませんので,最後の方法についてのみ述べておきます.psmaskコマンドは,前処理されたデータファイルを読み込み,コンターマスクをデータ点の分布に基づいて設定します.こうして画像のクリップパスを設定してしまえば心置きなくグリッディングが出来ます.そして最後にもういちどpsmaskを用いて画像のクリッピングを中止します.これらを実現するコマンドは次のようになります:

% psmask -R245/255/20/30 -I5m ship_5m.xyz -JM6i -B2 -P -K -V >! map.ps
% grdcontour ship.grd -JM -O -K -C250 -A1000 >> map.ps
% psmask -C -O >> map.ps
Original Text by Dr. Paul Wessel
Translated by AGATASHI.