Apa itu file E57?
File dengan ekstensi .e57 adalah format file ringkas dan netral vendor yang digunakan untuk menyimpan dan bertukar data pencitraan tiga dimensi (3D) seperti point cloud, gambar, dan metadata. Data tersebut sering dibuat dengan sistem seperti pemindai laser. Ini dikembangkan oleh sub-komite Interoperabilitas Data dari Komite ATSM E57 tentang Sistem Pencitraan 3D. E57 adalah open source dan menyimpan data titik 3D, atributnya (seperti warna dan intensitas), dan citra 2D seperti yang ditangkap oleh sistem pencitraan 3D.
Format File E57
Spesifikasi format file E57 tersedia di situs web ATSM dan dapat dirujuk untuk referensi pengembang. Makalah konsep dan detail teknis format file E57 tersedia sebagai bahan referensi oleh Daniel Huber. Data dalam file E57 disimpan dalam struktur pohon hierarki berbasis XML seperti yang ditunjukkan pada gambar berikut. Pada level rendah, file E57 disimpan sebagai file biner terkompresi untuk membuat ukuran file menjadi ringkas.
Struktur File E57
Struktur file E57 seperti yang ditunjukkan pada tabel berikut.
Struktur Berkas |
---|
Tajuk |
Bagian biner (poin) |
Bagian biner (poin) |
… |
… |
Bagian biner (gambar) |
Bagian XML |
Judul E57
Header E57 adalah struktur biner kecil 48 byte yang berisi informasi tingkat file penting, seperti nomor versi dan lokasi bagian XML. Secara progamatis dapat direpresentasikan sebagai berikut.
struct E57FileHeader {
char fileSignature[8];
uint32_t majorVersion;
uint32_t minorVersion;
uint64_t filePhysicalLength;
uint64_t xmlPhysicalOffset;
uint64_t xmlLogicalLength;
uint64_t pageSize;
}
Hirarki XML
Bagian XML dari file E57 menjelaskan hierarki pohon menggunakan subset XML standar. Ini didasarkan pada delapan tipe elemen E57 di mana setiap elemen dibangun menggunakan satu set blok penyusun inti. Lima dari elemen E57 ini adalah tipe terminal dan tiga di antaranya adalah non-terminal.
Jenis Terminal
Integer
- bilangan bulat bertanda hingga ukuran 63 bit
Float
- menyimpan angka floating point presisi tunggal atau ganda dalam format IEEE 754-1985
ScaledInteger
- Menyimpan angka dengan bagian pecahan sebagai bilangan bulat beserta skala dan offset
String
- Menyimpan data teks sebagai UTF-8 yang disandikan dan mendukung karakter internasional
Blob
- Menyimpan blok data biner buram yang ditafsirkan oleh pembaca tergantung pada konteksnya.
Jenis Non-Terminal
Struktur
- Berisi kumpulan elemen E57 yang tidak terurut dari jenis apa pun. Struktur E57 analog dengan struktur dalam bahasa pemrograman C.
Vektor
- Berisi daftar urutan item yang diketik secara substansial identik. Bendera dalam elemen memungkinkan item dibatasi untuk diketik secara persis sama jika diinginkan.
CompressedVector
- Berisi daftar urutan item yang diketik secara identik, yang dikompresi dalam format biner. Sama seperti tipe data Blob, representasi CompressedVector dibagi menjadi bagian XML dan bagian biner.