Importálás - Formázatlan bináris Fortran - CiupaCabra importálása
Van egy formázatlan bináris fájlom, amelyet a Compaq Visual Fortran fordító (nagy endian) segítségével állítottam elő.
A dokumentációról a következőket mondja:
A bináris fájl egy általános formátumban van megírva, amely egy adatmátrixból áll, amelyet egy leíró rekord vezet:
- 8 karakteres kulcsszó, amely azonosítja a blokk adatait.
- A blokkban lévő elemek számát meghatározó bájtjelek egész száma.
- 4 karakteres kulcsszó, amely meghatározza az adattípust. (INTE, REAL, LOGI, DUPLA>
A fejléc elemei egyetlen rekordként olvashatók. Az adatok egy új rekord leíróját követik. A numerikus mátrixok legfeljebb 1000 elemből álló blokkokra vannak felosztva. A fizikai rekord mérete megegyezik a blokk méretével.
További kulcsszó információk:
- SEQHDR - 1 elem - INTE - Szekvenciafejléc, adatértékkel. Ha van szám, akkor ez egy kódolt egész szám, amely megfelel a fájl létrehozásának időpontjának.
- MINISTEP - 1 elem - INTE - A Ministep szám lényegében az adatszám (pl: psi az 1. napon)
- PARAMS - n elem - REAL - Vektorparaméter ministep értéken.
Megpróbál ilyen adatokat beolvasni a Mathematica-ba, beleértve az Import-ot is

mutasson nekem egy azonosítható szöveget, de nincsenek hasznos számértékek.
A kérdéses fájl itt érhető el.
A Mathematica képes elemezni ezt a fájltípust, és ha igen, akkor ez a legjobb módszer?
2 válasz
Úgy tűnik, hogy a fájl a Schlumberger Eclipse Reservoir Simulator egységes összefoglaló fájlja. Ez a fájlformátum a Compaq Visual Fortran változó hosszúságú felvételi kódolását használja.
A Mathematica nem kínál beépített funkciót ennek a fájlformátumnak az olvasására, ezért magunknak kell elemeznünk.
Először meghatározunk egy kényelmi funkciót a nagy endináris bináris adatok fájlból történő olvasására:
Az Eclipse fájlokban található logikai rekordok két részből állnak: a fejlécben és az adatokban. A következő függvény beolvassa a fejlécet:
A rekord hossza és a CVF hossza kihagyásra kerül, így a rekord kulcsszó, az adatelemek száma és az adatelem típusa megmarad. Minden elemtípus különleges kezelést igényel:
Ez a kód csak egész típusú (INTE) és valós adatokkal (REAL) foglalkozik, bár ezt könnyű lenne kiterjeszteni más típusok kezelésére is. A readEclElements-t minden esetben a szükséges számú adatelem beolvasására használják - amelyek több változó rekordot is tartalmazhatnak:
Ezeket a súgófunkciókat egy teljes fejléc/adatpár beolvasására használják:
Csak a fájl megnyitása, az összes rekord elolvasása és bezárása van hátra:
Itt olvasható a readEclFile működés közben, a mellékelt adatfájl olvasása (feltéve, hogy a fájl ugyanabban a könyvtárban található, mint a notebook):
Nem ismerem a SEQHDR rekordokban használt időkódolást .
Figyelem: Nincs kapcsolatom Schlumbergerrel.