SRTM3で富士山を感じる

どうも、吉村です。

今回はSRTM3のデータを使って、富士山を感じたいと思います。
SRTM3とはNASAが公開している、標高データのことです。 public domainで使用できる、非常に太っ腹です。(NASAすごい!)
詳細についてはこちらをご覧ください。

http://www2.jpl.nasa.gov/srtm/

FTPにてダウンロードすることができます。

http://dds.cr.usgs.gov/srtm/

ただし、ダウンロードの際は相手のサーバーに負荷をかけすぎないように、十分に気をつけましょう。
重要です。
負荷をかける必要がある場合は、ちゃんと自サーバーにクローンしましょう。

ここでは、バージョン2.1のSRTM3を利用しようと思います。
ディレクトリは、

http://dds.cr.usgs.gov/srtm/version2_1/SRTM3/

ですね。

詳しい資料としてドキュメントがいくつか用意されています。

http://dds.cr.usgs.gov/srtm/version2_1/Documentation/

もっと精度の高い、SRTM1というのもあるのですが、日本が無く領域が限られている(http://dds.cr.usgs.gov/srtm/version2_1/SRTM1/Region_definition.jpgを参照)ので、
こちらを使います。

さて実際にデータを見てみましょう。
大量のデータがサーバーにありますが、命名規則は単純なので、すぐ見つける事ができます。
例えばファイル名が、

N30W006.hgt

の場合は、

北緯30度〜北緯31度
西経6度〜西経5度
+-で表現するなら、
緯度 30 〜 31
経度 -6 〜 -5

の領域のデータがこのファイルに含まれている、ということになっています。
つまり、南西の端っこが名前の規則になっているわけですね

こちらのマップを参照するのも良いかもしれません。
http://gis-okinawa.sblo.jp/article/50634220.html
(自分はこちらを先に見ていて、命名規則が複雑だと勝手に思い込んでいました)

欲しいデータのファイルを見つけられたら、
次はSRTM3(ver2.1)のデータフォーマットですが、ドキュメント等の情報より、

・データは、1201 x 1201のグリッドデータ、それぞれのセルは2バイト
・ヘッダーなしで、データだけが敷き詰められている
・データは16bit符号付き整数、ビッグエンディアン
・北西を原点として、行優先にデータが並んでいる
・単位はメートルで、-32767から32767のデータが格納されており、欠損は-32768が使われている
・それぞれの端っこは隣のデータと重複している(実際に試してみると、データが同じでなかったのはなぜか原因不明)

ということのようです。

ちょっと分かりやすく、図にしておきましょう。
データ

ここまで分かればあとはその通りに読むだけです。
データはあくまでも1201×1201グリッドなので、中途半端な座標の高さが知りたい場合、
線形補間や、バイキュービック補間によって補間すると、綺麗なデータを得る事が可能です。
欠損は、元々のデータを加工して穴をふさいでおきました。
ふさぐ時のアルゴリズムは、「前後左右8方向に進んでいき、最初に見つけた高度情報のそれぞれの平均」という単純なものです。

今回はこちらを参考にバイキュービック補間を使います。
http://www.paulinternet.nl/?page=bicubic

ここまで情報がそろったので、
cinderで富士山をメッシュ化してみました。
ライティングが面倒なのでワイヤーフレームです。

富士山の座標は、緯度35.360718, 経度138.7280213、
40km x 40km の範囲を取り出しています。

使うデータは、N35E138.hgtです。

fuzi

うーん、すばらしい、大地を感じますね。
ではでは。