L1Bデータの緯度経度とデータを抜き出してみよう!
L1Bデータの一部を抜き出す!
MODISを始めとする衛星データはHDF形式で保存されている。衛星画像を作成したいときは必要な部分だけを抜き出す必要がある。MYD02SSH.A2008279.0400.005.2008279235411.hdfを例として、以下のコマンドで簡単にできる。
$ hdp dumpsds -i 0 MYD02SSH.A2008279.0400.005.2008279235411.hdf | less (-iはSDS(Science Data Set)のIDを指定するオプション。)
すると以下のように表示される。
File name: MYD02SSH.A2008279.0400.005.2008279235411.hdf File attributes: Attr0: Name = HDFEOSVersion Type = 8-bit signed char Count= 11 Value = HDFEOS_V2.9 Attr1: Name = StructMetadata.0 Type = 8-bit signed char Count= 32000 Value = GROUP=SwathStructure\012\011GROUP=SWATH_1 \012\011\011SwathName="MODIS_SWATH_Type_L 1B"\012\011\011GROUP=Dimension\012\011\011 \011OBJECT=Dimension_1\012\011\011\011\011 DimensionName="2*nscans"\012\011\011\011\011 Size=406\012\011\011\011END_OBJECT=Dimens ion_1\012\011\011\011OBJECT=Dimension_2\012 \011\011\011\011DimensionName="1KM_geo_di m"\012\011\011\011\011Size=271\012\011\011 \011END_OBJECT=Dimension_2\012\011\011\011 ....................................
下にドンドン読み進めて行くと
Variable Name = Latitude Index = 0 Type= 32-bit floating point Ref. = 6 Rank = 2 Number of attributes = 5 Dim0: Name=2*nscans:MODIS_SWATH_Type_L1B Size = 406 Scale Type = number-type not set Number of attributes = 0 Dim1: Name=1KM_geo_dim:MODIS_SWATH_Type_L1B Size = 271 Scale Type = number-type not set Number of attributes = 0 Attr0: Name = units Type = 8-bit signed char Count= 7 Value = degrees Attr1: Name = valid_range Type = 32-bit floating point Count= 2 Value = -90.000000 90.000000 Attr2: Name = _FillValue Type = 32-bit floating point Count= 1 Value = -999.000000 Attr3: Name = line_numbers Type = 8-bit signed char Count= 4 Value = 1,2\000 Attr4: Name = frame_numbers Type = 8-bit signed char Count= 10 Value = 1,2,3,...\000 Data : 30.289412 30.276995 30.264616 30.252281 30.240009 ...........................
となる。ここに書いてある情報は衛星データを扱う時にめちゃくちゃ重要なものになる。上にVariable Name = Latitude と Index = 0 が記述されている。Latitudeは緯度、IndexはSDSのID番号。つまり、SDSのID番号0は緯度のデータを表している。ちなみにSDSのID番号1はLongitude(経度)のデータが入っている。
しかし、このままだとヘッダーの情報が付加されており、本当に必要な情報だけではない。そこで-dというオプションをつけて以下のコマンド。多分、directのd。
$ hdp dumpsds -i 0 -d MYD02SSH.A2008279.0400.005.2008279235411.hdf | less
すると以下のように表示される。
30.289412 30.276995 30.264616 30.252281 30.240009 30.227806 30.215681 30.203636 30.191675 30.179808 30.168036 30.156359 30.144779 30.133295 30.121916 30.110634 30.099453 30.088373 30.077393 30.066509 30.055721 30.045033 30.034441 30.023945 30.013540 30.003229 29.993008 29.982876 29.972828 29.962870 29.952997 29.943207 29.933496 29.923868 29.914318 29.904844 29.895447 29.886120 29.876867 29.867685 29.858574 29.849529 29.840551 29.831638 29.822788 29.813999 29.805273 29.796604 29.787992 29.779438 29.770941 29.762497 29.754105 29.745764 29.737474 29.729233 29.721039 29.712893 29.704792 29.696735 29.688721 29.680748 29.672819 29.664928 29.657078 29.649263 29.641487 29.633745 29.626040 29.618366 29.610725 29.603117 29.595539 29.587992 29.580471 29.572979 29.565514 29.558075 29.550661 29.543272 29.535906 29.528561 29.521238 29.513937 29.506657 29.499393 29.492149 29.484922 29.477713 29.470518 29.463339 29.456171 29.449020 29.441881 29.434755 29.427639 29.420534 29.413439 29.406351 29.399273 29.392202 29.385138 29.378078 29.371025 29.363976 ........................................
これをテキストデータに落とし込む!
$ hdp dumpsds -i 0 -d -b MYD02SSH.A2008279.0400.005.2008279235411.hdf > latitude.txt
-bはデータをバイナリーにするオプション。これをパイプによるlessコマンドなどを使わず、端末で表示させるとエラいことになるから注意!
SDSのID番号について知りたかったら、LAADSのこのぺージにあるMOD02SSHとかに書かれている。一覧表
hdpコマンドについて知りたかったらこのページにアクセス!
Keyword(s):
References:[C言語でL1Bデータを扱う]