Какво е файл E57?
Файлът с разширение .e57 е компактен, неутрален спрямо доставчика файлов формат, който се използва за съхраняване и обмен на триизмерни (3D) данни за изображения като облаци от точки, изображения и метаданни. Такива данни често се създават със системи като лазерни скенери. Той е разработен от подкомитета за оперативна съвместимост на данните на комитета ATSM E57 за системи за 3D изображения. E57 е с отворен код и съхранява данни за 3D точки, техните атрибути (като цвят и интензитет) и 2D изображения, както са заснети от системата за 3D изображения.
E57 файлов формат
Спецификациите на файловия формат E57 са достъпни на уебсайта на ATSM и могат да бъдат използвани за справка от разработчиците. Концептуалният документ и техническите подробности за файловия формат E57 са достъпни като референтен материал от Daniel Huber. Данните във файл E57 се записват в йерархична дървовидна структура, базирана на XML, както е показано на следващото изображение. На ниско ниво файловете E57 се записват като компресирани двоични файлове, за да бъде размерът на файла компактен.
E57 Файлова структура
Структурата на файл E57 е както е показано в следващата таблица.
Файлова структура |
---|
Заглавка |
Двоично сечение (точки) |
Двоично сечение (точки) |
… |
… |
Двоичен раздел (изображение) |
XML раздел |
E57 Header
Заглавката E57 е малка, 48-байтова двоична структура, която съдържа критична информация на ниво файл, като номера на версията и местоположението на секцията XML. Може да бъде прогаматично представено, както следва.
struct E57FileHeader {
char fileSignature[8];
uint32_t majorVersion;
uint32_t minorVersion;
uint64_t filePhysicalLength;
uint64_t xmlPhysicalOffset;
uint64_t xmlLogicalLength;
uint64_t pageSize;
}
XML йерархия
XML разделът на файл E57 описва йерархията на дървото, използвайки подмножество от стандартен XML. Това се основава на осем вида елементи E57, където всеки елемент е изграден с помощта на набор от основни градивни елементи. Пет от тези елементи E57 са тип терминали и три от тях не са терминали.
Типове терминали
Цяло число
- цяло число със знак с размер до 63 бита
Float
- съхранява число с плаваща запетая с единична или двойна точност във формат IEEE 754-1985
ScaledInteger
- Съхранява число с дробна част като цяло число заедно с мащаб и отместване
String
- Съхранява текстовите данни като UTF-8 кодирани и поддържа международни знаци
Blob
- Съхранява непрозрачен блок от двоични данни, които се интерпретират от читателя в зависимост от контекста.
Нетерминални типове
„Структура“ – Съдържа неподреден набор от E57 елементи от всякакъв тип. Структура E57 е аналогична на структура в езика за програмиране C.
„Вектор“ – Съдържа подреден списък от по същество идентично въведени елементи. Флаг в елемента позволява елементите да бъдат ограничени да бъдат въведени точно идентично, ако желаете.
CompressedVector
- Съдържа подреден списък от идентично въведени елементи, които са компресирани в двоичен формат. Както при типа данни Blob, представянето на CompressedVector е разделено на XML част и двоична част.