ไฟล์ E57 คืออะไร??
ไฟล์ที่มีนามสกุล .e57 เป็นรูปแบบไฟล์ที่มีขนาดกะทัดรัดและเป็นกลางสำหรับผู้ขาย ซึ่งใช้สำหรับจัดเก็บและแลกเปลี่ยนข้อมูลภาพสามมิติ (3D) เช่น พอยต์คลาวด์ รูปภาพ และข้อมูลเมตา ข้อมูลดังกล่าวมักถูกสร้างขึ้นด้วยระบบต่างๆ เช่น เลเซอร์สแกนเนอร์ ได้รับการพัฒนาโดยคณะอนุกรรมการด้านการทำงานร่วมกันของข้อมูลของคณะกรรมการ ATSM E57 เกี่ยวกับระบบภาพ 3 มิติ E57 เป็นโอเพ่นซอร์สและเก็บข้อมูลจุด 3 มิติ คุณลักษณะของมัน (เช่น สีและความเข้ม) และภาพ 2 มิติที่บันทึกโดยระบบภาพ 3 มิติ
รูปแบบไฟล์ 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 ที่เข้ารหัสและรองรับอักขระสากล
Blob - จัดเก็บบล็อกทึบของข้อมูลไบนารีที่ผู้อ่านตีความโดยขึ้นอยู่กับบริบท
ประเภทที่ไม่ใช่เทอร์มินัล
Structure - ประกอบด้วยชุดองค์ประกอบ E57 ที่ไม่มีลำดับของประเภทใดก็ได้ โครงสร้าง E57 นั้นคล้ายคลึงกับโครงสร้างในภาษาโปรแกรม C
Vector - ประกอบด้วยรายการสั่งซื้อของรายการที่พิมพ์เหมือนกันอย่างมาก แฟล็กในองค์ประกอบอนุญาตให้จำกัดรายการให้พิมพ์เหมือนกันทั้งหมดหากต้องการ
CompressedVector - ประกอบด้วยรายการลำดับของรายการที่พิมพ์เหมือนกัน ซึ่งถูกบีบอัดในรูปแบบไบนารี เช่นเดียวกับประเภทข้อมูล Blob การแสดง CompressedVector จะแบ่งออกเป็นส่วน XML และส่วนไบนารี