Ce este un fișier E57?
Un fișier cu extensia .e57 este un format de fișier compact, neutru pentru furnizor, care este utilizat pentru stocarea și schimbul de date de imagini tridimensionale (3D), cum ar fi nori de puncte, imagini și metadate. Astfel de date sunt adesea create cu sisteme precum scanere laser. A fost dezvoltat de subcomitetul de interoperabilitate a datelor al Comitetului ATSM E57 pentru sistemele de imagistică 3D. E57 este open source și stochează date de puncte 3D, atributele sale (cum ar fi culoarea și intensitatea) și imaginile 2D capturate de sistemul de imagini 3D.
Format de fișier E57
Specificațiile de format de fișier E57 sunt disponibile pe site-ul web ATSM și pot fi consultate pentru referință de către dezvoltatori. Documentul conceptual și detaliile tehnice ale formatului de fișier E57 sunt disponibile ca material de referință de către Daniel Huber. Datele dintr-un fișier E57 sunt salvate într-o structură arborescentă ierarhică bazată pe XML, așa cum se arată în imaginea următoare. La nivel scăzut, fișierele E57 sunt salvate ca fișiere binare comprimate pentru a face dimensiunea fișierului compactă.
E57 Structura fișierului
Structura unui fișier E57 este așa cum se arată în tabelul următor.
Structura fișierului |
---|
Antet |
Secțiune binară (puncte) |
Secțiune binară (puncte) |
… |
… |
Secțiune binară (imagine) |
Secțiunea XML |
E57 Antet
Antetul E57 este o structură binară mică, de 48 de octeți, care conține informații critice la nivel de fișier, cum ar fi numărul versiunii și locația secțiunii XML. Poate fi reprezentat programatic după cum urmează.
struct E57FileHeader {
char fileSignature[8];
uint32_t majorVersion;
uint32_t minorVersion;
uint64_t filePhysicalLength;
uint64_t xmlPhysicalOffset;
uint64_t xmlLogicalLength;
uint64_t pageSize;
}
Ierarhie XML
Secțiunea XML a unui fișier E57 descrie ierarhia arborescentă folosind un subset de XML standard. Acesta se bazează pe opt tipuri de elemente E57 în care fiecare element este construit folosind un set de blocuri de bază. Cinci dintre aceste elemente E57 sunt tipuri terminale și trei dintre acestea sunt non-terminale.
Tipuri de terminale
Integer
- întreg cu semn de până la 63 de biți
Float
- stochează un număr cu virgulă mobilă de precizie simplă sau dublă în format IEEE 754-1985
ScaledInteger
- Stochează un număr cu o parte fracțională ca număr întreg împreună cu o scară și o compensare
String
- Stochează datele text ca cod UTF-8 și acceptă caractere internaționale
Blob
- Stochează un bloc opac de date binare care este interpretat de cititor în funcție de context.
Tipuri non-terminale
Structură
- Conține un set neordonat de elemente E57 de orice tip. O structură E57 este analogă cu o structură din limbajul de programare C.
Vector
- Conține o listă ordonată de articole tastate în mod substanțial identic. Un steag în element permite ca elementele care trebuie restricționate să fie tastate exact identic, dacă se dorește.
CompressedVector
- Conține o listă ordonată de elemente tipizate identic, care sunt comprimate în format binar. Ca și în cazul tipului de date Blob, reprezentarea unui CompressedVector este împărțită într-o porțiune XML și o porțiune binară.