.assocで終わるファイルがあり、明らかに「バイナリ関連ファイル」ですが、この種のファイルに関する情報はオンラインで見つかりません。それはfortranとidlによって読み取られ、49Mbであり、私はそれをpythonに読み込もうとしています。これはおそらく未解決の質問ですが、ファイルの構造を調べて、どのように読み取ることができるかを知る方法を誰かが提案できますか?
このファイルは、火星の標高の地図(おそらく2D)であることを私は知っています。そしてそれは短いASCIIヘッダーを持っています:
7200 3600 MOLA .05 dg/px topo 5/2002
---------------------------------------------------------
header length 14400 bytes
map X size 7200
map Y size 3600
no-data value 30303
maximum value 21197
minimum value -8204
The map is stored as an INT array with X as
longitude and Y as latitude. The map is assumed to be
global in coverage.
---------------------------------------------------------
不正な形式の質問で申し訳ありませんが、不明なファイルタイプをプローブする方法に関する一般的なアドバイスをいただければ幸いです。または、このファイルタイプを知っている場合は、さらに良いでしょう!
ファイルを読み取るidlコードのスニペットは次のとおりです。
ELMAP='elevmap.assoc'
OPENR, ELUN, ELMAP, /GET_LUN
B = ASSOC(ELUN,BYTARR(100)) ; assoc header
HEADER = STRING(B[0]) ; read the header
NLON = 0 ; 'fix' no. of longitudes
NLAT = 0 ; 'fix' no. of latitudes
READS,HEADER,NLON,NLAT ; read no. of lons/lats
EXG = NLON/360 ; longitude scale (pix/deg)
EYG = NLAT/180 ; latitude scale (pix/deg)
EMAP = ASSOC(ELUN,INTARR(1),14400)
最初の30バイトの16進ダンプ(「od-H -N 30elevmap.assoc」を実行しました)は次のようになります。
0000000 20202020 20202020 30303237 20202020
0000020 20202020 30363320 4f4d2030 0000414c
0000036
ヘッダーの後の最初の30バイトの16進ダンプ( "od -H -j 14400 -N 30 elevmap.assoc"、これを誤解している場合はお知らせください)は次のようになります。
0034100 0e970e93 0ea50e9d 0ea50ea5 0ea50ea5
0034120 0ea50ea5 0ea40ea4 0ea20ea3 00000ea2
0034136