Kas yra E57 failas?
Failas su plėtiniu .e57 yra kompaktiškas, pardavėjo atžvilgiu neutralus failo formatas, naudojamas trimačiams (3D) vaizdo duomenims, pvz., taškų debesims, vaizdams ir metaduomenims, saugoti ir jais keistis. Tokie duomenys dažnai sukuriami tokiomis sistemomis kaip lazeriniai skaitytuvai. Jį sukūrė ATSM E57 3D vaizdo sistemų komiteto Duomenų sąveikos pakomitetis. E57 yra atvirojo kodo ir saugo 3D taškų duomenis, jo atributus (pvz., spalvą ir intensyvumą) ir 2D vaizdus, kuriuos užfiksavo 3D vaizdo sistema.
E57 failo formatas
E57 failo formato specifikacijas galima rasti ATSM svetainėje ir jas galima remtis kūrėjo nuoroda. Koncepcinį dokumentą ir techninę E57 failo formato informaciją kaip informacinę medžiagą rasite Daniel Huber. E57 failo duomenys išsaugomi XML pagrįstoje hierarchinėje medžio struktūroje, kaip parodyta toliau pateiktame paveikslėlyje. Esant žemam lygiui, E57 failai išsaugomi kaip suspausti dvejetainiai failai, kad failo dydis būtų kompaktiškas.
E57 failo struktūra
E57 failo struktūra yra tokia, kaip parodyta šioje lentelėje.
Failo struktūra |
---|
Antraštė |
Dvejetainė atkarpa (taškai) |
Dvejetainė atkarpa (taškai) |
… |
… |
Dvejetainė dalis (vaizdas) |
XML skyrius |
E57 antraštė
E57 antraštė yra maža, 48 baitų dvejetainė struktūra, kurioje yra svarbi failo lygio informacija, pvz., versijos numeris ir XML sekcijos vieta. Progamatiškai jį galima pavaizduoti taip.
struct E57FileHeader {
char fileSignature[8];
uint32_t majorVersion;
uint32_t minorVersion;
uint64_t filePhysicalLength;
uint64_t xmlPhysicalOffset;
uint64_t xmlLogicalLength;
uint64_t pageSize;
}
XML hierarchija
E57 failo XML skyriuje aprašoma medžio hierarchija naudojant standartinio XML poaibį. Tai pagrįsta aštuoniais E57 elementų tipais, kur kiekvienas elementas yra sudarytas naudojant pagrindinių kūrimo blokų rinkinį. Penki iš šių E57 elementų yra terminalų tipai, o trys iš jų yra negaliniai.
Terminalų tipai
Sveikasis skaičius – iki 63 bitų dydžio sveikasis skaičius su ženklu
Float – išsaugo vieno arba dvigubo tikslumo slankiojo kablelio skaičių IEEE 754-1985 formatu
ScaledInteger – išsaugo skaičių su trupmenine dalimi kaip sveikąjį skaičių kartu su masteliu ir poslinkiu
Eilutė – saugo tekstinius duomenis kaip UTF-8 koduotę ir palaiko tarptautinius simbolius
Blob – saugo nepermatomą dvejetainių duomenų bloką, kurį skaitytojas interpretuoja atsižvelgdamas į kontekstą.
Neterminalų tipai
Struktūra – turi netvarkingą bet kokio tipo E57 elementų rinkinį. E57 struktūra yra analogiška C programavimo kalbos struktūrai.
Vektorius – yra sutvarkytas iš esmės identiškai įvestų elementų sąrašas. Elemento vėliavėlė leidžia apriboti elementus, kad jie būtų įvesti tiksliai identiškai, jei pageidaujama.
CompressedVector – yra sutvarkytas identiškai įvestų elementų, suglaudintų dvejetainiu formatu, sąrašas. Kaip ir naudojant Blob duomenų tipą, CompressedVector atvaizdas yra padalintas į XML ir dvejetainę dalis.