地球上に分布する数量は、 緯度経度の格子点のデータとして扱われることが多い。 地球上にM本の経線とN本の緯線がひかれており、 i番め(i=1, ..., M)の経線とj番め(j=1, ..., N)の緯線の交点の位置に 対応して値が与えられているような構造である。 線の交点ではなく、線で囲まれたマス目に対応して値があるデータセットもある。 ただしここでは、そのような場合は、位置をマス目の中心で代表させて 格子点データに含めて扱うことにする。
Awkは、テキストファイル形式のデータの フィルター型処理[別記事参照]のために 作られたプログラム言語である。 変数の宣言を必要としないなど、 プログラムを少ない文字数で作ることができるように くふうされているため、 比較的単純な操作には適しているが、 複雑な処理のプログラミングには適していない [プログラム言語の議論参照]。
格子点データを扱うとき、 実行効率がよい(実行処理の時間が短い、 あるいはデータ量の割りに計算機の記憶容量の消費が少ない)方法を 求めるならば、FortranやCなどの言語を使うほうがよい [その場合の注意は別記事参照]。 Awkを使う方法は、計算機上の実行効率はよくないが、 人がプログラムを作成するのにかかる手間が重要な場合、 総合的な作業効率はよいこともある。 また、言語表現がCと似ているため、 本格的処理のためのプログラムをCで書くための 原型(prototype)を作るためにも便利である。 このような理由で、ここではAwkによる処理を中心に扱う。
Awkで読み書きできるのは、基本的にテキストファイル、 つまり、改行コードで行に分かれており、 各行は、端末画面上(あるいはエディタ上)で目で見られ、プリントもできる文字 だけで構成されているものである。
各行は、空白(複数の空白文字がつながってもひとつの空白として扱う)で フィールド(欄)に分かれている。 以下、同じ番号のフィールドを各行にまたがって続けて見たものを 「列」と呼ぶことにする。各フィールドの桁数は一定とは限らないので、 端末画面上で列が縦にそろって見えるとは限らない。
この教材で扱う格子点データは、原則として、次のような形で テキストファイルに書かれているとする。
この教材では、複数のファイルを読んで処理する場合、 どのファイルも同じ格子点網でのデータを与えていることを前提とする。 データの座標位置が違う場合は、 なんらかの方法で、同じ位置での値を推定する必要がある。 つまり、広い意味の内挿が必要となる。 内挿の方法は目的によって使い分ける必要がある [別記事参照]。 方法にもよるが、内挿の計算をAwkでやるのはむずかしく、 CやFortranでプログラムしたほうがよい。 したがって、この教材には、内挿が必要な問題は含めないことにする。
この教材メモは、筆者が東京都立大学 理学部 地理学教室在職中 (特に1999年度, 2000年度)に、卒業研究を 指導する過程で使ったデータ処理のノウハウを文書化したものである。
2000-08-19, 2002-04-08, 2004-01-23, 2004-07-03