E57 dosyası nedir?
.e57 uzantılı bir dosya, nokta bulutları, görüntüler ve meta veriler gibi üç boyutlu (3B) görüntüleme verilerinin depolanması ve değiş tokuşu için kullanılan kompakt, satıcıdan bağımsız bir dosya biçimidir. Bu tür veriler genellikle lazer tarayıcılar gibi sistemlerle oluşturulur. ATSM E57 3D Görüntüleme Sistemleri Komitesi’nin Veri Birlikte Çalışabilirlik alt komitesi tarafından geliştirilmiştir. E57 açık kaynaktır ve 3B nokta verilerini, özniteliklerini (renk ve yoğunluk gibi) ve 3B görüntüleme sistemi tarafından yakalandığı şekliyle 2B görüntüleri depolar.
E57 Dosya Biçimi
E57 dosya biçimi belirtimleri ATSM web sitesinde mevcuttur ve geliştiricinin referansı için bunlara başvurulabilir. E57 dosya biçiminin kavram belgesi ve teknik ayrıntıları, Daniel Huber tarafından referans materyal olarak mevcuttur. Bir E57 dosyasındaki veriler, aşağıdaki görüntüde gösterildiği gibi XML tabanlı bir hiyerarşik ağaç yapısında kaydedilir. Düşük seviyede, E57 dosyaları, dosya boyutunu küçültmek için sıkıştırılmış ikili dosyalar olarak kaydedilir.
E57 Dosya Yapısı
Bir E57 dosyasının yapısı aşağıdaki tabloda gösterildiği gibidir.
Dosya Yapısı |
---|
Başlık |
İkili bölüm (puan) |
İkili bölüm (puan) |
… |
… |
İkili bölüm (resim) |
XML bölümü |
E57 Başlığı
E57 başlığı, sürüm numarası ve XML bölümünün konumu gibi kritik dosya düzeyi bilgileri içeren küçük, 48 baytlık bir ikili yapıdır. Progamatik olarak aşağıdaki gibi temsil edilebilir.
struct E57FileHeader {
char fileSignature[8];
uint32_t majorVersion;
uint32_t minorVersion;
uint64_t filePhysicalLength;
uint64_t xmlPhysicalOffset;
uint64_t xmlLogicalLength;
uint64_t pageSize;
}
XML Hiyerarşisi
Bir E57 dosyasının XML bölümü, standart XML’in bir alt kümesini kullanarak ağaç hiyerarşisini açıklar. Bu, her bir öğenin bir dizi çekirdek yapı taşı kullanılarak oluşturulduğu sekiz E57 öğe tipini temel alır. Bu E57 elemanlarından beşi terminal tipi ve bunlardan üçü terminalsizdir.
Uçbirim Türleri
“Tamsayı” - 63 bit’e kadar işaretli tamsayı
“Float” - IEEE 754-1985 biçiminde tek veya çift duyarlıklı bir kayan noktalı sayı depolar
ScaledInteger
- Kesirli kısmı olan bir sayıyı bir ölçek ve ofset ile birlikte bir tamsayı olarak saklar
“String” - Metin verilerini UTF-8 kodlu olarak depolar ve uluslararası karakterleri destekler
“Blob” - Bağlama bağlı olarak okuyucu tarafından yorumlanan opak bir ikili veri bloğu depolar.
Terminal Dışı Türler
“Yapı” - Herhangi bir türden sıralanmamış bir E57 öğeleri kümesi içerir. Bir E57 yapısı, C programlama dilindeki bir yapıya benzer.
“Vektör” - Yazımı büyük ölçüde aynı olan öğelerin sıralı bir listesini içerir. Öğedeki bir bayrak, istenirse öğelerin tam olarak aynı şekilde yazılmasıyla sınırlandırılmasına izin verir.
“CompressedVector” - İkili biçimde sıkıştırılmış, aynı şekilde yazılmış öğelerin sıralı bir listesini içerir. Blob veri türünde olduğu gibi, bir CompressedVector’ın gösterimi bir XML bölümüne ve bir ikili bölüme ayrılır.
Referans
- libE57
- [ASTM E57 Okuyucu/Yazıcı](https://docs.safe.com/fme/html/FME_Desktop_Documentation/FME_ReadersWriters/e57/e57.htm#:~:text=Overview,%20%20%20a%20ağaç olarak yapılandırılmıştır. )