※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

作成途中

格子データ

はじめに言っておきますが、
今回のやり方は完全に自己流です。
もう少し効率のいいやりかたがあれば、教えてください…。

今回は点在した調査データを(下図)、
http://www19.atwiki.jp/suisan?cmd=upload&act=open&pageid=41&file=gri01.jpg

 10分間隔に整理し(下図)、

格子内のデータの平均値を色で表示してみます。
GMT的には格子の中心に、格子と同じ大きさの長方形を書いて、
それにデータに応じた色を塗るという操作をしています。

この様な図は、プログラムでデータセット作るのが常套手段ですが、
その方法は他で紹介されていると思いますので、
今回はExcelとGMTを使って描いてみます。

今回の手順ですが、

  1. データに10分間隔のラベルを付ける
  2. ピボットテーブルで格子内の平均値を求める
  3. GMTで作図

のような感じで進めていきます。

1.データに10分間隔のラベルを付ける

データに整理するために調査点のデータに
10分間隔のラベルを付けます。
こういった場合、ExcelのFLOOR関数を使うと簡単です。

Floor関数は四捨五入に似たようなものなのですが、
任意の間隔で切り捨てしてくれる関数です(うまく説明できてない気が…)。
=floor(緯度or経度, 間隔)
で使用します。

例えば、
北緯36.6度、東経140.6度の位置データに、
10分間隔(10/60)のラベルをつけると、

北緯36.6は
=floor(36.6, 10/60)
=36.5

東経140.6度は
=floor(140.6, 10/60)
=140.5

となります。
詳しくはこちらのシートをどうぞ
以下の図ようなイメージ
(格子内に点在するデータラベルをつけて、集約する)


さらに上記のラベルだと、格子上にデータが乗ってしまいます。
そこで5分ずらしてラベルを付けてあげます。

北緯36.6は
=floor(36.4, 10/60)+5/60
=36.5833…

東経140.6度は
=floor(140.2, 10/60)+5/60
=140.5833…

つまりこういうこと

こうしてあげると格子の中心にデータを示すことができます。
 

2.ピボットテーブルで格子内の平均値を求める

floorで作成したデータラベルをもとにピボットテーブルで
データを集約し、格子毎の平均値を算出します。
こちらのファイルのタブ「格子毎の平均値算出」
これで
緯度ラベル、経度ラベル、格子内の平均測定値
データが得られます。

 

3.GMTで作図

作成中

---------------------------------------------------------- 
#パラメータ
lat=140/148/38/44.5
col=GMT_grid_col2.cpt
data=grid_color.txt
output=grid_data.eps

#カラーパレット作成

#makecpt -CGMT_grid_col.cpt -T0.01/1.5/0.01> GMT_grid_col2.cptmakecpt

#データファイルから経度、緯度、観測データ平均値を抽出
#データの中心に長方形を描く
awk '{print $1,$2,$3,0.24,0.32}' $data | \psxy -Jm -Sr -C$col -P  -R$lat -K > $output

#陸地を描く

pscoast -R -Jm -Df -W1 -G200 -A500 -Ba2g0.166666666:."grid_data": -P -O -K >> $output

#凡例

psscale -D6/-1/8/0.3h -O -K -C$col -I -B0.2 >> $output

#データが無い地点に×をかく
awk '($3==0 ){print $1,$2}' $data | \
psxy -Jm -Sx0.2 -G0 -W5/0 -R -O >> $output

----------------------------------------------------------