米NASAがスペースシャトルで収集した標高データSRTM3データを使いたいと思っていたのだけど、どうやって使えばいいか分からずそのままにしてた。
http://www2.jpl.nasa.gov/srtm/
http://dds.cr.usgs.gov/srtm/version2_1/SRTM3/
久しぶりにまた検索したりで考えていたら、Vectorに
http://www.vector.co.jp/soft/data/home/se049752.html
「データはモトローラ形式の16bit整数」との記述を発見。
変換できないか考えたけど、よくわからず、、、バイナリエディタghex入れて開いてみたけど使えそうにない。
しかし結局、直接的には、下記のサイトさんのおかげで解決。
http://www.yamareco.com/weblog/archives/2007/03/gps_2.html
ヘッダ無しで標高データだけがバイナリ形式で16バイトのBigEndianで並んでいるとのこと。
16バイト(Bitではない?)のデータらしいけど、PHPで処理して開けることが分かった。
ということで、とりあえずhgtデータをダウンロード中。
しかし相当な量のデータであることが分かる。かれこれ数時間経ってるけどまだDLが終わらない・・・・
ある意味当然なのだけど、必要なところだけ取得するようにすべきだった。
せっかく使えるのだからとスケベ心で全部DLしようとしてしまった。
以前から、このデータには欠落があることがわかっているものの、どう補正すればいいかはまだ不明で課題。
海抜ゼロメートル地帯などがあるため、実際の陸地をこの標高データだけで行うことは完全ではない点も知っていたけど、実際、
http://lab.uribou.net/ll2h/
で海抜ゼロメートル地帯を見てみるとマイナスになっていたりして納得。また、自宅付近の標高は知っている標高通りで精度も高いことが分かった。
___
さて。実際、このデータを使って地図描画をしてみたところ、確かに異常値が。いち区域だけ見ただけなのだけど結構ある。

画像中の、少なくとも白いところは異常値。
無理矢理は承知で、地球上でありえない標高のところは画像処理の際の前の値で代用する形で補正したのが下。
ただ、これは日本のなんだけど、日本ではありえない標高な異常値もある。
それを各国毎に補正すれば完璧かもしれないけど、とりあえずそのあたりは見送って白描画にとどめた。
______
SRTMの地図データ、結局16時間余りでDL完了した。
開始 07/13 01:57:24
終了 07/13 18:00:13
ファイル数 14545個(14.7GB=当該ZIP圧縮にて)
先方のサーバ負荷の問題もあるし、当方も急ぎではないため、ダウンロード速度はもっと余裕持たせるべきだったし、必要な部分をまずDLすべきだったと反省。開始してから中断できるようにもしてなかったのも反省点、、。
具体的な実装はまた明日以降にでも進めていくつもり。
アメリカ・NASAの偉大な成果を、無償で使わせて頂けることに感謝しつつ。
_____
・・・てことで、日を改めて本日、朝イチで地図画像生成。うん、出来る。
最初上下逆になってしまった。昔国土地理院の土地利用データから生成したときも最初こんなふうになったっけ。

まだデータファイルの区切り目で線が入ってしまうので更に補正が必要。

現状、SSDは容量が危ないと想われるので、HDDを
mount -t ext4 /dev/sdb2 /var/www/map
とかやってHDD上でapache/PHPで処理してる。
でも、SSDじゃないのに10秒くらいで地図画像生成できてる。SSDで1ファイルの場合でも5秒かかってた。
今後は、sql系サーバとかmemcachedとか色々使って速度が出るように探っていく感じかな。
_____
そして7/14(日)13時過ぎ。とりあえず、紆余曲折を経て、南半球の地図画像生成も一応の正常完了。たぶん西経も大丈夫と思うけどまだやってない。
fseekとかunpackとか、ファイルを直接読み込んで色々やる方法がまだ理解出来てない。急ぎではないけどバイナリデータをいじる際には特に勉強必要かな。

赤道のがまだダメ。微妙にダメ部分はわかってる。南半球はスジが入らない。・・・これら調整やってようやく完成かな。
_____
そしてとりあえずの完成。

_____
ヨーロッパ付近はこんな感じ。東経と西経がロンドンを境に変わる。

世界全図はこんな感じ。端に行ったら逆側に戻すのがポイント。この画像はまさにgoogleマップの最小ズーム時の画像ですな。

そして、ここにきて、SRTMのデータは、「SRTM30」でなくて、「SRTM1」と「SRTM3」およびその2つを元に生成した「SRTM30」という構成のようだ。散々SRTM30ってBLOGやTwitterに書いてたけどこの筆をもって修正させて頂きます。。
ちなみに、SRTM3は、北緯60度上までの収録で、それ以北のデータが無いです。アラスカとかシベリア北方やスカンジナビア半島などが地図描画できません。また、南は南緯56度上までですが、南方面については南アメリカもニュージーランドも描画できるため、世界地図としての使い出は北半球のように損なうことはないです。
