2012年2月29日水曜日

ALOSのフォーマット

ひまつぶしも兼ねて
衛星写真のデータ解析をしています
というかフォーマット解析

まぁぐぐればそれらしいものは出てくるんですけどね
それじゃ面白くないし というか英語読むのめんどくさいし
ということで 少しずつ解析しています

で 問題なのが 画像ファイル
ところどころに0x00が含まれてるんですよ
横解像度7138pxですが
余計なデータが100バイトくらいある

ひとつ思いつくとすれば
横解像度7138に100バイトを足して7238
それに1足して7239にすると127で割り切ることができます
ってことは 1ラインが127バイト単位という可能性
まぁその1をどこから持ってくるかという問題がありますが…

あと画像データの前に文字列がいっぱいありまして
それが7000バイト近く ほとんどが0x20です

で まぁ 127単位とすると
どこから始まってどこで終わるか 分割する部分が問題なわけです
普通に考えればデータの最後に0x00でも書きこんでやるのが楽なんだけど
0x00の間に0xED 0xEDって EDが2個入ってるんですよ
そしてその前に2バイト(多分本来は4バイト)のバイナリ値があります
これが1ラインごとにインクリメントされてて
最後は0x1B59で終わっています DECだと7001
このファイルは縦7000pxで
一番最初が0x0002と考えると
ちょうどいい感じ
と言うことは 0xED 0xEDとその前の4バイトからデータが始まってるんじゃないかと予想できるわけです
そして一番最後の7238バイトは
0x00 0x00 0x1B 0x59 0xED 0xED
で始まってます
んじゃぁED2個とその前4バイトから1セットのデータだろ
と思うんですが
なんかしっくりこないのよねぇ
一番最初が0x00000002から始まってるとかもあるけど
EDって普通に考えりゃENDの略じゃないですか
ASCIIでEDじゃなくてHEXでEDなので
Nは無いし2文字だからちょうどいいEDだ みたいな

そういえばこのファイル
一番最初は0x00 0x00 0x00 0x01だ
0x00000000はNULLで 0x00000001から始まってるのかな?

そして0x00 0x00 0x00 0x02 0xED 0xEDまで7238バイトだ
なーんだ そういうことか

なるほどね

ってことは
意外と単純なファイルフォーマットなんじゃね?

さて C#で実装してみるか



※自分はブログをかきながらもいろいろいじってるので ブログの最初と最後で書いてる内容が変わってる場合がある 要注意

0 件のコメント:

コメントを投稿