Vad är en E57 fil?
En fil med tillägget .e57 är ett kompakt, leverantörsneutralt filformat som används för att lagra och utbyta tredimensionell (3D) bilddata som punktmoln, bilder och metadata. Sådan data skapas ofta med system som laserskannrar. Det utvecklades av Data Interoperability-underkommittén för ATSM E57 Committee on 3D Imaging Systems. E57 är öppen källkod och lagrar 3D-punktdata, dess attribut (som färg och intensitet) och 2D-bilder som fångas av 3D-bildsystemet.
E57 filformat
E57-filformatsspecifikationerna finns tillgängliga på ATSMs webbplats och kan hänvisas till för utvecklarens referens. Konceptpapperet och tekniska detaljer för E57-filformatet finns tillgängliga som referensmaterial av Daniel Huber. Data i en E57-fil sparas i en XML-baserad hierarkisk trädstruktur som visas i följande bild. På låg nivå sparas E57-filerna som komprimerade binära filer för att göra filstorleken kompakt.
E57 Filstruktur
Strukturen för en E57-fil är som visas i följande tabell.
Filstruktur |
---|
Rubrik |
Binär sektion (poäng) |
Binär sektion (poäng) |
… |
… |
Binär sektion (bild) |
XML-sektion |
E57 Header
E57-huvudet är en liten binär struktur på 48 byte som innehåller viktig information på filnivå, såsom versionsnumret och platsen för XML-sektionen. Det kan progamatiskt representeras enligt följande.
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ädhierarkin med en delmängd av standard-XML. Detta är baserat på åtta E57-elementtyper där varje element byggs upp med hjälp av en uppsättning kärnbyggstenar. Fem av dessa E57-element är terminaltyper och tre av dessa är icke-terminala.
Terminaltyper
Heltal
- heltal med tecken upp till 63 bitar i storlek
“Float” - lagrar ett flyttal med enkel eller dubbel precision i IEEE 754-1985-format
ScaledInteger
- Lagrar ett tal med en bråkdel som ett heltal tillsammans med en skala och offset
String
- Lagrar textdata som UTF-8-kodad och stöder internationella tecken
Blob
- Lagrar ett ogenomskinligt block av binär data som tolkas av läsaren beroende på sammanhanget.
Icke-terminaltyper
Struktur
- Innehåller en oordnad uppsättning E57-element av vilken typ som helst. En E57-struktur är analog med en struktur i programmeringsspråket C.
Vektor
- Innehåller en ordnad lista med väsentligen identiskt skrivna objekt. En flagga i elementet gör att objekten kan begränsas till att skrivas exakt identiskt om så önskas.
CompressedVector
- Innehåller en ordnad lista med identiskt skrivna objekt, som är komprimerade i binärt format. Liksom med Blob-datatypen är representationen av en CompressedVector uppdelad i en XML-del och en binär del.