Mi az E57 fájl?
Az .e57 kiterjesztésű fájl egy kompakt, gyártó-semleges fájlformátum, amelyet háromdimenziós (3D) képalkotási adatok, például pontfelhők, képek és metaadatok tárolására és cseréjére használnak. Az ilyen adatokat gyakran olyan rendszerekkel hozzák létre, mint például a lézerszkennerek. Ezt az ATSM E57 3D képalkotó rendszerekkel foglalkozó bizottságának adat-együttműködési albizottsága fejlesztette ki. Az E57 nyílt forráskódú, és a 3D-s pontadatokat, annak attribútumait (például szín és intenzitás), valamint a 3D képalkotó rendszer által rögzített 2D-s képeket tárolja.
E57 fájlformátum
Az E57 fájlformátum specifikációi az ATSM webhelyén érhetők el, és a fejlesztői referenciaként hivatkozhatnak rájuk. Az E57 fájlformátum koncepcióját és műszaki részleteit Daniel Huber referenciaanyagként találja meg. Az E57 fájlban lévő adatok egy XML alapú hierarchikus fastruktúrába kerülnek mentésre, ahogy az a következő képen látható. Alacsony szinten az E57 fájlokat tömörített bináris fájlként menti a rendszer, hogy a fájlméret kompakt legyen.
E57 Fájlszerkezet
Az E57 fájl szerkezete a következő táblázatban látható.
Fájlszerkezet |
---|
Fejléc |
Bináris szakasz (pontok) |
Bináris szakasz (pontok) |
… |
… |
Bináris metszet (kép) |
XML szakasz |
E57 fejléc
Az E57 fejléc egy kicsi, 48 bájtos bináris struktúra, amely kritikus fájlszintű információkat tartalmaz, például a verziószámot és az XML szakasz helyét. Progamatikusan a következőképpen ábrázolható.
struct E57FileHeader {
char fileSignature[8];
uint32_t majorVersion;
uint32_t minorVersion;
uint64_t filePhysicalLength;
uint64_t xmlPhysicalOffset;
uint64_t xmlLogicalLength;
uint64_t pageSize;
}
XML-hierarchia
Az E57 fájl XML része a fa hierarchiáját írja le a szabványos XML egy részhalmazával. Ez nyolc E57-es elemtípuson alapul, ahol minden elem egy sor alapvető építőelemből épül fel. Ezen E57 elemek közül öt terminál típusú, és ezek közül három nem terminál.
Termináltípusok
“Integer” - előjeles egész szám legfeljebb 63 bit méretű
“Float” - egy vagy dupla pontosságú lebegőpontos számot tárol IEEE 754-1985 formátumban
“ScaledInteger” – A tört részt tartalmazó számot egész számként tárolja a léptékkel és az eltolásokkal együtt
“String” – UTF-8 kódolású szöveges adatokat tárol, és támogatja a nemzetközi karaktereket
“Blob” – bináris adatok átlátszatlan blokkját tárolja, amelyet az olvasó a kontextustól függően értelmez.
Nem terminál típusok
“Struktúra” - Bármilyen típusú E57-elemek rendezetlen halmazát tartalmazza. Az E57 struktúra analóg a C programozási nyelv struktúrájával.
“Vector” – Lényegében azonosan beírt elemek rendezett listáját tartalmazza. Az elemben lévő jelző lehetővé teszi, hogy az elemeket szükség esetén pontosan azonosan lehessen beírni.
“CompressedVector” – Azonosan típusú elemek rendezett listáját tartalmazza, amelyek bináris formátumban vannak tömörítve. A Blob adattípushoz hasonlóan a CompressedVector ábrázolása XML-részre és bináris részre van felosztva.