玉川研究室で、CReSS を使うには。その4 GLCC 土地利用データ篇


註: この作業は、計算を実行する並列計算機ではなく、
たとえば、192.168.1.12 など。他のPCで行なって下さい。
並列計算機は、あくまでも計算用として使いたいので、GMT などのソフトを 整備していません。

CReSS を使用する際に、地表面状態の指定が必要になる。
CReSS 2.1 では、地表面は、粗度(風速、熱)、蒸発効率、アルベドのわずか4つの パラメタで記述されているに過ぎず、
今後、当研究室で改造する予定であるが、 どちらにせよ、地表面状態を表すデータをCReSS に与える必要がある。

ここでは、 土地利用のデータとして、USGS にある GLCC を使う例を示す。
Global Land Cover Characteristics Data Base は、このリンクに 示したようなもので、
衛星情報を使用して、世界中の土地利用を データ化したものである。
土地の分類は、さまざまなものがあるが、ようするに10数個〜数十個の 整数値が、各場所に与えられていると考えれば良い。
取り扱いが簡単そうな、緯度経度座標になっているもの (globe/latlon/ 以下) を 使用する。
研究室の場合、既にダウンロードされているので、 192.168.1.12 あるいは 192.168.1.11, 192.168.1.1 の /home/tama/USGS_LAND/PUB/globe/latlon/ 以下を見れば良い。
(192.168.1.12 の場合 /work/USGS_LAND/PUB/globe/latlon/ を見よ。 2007.11)

bats2_0.leg igbp2_0.leg oge2_0.leg run2_0.leg sib22_0.leg sib2_0.leg usgs2_0.leg のファイルに土地の分類の仕方が書いてあり、
それぞれの名前.img.gz という ファイルにデータが、1バイト整数で書かれている。( readme1st.txt を参照のこと )
( 参考までに、.gz で終るファイルは gzip コマンドで圧縮されている。元に戻すには gunzip コマンド )

例えば、usgs2_0.leg にある
USGS Land Use/Land Cover System Legend (Modified Level 2)

Value  Code        Class Name

0                  INTERRUPTED AREAS (GLOBAL GOODES HOMOLOSINE PROJECTION)
1      100         Urban and Built-Up Land
2      211         Dryland Cropland and Pasture
3      212         Irrigated Cropland and Pasture
4      213         Mixed Dryland/Irrigated Cropland and Pasture
5      280         Cropland/Grassland Mosaic
6      290         Cropland/Woodland Mosaic
7      311         Grassland
8      321         Shrubland
9      330         Mixed Shrubland/Grassland
10     332         Savanna
11     411         Deciduous Broadleaf Forest
12     412         Deciduous Needleleaf Forest
13     421         Evergreen Broadleaf Forest
14     422         Evergreen Needleleaf Forest
15     430         Mixed Forest
16     500         Water Bodies
17     620         Herbaceous Wetland
18     610         Wooded Wetland
19     770         Barren or Sparsely Vegetated
20     820         Herbaceous Tundra
21     810         Wooded Tundra
22     850         Mixed Tundra
23     830         Bare Ground Tundra
24     900         Snow or Ice
100                NO DATA
この分類を使うことにすると、 gusgs2_0ll.img.gz というファイルを読むことになる。
まず、適当な作業ディレクトリ( ここでは、glcc とする )を作成して移動し、
mkdir glcc 
cd glcc
次に、そこへコピーする。
cp /home/tama/USGS_LAND/PUB/globe/latlon/gusgs2_0ll.img.gz ./
そして、圧縮を解く
gunzip gusgs2_0ll.img.gz
そうすると元の gusgs2_0ll.img というファイルができているはずである。

このファイルを処理するために、 binout_globe_glcc.c というプログラムを作成した。
このプログラムによって、指定した緯度経度の範囲のデータを切り出すことができる。
使い方は、

cc -o binout_globe_glcc binout_globe_glcc.c
./binout_globe_glcc 経度(左) 緯度(下) 経度(右) 緯度(上) gusgs2_0ll.img 出力フィル名
である。経度(左) 緯度(下) 経度(右) 緯度(上) を x1, y1, x2, y2 と書く事にすれば、
左下の (x1, y1) の点から、右下の (x2, y1) そして、段々上のラインに上がっていって
最後には (x1, y2) から (x2, y2) へと、土地利用を表す整数データ (4バイト) が
並ぶファイルができる。また実行時には、左下のデータの緯度経度や、X Y 方向のデータ数を
示す情報が画面に出力されるので、メモを取っておく必要がある。

例えば、標高データ篇で作成した Tamakaya21.ter の緯度経度の範囲が、
135.997451/138.622451/35.253403/37.004803 のようなので、これが入るように
充分大きく 130-145°E 30-45°N の範囲で、データを切り出すとすると、以下のようになる。

./binout_globe_glcc 130 30 145 45 gusgs2_0ll.img  Land-130-30-145-45
From gusgs2_0ll.img 
(130.000000, 30.000000) - (145.000000, 45.000000)
(37199, 7200) - (39000, 5399)
1802 x 1802 data will be written into Land-130-30-145-45
Lower Left (129.995834, 29.995832)
Upper Right(145.004166, 45.004166)

このデータをチェックするための図化は、 dump2dbin-int.c CheckBinData.tcsh を使う。使い方は

cc dump2dbin-int.c -o dump2dbin-int
./dump2dbin-int.c  x方向のデータ数 y方向のデータ数 データファイル > 作業ファイル
これで、テキスト化されたデータファイルができ、適当なソフトで処理できるはずである。 直接図を作成するには、実は上の操作は不要で
chmod +x CheckBinData.tcsh
./CheckBinData.tcsh データファイル名 x方向のデータ数 y方向のデータ数
すれば良い。
この結果 データファイル名に、拡張子 .ps の付いた画像がGMTによって作成 される。
もちろん GMT の実行環境が必要である。

これで、求めている領域のデータが切り出せれば、 ファイルの形式としては良いのだが、CReSS では土地利用を示す数値に 以下の規約がある。

##### FROM CReSS   User_Mod/rdland.f90   ###########################
##                                                                ##
## You have to modify reading section to adjust your data set,    ##
## and reset the your data categories after reading stetment.     ##
##                                                                ##
##   water(including river and lake)  --->      ~ -1              ##
##   ice                              --->   0  ~  4              ##
##   snow                             --->   5  ~  9              ##
##   the others                       --->  10  ~                 ##
##                                                                ##
####################################################################
また、CReSS2.1 では、水 (固定温度あるいは、別の海面温度ファイルにより与える)以外は、
設定ファイルの中で、番号に対応する粗度、アルベド等の値を記述する必要がある。
ただ、ice や snow を本当に特別扱いしているのか、未確認である。

そこで、数値の変換テーブルを作成し、数値の変換を行う。
整数を読んで、テーブルに基づいて変換して、出力するだけの他愛のない プログラムであるが、 change_int.c を 作成した。これの使い方は、

cc change_int.c -o change_int
./change_int   元のファイル名   新ファイル名   テーブルのファイル名
である。元のファイル名には、上のbinout_globe_glcc で出力されたファイルの名前
(実は、整数値がバイナリで入っているファイルであればなんでも変換可能ではあるが)を書き
テーブルのファイルは以下の文法にしたがって記述する。 整数は、「変換前の数値」 「変換後の数値」 の順である。データにあるのに、 テーブルにない数値に出会うとプログラムが停止する。

テーブルのサンプルとしては、以下のようなものが挙げられる。

# Table for  USGS2 to CReSS
#USGS   CReSS    Comment
1      11         Urban and Built-Up Land
2      12         Dryland Cropland and Pasture
3      13         Irrigated Cropland and Pasture
4      14         Mixed Dryland/Irrigated Cropland and Pasture
5      15         Cropland/Grassland Mosaic
6      16         Cropland/Woodland Mosaic
7      17         Grassland
8      18         Shrubland
9      19         Mixed Shrubland/Grassland
10     20         Savanna
11     21         Deciduous Broadleaf Forest
12     22         Deciduous Needleleaf Forest
13     23         Evergreen Broadleaf Forest
14     24         Evergreen Needleleaf Forest
15     25         Mixed Forest
16     -1         Water Bodies
17     27         Herbaceous Wetland
18     28         Wooded Wetland
19     29         Barren or Sparsely Vegetated
20     5         Herbaceous Tundra
21     6         Wooded Tundra
22     7         Mixed Tundra
23     8         Bare Ground Tundra
24     9         Snow or Ice
このテーブルを保存したファイルの名前を USGS_Table として、 例えば、上で作った Takayama21.lnd を変換すると、
./change_int Land-130-30-145-45 Land-130-30-145-45-C USGS_Table
で、変換でき、Land-130-30-145-45-C ができる。

この後、実際に CReSS を動かす際には、user.conf と良く書かれる設定ファイルに、
それぞれの地面パラメタを与える必要があり、さらに、最初の切り出しソフト binout_globe_glcc が
出力した情報も書く必要がある。こののち、CReSS に含まれる surface を使って
実際のシミュレーションに使用されるデータを作成する。
もちろん、データ形式が同じなので、上の図化処理 CheckBinData.tcsh で 図が作成できる。 (2007.11)