Kas ir E57 fails?
Fails ar paplašinājumu .e57 ir kompakts, piegādātāju ziņā neitrāls faila formāts, ko izmanto trīsdimensiju (3D) attēlveidošanas datu, piemēram, punktu mākoņu, attēlu un metadatu, glabāšanai un apmaiņai. Šādi dati bieži tiek izveidoti ar tādām sistēmām kā lāzerskeneri. To izstrādāja ATSM E57 3D attēlveidošanas sistēmu komitejas Datu sadarbspējas apakškomiteja. E57 ir atvērtā koda, un tajā tiek saglabāti 3D punktu dati, to atribūti (piemēram, krāsa un intensitāte) un 2D attēli, ko tvērusi 3D attēlveidošanas sistēma.
E57 faila formāts
E57 faila formāta specifikācijas ir pieejamas ATSM vietnē, un tās var atsaukties uz izstrādātāju atsauci. Koncepcijas dokuments un E57 faila formāta tehniskā informācija ir pieejama kā atsauces materiāls vietnē Daniel Huber. Dati E57 failā tiek saglabāti uz XML balstītā hierarhiskā koka struktūrā, kā parādīts nākamajā attēlā. Zemā līmenī E57 faili tiek saglabāti kā saspiesti binārie faili, lai faila izmērs būtu kompakts.
E57 faila struktūra
E57 faila struktūra ir tāda, kā parādīts nākamajā tabulā.
Faila struktūra |
---|
Galvene |
Binārā sadaļa (punkti) |
Binārā sadaļa (punkti) |
… |
… |
Binārā sadaļa (attēls) |
XML sadaļa |
E57 galvene
E57 galvene ir maza, 48 baitu bināra struktūra, kas satur svarīgu faila līmeņa informāciju, piemēram, versijas numuru un XML sadaļas atrašanās vietu. Progamatiski to var attēlot šādi.
struct E57FileHeader {
char fileSignature[8];
uint32_t majorVersion;
uint32_t minorVersion;
uint64_t filePhysicalLength;
uint64_t xmlPhysicalOffset;
uint64_t xmlLogicalLength;
uint64_t pageSize;
}
XML hierarhija
E57 faila XML sadaļa apraksta koka hierarhiju, izmantojot standarta XML apakškopu. Tas ir balstīts uz astoņiem E57 elementu veidiem, kur katrs elements tiek veidots, izmantojot galveno bloku komplektu. Pieci no šiem E57 elementiem ir terminālu veidi, un trīs no tiem nav termināli.
Termināļu veidi
Vesels skaitlis - ar parakstu vesels skaitlis līdz 63 bitiem
Peldošs — saglabā vienu vai dubultu precizitātes peldošā komata skaitli IEEE 754-1985 formātā
ScaledInteger — saglabā skaitli ar daļēju daļu kā veselu skaitli kopā ar mērogu un nobīdi
String — saglabā teksta datus UTF-8 kodētā veidā un atbalsta starptautiskās rakstzīmes
Blob — saglabā necaurredzamu bināro datu bloku, ko lasītājs interpretē atkarībā no konteksta.
Neterminālie veidi
Struktūra — satur nesakārtotu jebkura veida E57 elementu kopu. E57 struktūra ir līdzīga struktūrai C programmēšanas valodā.
Vector — satur sakārtotu sarakstu ar būtiski identiski drukātiem vienumiem. Karogs elementā ļauj ierobežot vienumus, lai tie būtu precīzi identiski drukāti, ja nepieciešams.
CompressedVector — satur sakārtotu sarakstu ar identiski drukātiem vienumiem, kas ir saspiesti binārā formātā. Tāpat kā ar Blob datu tipu, CompressedVector attēlojums ir sadalīts XML daļā un binārajā daļā.