Hvad er en E57 fil?
En fil med filtypenavnet .e57 er et kompakt, leverandørneutralt filformat, der bruges til lagring og udveksling af tredimensionelle (3D) billeddata såsom punktskyer, billeder og metadata. Sådanne data oprettes ofte med systemer som laserscannere. Det blev udviklet af Data Interoperability-underudvalget under ATSM E57-udvalget for 3D-billeddannelsessystemer. E57 er open source og gemmer 3D-punktdata, dets egenskaber (såsom farve og intensitet) og 2D-billeder, som er optaget af 3D-billeddannelsessystemet.
E57 filformat
E57-filformatspecifikationerne er tilgængelige på ATSM-webstedet og kan henvises til for udviklerens reference. Konceptpapiret og de tekniske detaljer for E57-filformatet er tilgængelige som referencemateriale af Daniel Huber. Dataene i en E57-fil gemmes i en XML-baseret hierarkisk træstruktur som vist på følgende billede. På lavt niveau gemmes E57-filerne som komprimerede binære filer for at gøre filstørrelsen kompakt.
E57 Filstruktur
Strukturen af en E57-fil er som vist i følgende tabel.
Filstruktur |
---|
Overskrift |
Binært afsnit (punkter) |
Binært afsnit (punkter) |
… |
… |
Binært afsnit (billede) |
XML sektion |
E57 Header
E57-headeren er en lille, 48-byte binær struktur, der indeholder vigtige oplysninger på filniveau, såsom versionsnummeret og placeringen af XML-sektionen. Det kan progamatisk repræsenteres som følger.
struct E57FileHeader {
char fileSignature[8];
uint32_t majorVersion;
uint32_t minorVersion;
uint64_t filePhysicalLength;
uint64_t xmlPhysicalOffset;
uint64_t xmlLogicalLength;
uint64_t pageSize;
}
XML-hierarki
XML-sektionen i en E57-fil beskriver træhierarkiet ved hjælp af en delmængde af standard XML. Dette er baseret på otte E57-elementtyper, hvor hvert element er bygget op ved hjælp af et sæt kernebyggeklodser. Fem af disse E57-elementer er terminaltyper, og tre af disse er ikke-terminale.
Terminaltyper
Heltal
- heltal med fortegn op til 63 bit i størrelse
Float
- gemmer et enkelt eller dobbelt præcision flydende kommanummer i IEEE 754-1985-format
ScaledInteger
- Gemmer et tal med en brøkdel som et heltal sammen med en skala og offset
String
- Gemmer tekstdata som UTF-8-kodet og understøtter internationale tegn
Blob’ - Gemmer en uigennemsigtig blok af binære data, der fortolkes af læseren afhængigt af konteksten.
Ikke-terminaltyper
Struktur
- Indeholder et uordnet sæt E57-elementer af enhver type. En E57-struktur er analog med en struktur i programmeringssproget C.
Vektor
- Indeholder en ordnet liste over i det væsentlige identisk indtastede elementer. Et flag i elementet gør det muligt at begrænse elementerne til at være nøjagtigt identisk skrevet, hvis det ønskes.
CompressedVector
- Indeholder en ordnet liste over identisk indtastede elementer, som er komprimeret i binært format. Som med Blob-datatypen er repræsentationen af en CompressedVector opdelt i en XML-del og en binær del.