SPOT-Vegetationデータの解析

奈佐原顕郎 2010/10/29改訂, 2006/03/12初版

 SPOT-Vegetationとはフランスが打ち上げた衛星(SPOT-4とSPOT-5)に積まれた地球観測(リモートセンシング)センサーです。このウェブサイトは、そのプロダクトの処理方法について説明します。

注: このサイトの記述は、Linux環境での実行を前堤とします。検証に使用した環境は,

-2006年03月 SUSE10.0 Linux
-2010年10月 Ubuntu10.04 Linux

関連サイト

SPOT-VEGETATION Programme Web Page 本家
Free VEGETATION distribution site 10日コンポジットのダウンロードサイト
ユーザーガイド
SPOT衛星の搭載センサの諸元
西田の自作スクリプトなど

注意!

SPOT-VGTの各チャンネルのゲインがドリフトしています!詳しくはこちら

1. ダウンロード

Free VEGETATION distribution siteで、無料データをダウンロードすることができる。

まずユーザー登録する。アカウント名がわりにメールアドレスを登録する。ひとつのアカウントでいちどにダウンロード用のバッファに置けるのは10GBまで。いちどバッファに置いたデータは、5日間は消去できないし、5日たつと自動消去される。


2. 処理

ダウンロードしたデータは、たとえば次のようなファイルである:

V2KRNS10__20100621_RADIO_SE-Asia.ZIP (サイズは250MB程度)
これはzip圧縮がかかっている。これを展開すると...
$ unzip V2KRNS10__20100621_RADIO_SE-Asia.ZIP
Archive:  V2KRNS10__20100621_RADIO_SE-Asia.ZIP
   creating: 0001/
  inflating: 0001/0001_LOG.TXT
  inflating: 0001/0001_RIG.TXT
  inflating: 0001/0001_QL.TIF
  inflating: 0001/0001_B0.HDF
  inflating: 0001/0001_B2.HDF
  inflating: 0001/0001_B3.HDF
  inflating: 0001/0001_MIR.HDF
  inflating: 0001/0001_NDV.HDF
  inflating: 0001/0001_SM.HDF
  inflating: 0001/0001_VZA.HDF
  inflating: 0001/0001_SZA.HDF
  inflating: 0001/0001_VAA.HDF
  inflating: 0001/0001_SAA.HDF
  inflating: 0001/0001_TG.HDF
このように、0001というディレクトリの中に、いくつかのHDFファイルとテキストファイルがあらわれる。それぞれのファイルの持つ情報は、

0001_B0.HDF    バンド0の反射率
0001_B2.HDF    バンド2の反射率
0001_B3.HDF    バンド3の反射率
0001_LOG.TXT   ログ(ヘッダー)情報
0001_MIR.HDF   中間赤外バンドの反射率
0001_NDV.HDF   NDVI
0001_QL.TIF
0001_RIG.TXT
0001_SAA.HDF   太陽方位角(solar azimuth angle)
0001_SM.HDF    雲、雪氷関係(status map) 各ビットの意味
0001_SZA.HDF   太陽天頂角(solar zenith angle)
0001_TG.HDF    観測日時
0001_VAA.HDF   観測方位角(view azimuth angle)
0001_VZA.HDF   観測天頂角(view zenith angle)
のようになっている。

地理座標系などについては0001_LOG.TXTを見ればわかるが、原則として、測地系はWGS84, 投影法は緯度経度直交座標系(geographicとかlatlonとかplate caree)、分解能は約1km(このファイルの場合は0.0089285714度)である。切り出し範囲の東西南北端も0001_LOG.TXTに書いてある。ここで注意すべきなのは, ここに記載されている緯度経度は, 画角の端のピクセルの中心である、ということだ。つまり, 例えば

MAP_PROJ_RESOLUTION      0.0089285714
...
CARTO_UPPER_LEFT_X          68.000000
CARTO_UPPER_LEFT_Y          55.000000
CARTO_UPPER_RIGHT_X        147.000000
CARTO_UPPER_RIGHT_Y         55.000000
CARTO_LOWER_RIGHT_X        147.000000
CARTO_LOWER_RIGHT_Y          5.000000
CARTO_LOWER_LEFT_X          68.000000
CARTO_LOWER_LEFT_Y           5.000000
IMAGE_UPPER_LEFT_ROW      1
IMAGE_UPPER_LEFT_COL      1
IMAGE_UPPER_RIGHT_ROW     1
IMAGE_UPPER_RIGHT_COL     8849
IMAGE_LOWER_RIGHT_ROW     5601
と書かれているならば, このUPPER_RIGHT(右上)の経度147.0度/緯度55.0度というのは, 画像の右上端のピクセルの「中心」の位置である。ピクセルは大きさを持っているので, 画像のほんとの右上端は, 画像の右上端のピクセルの中心ではなく, 画像の右上端のピクセルの右上端である。ピクセルの大きさ(resolution)は0.0089285714度なので, その半分, つまり0.0044642857度を147.0度に加えた値, つまり147.0044642857度が, 「画像の右上端の経度」になる。

同様に考えれば, この画像の左右上下端は,

東経67.9955357143度, 東経147.0044642857度
北緯68.0044642857度, 北緯4.9955357143度
となる。GRASSにr.in.binなどで読み込ませるときは, この値を使わねばならない。

実際, 画像の横方向のピクセル数(IMAGE_UPPER_RIGHT_COL)8849に分解能0.0089285714を掛けると, 79.0089283186度となり, これは上記の CARTO_UPPER_RIGHT_X(147.0)からCARTO_UPPER_LEFT_X(68.0)を引いた値(79.0)よりも, 1ピクセルぶん大きい。これは, この画像が カバーする範囲が, その他の詳細情報、たとえば1ピクセルあたりのバイト数や、デジタルカウント値から物理量に換算するときの係数(スケールとオフセット)、観測日時の起点などは、各HDFファイルの中に記述されている。それを読むには以下のようにする:

$ vshow 0001_NDV.HDF +
ここでvshowはHDF4のコマンドである。これを使うには、HDFライブラリをインストールし、コマンドへのサーチパスを張っておく必要がある。

さて、HDFからラスターデータを読み出すには以下のようにする:

$ hdp dumpsds -i 0 -d -b 0001_NDV.HDF > NDVI.raw
このhdpもHDF4のコマンドである。こうやってHDFファイルからラスターデータをraw binaryとして抜きだし、適宜、vshowコマンドなどで調べた情報(たてよこのピクセル数、範囲、ピクセルあたりのバイト数、換算係数など)を用いてGISなどに読み込ませれば良い。GRASSについてそれを自動で行うシェルスクリプトをここに置いておくので参考にされたい。


プロダクトの通称について
S10         Synthesis (10日コンポジット)
D10