とらりもんHOME  Index  Search  Changes  Login

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コマンドについて知りたかったらこのページにアクセス!

Last modified:2008/11/20 19:14:43
Keyword(s):
References:[C言語でL1Bデータを扱う]