Co je soubor E57?
Soubor s příponou .e57 je kompaktní, na dodavatele neutrální formát souboru, který se používá pro ukládání a výměnu trojrozměrných (3D) obrazových dat, jako jsou mračna bodů, obrázky a metadata. Taková data se často vytvářejí pomocí systémů, jako jsou laserové skenery. Byl vyvinut podvýborem pro datovou interoperabilitu výboru ATSM E57 pro 3D zobrazovací systémy. E57 je open source a ukládá data 3D bodů, jejich atributy (jako je barva a intenzita) a 2D snímky zachycené 3D zobrazovacím systémem.
Formát souboru E57
Specifikace formátu souboru E57 jsou k dispozici na webových stránkách ATSM a lze na ně odkazovat pro vývojáře. Koncepční dokument a technické podrobnosti o formátu souboru E57 jsou k dispozici jako referenční materiál od Daniela Hubera. Data v souboru E57 jsou uložena v hierarchické stromové struktuře založené na XML, jak je znázorněno na následujícím obrázku. Na nízké úrovni se soubory E57 ukládají jako komprimované binární soubory, aby byla velikost souboru kompaktní.
Struktura souboru E57
Struktura souboru E57 je uvedena v následující tabulce.
Struktura souboru |
---|
Záhlaví |
Binární sekce (body) |
Binární sekce (body) |
… |
… |
Binární sekce (obrázek) |
XML sekce |
Záhlaví E57
Záhlaví E57 je malá, 48bajtová binární struktura, která obsahuje důležité informace na úrovni souboru, jako je číslo verze a umístění sekce XML. Může být progamaticky reprezentován následovně.
struct E57FileHeader {
char fileSignature[8];
uint32_t majorVersion;
uint32_t minorVersion;
uint64_t filePhysicalLength;
uint64_t xmlPhysicalOffset;
uint64_t xmlLogicalLength;
uint64_t pageSize;
}
Hierarchie XML
Část XML souboru E57 popisuje stromovou hierarchii pomocí podmnožiny standardního XML. To je založeno na osmi typech prvků E57, kde každý prvek je postaven pomocí sady základních stavebních bloků. Pět z těchto prvků E57 je koncových typů a tři z nich nejsou koncové.
Typy terminálů
Integer
– celé číslo se znaménkem až do velikosti 63 bitů
„Float“ – ukládá jednoduché nebo dvojité přesné číslo s plovoucí desetinnou čárkou ve formátu IEEE 754-1985
ScaledInteger
– Ukládá číslo se zlomkovou částí jako celé číslo spolu s měřítkem a offsetem
Řetězec
- Ukládá textová data jako kódování UTF-8 a podporuje mezinárodní znaky
Blob
– Ukládá neprůhledný blok binárních dat, který je interpretován čtenářem v závislosti na kontextu.
Neterminálové typy
“Struktura” - Obsahuje neuspořádanou sadu prvků E57 libovolného typu. Struktura E57 je analogická struktuře v programovacím jazyce C.
“Vektor” - Obsahuje uspořádaný seznam položek v podstatě identického typu. Příznak v prvku umožňuje, aby položky byly v případě potřeby omezeny tak, aby byly přesně identické.
CompressedVector
– Obsahuje uspořádaný seznam identicky zadaných položek, které jsou komprimovány v binárním formátu. Stejně jako u datového typu Blob je reprezentace CompressedVector rozdělena na část XML a binární část.