فایل E57 چیست؟
فایل با پسوند .e57 یک فرمت فایل فشرده و خنثی از فروشنده است که برای ذخیره و تبادل داده های تصویربرداری سه بعدی (سه بعدی) مانند ابرهای نقطه، تصاویر و ابرداده استفاده می شود. چنین داده هایی اغلب با سیستم هایی مانند اسکنرهای لیزری ایجاد می شوند. این توسط کمیته فرعی قابلیت همکاری داده های کمیته ATSM E57 در سیستم های تصویربرداری سه بعدی توسعه یافته است. E57 منبع باز است و داده های نقطه سه بعدی، ویژگی های آن (مانند رنگ و شدت) و تصاویر دو بعدی را که توسط سیستم تصویربرداری سه بعدی گرفته شده است را ذخیره می کند.
فرمت فایل 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 نوع ترمینال و سه مورد از آنها غیر ترمینال هستند.
انواع ترمینال
عدد صحیح - عدد صحیح امضا شده تا اندازه 63 بیت
Float - یک عدد ممیز شناور دقیق یک یا دو را در قالب IEEE 754-1985 ذخیره می کند.
ScaledInteger’ - یک عدد را با یک قسمت کسری به عنوان یک عدد صحیح همراه با مقیاس و افست ذخیره می کند.
رشته - داده های متنی را به صورت کدگذاری شده UTF-8 ذخیره می کند و از کاراکترهای بین المللی پشتیبانی می کند
Blob - یک بلوک غیر شفاف از داده های باینری را ذخیره می کند که بسته به زمینه توسط خواننده تفسیر می شود.
انواع غیر ترمینال
ساختار - شامل مجموعه ای نامرتب از عناصر E57 از هر نوع است. ساختار E57 مشابه ساختاری در زبان برنامه نویسی C است.
«بردار» - حاوی فهرستی مرتب شده از موارد تایپ شده تقریباً یکسان است. یک پرچم در عنصر اجازه می دهد تا در صورت تمایل، موارد محدود شوند تا دقیقاً به طور یکسان تایپ شوند.
CompressedVector - حاوی لیست مرتبی از موارد با تایپ یکسان است که در قالب باینری فشرده شده اند. همانند نوع داده Blob، نمایش یک بردار فشرده به یک بخش XML و یک بخش باینری تقسیم می شود.