Що таке файл E57?
Файл із розширенням .e57 — це компактний, нейтральний від постачальника формат файлу, який використовується для зберігання й обміну даними тривимірних (3D) зображень, наприклад хмарами точок, зображеннями та метаданими. Такі дані часто створюються за допомогою таких систем, як лазерні сканери. Він був розроблений підкомітетом із сумісності даних Комітету ATSM E57 із систем тривимірної обробки зображень. E57 є відкритим кодом і зберігає 3D-точкові дані, їх атрибути (наприклад, колір та інтенсивність) і 2D-зображення, отримані системою 3D-зображень.
Формат файлу E57
Технічні характеристики формату файлу E57 доступні на веб-сайті ATSM і можуть бути використані для довідки розробника. Концептуальний документ і технічні деталі формату файлу E57 доступні як довідковий матеріал Daniel Huber. Дані у файлі E57 зберігаються в ієрархічній структурі дерева на основі XML, як показано на наступному зображенні. На низькому рівні файли E57 зберігаються як стислі двійкові файли, щоб зробити розмір файлу компактним.
E57 Структура файлу
Структура файлу E57 наведена в наведеній нижче таблиці.
Структура файлу |
---|
Заголовок |
Двійковий переріз (точки) |
Двійковий переріз (точки) |
… |
… |
Двійковий розділ (зображення) |
Розділ XML |
E57 Заголовок
Заголовок 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 є термінальними типами, а три з них є нетермінальними.
Типи терміналів
Integer
- ціле число зі знаком розміром до 63 біт
Float
- зберігає число з плаваючою комою одинарної або подвійної точності у форматі IEEE 754-1985
ScaledInteger
- зберігає число з дробовою частиною як ціле разом із масштабом і зсувом
String
- зберігає текстові дані у кодуванні UTF-8 і підтримує міжнародні символи
Кляпка
– зберігає непрозорий блок двійкових даних, який інтерпретується читачем залежно від контексту.
Нетермінальні типи
Структура
– містить невпорядкований набір елементів E57 будь-якого типу. Структура E57 аналогічна структурі в мові програмування C.
Вектор
– містить упорядкований список практично однакових набраних елементів. Прапорець в елементі дозволяє обмежити елементи, щоб вони були точно ідентичними за бажанням.
CompressedVector
– містить упорядкований список ідентично типізованих елементів, стиснутих у двійковому форматі. Як і у випадку з типом даних Blob, представлення CompressedVector розділено на XML-частину та двійкову частину.