Mikä on E57-tiedosto?
Tiedosto, jonka laajennus on .e57, on kompakti, toimittajaneutraali tiedostomuoto, jota käytetään kolmiulotteisen (3D) kuvantamisdatan, kuten pistepilvien, kuvien ja metatietojen, tallentamiseen ja vaihtoon. Tällaiset tiedot luodaan usein järjestelmillä, kuten laserskannereilla. Sen on kehittänyt ATSM E57 -komitean 3D-kuvantamisjärjestelmiä käsittelevä tietojen yhteentoimivuuden alakomitea. E57 on avoimen lähdekoodin lähde, ja se tallentaa 3D-pistetiedot, sen attribuutit (kuten värin ja intensiteetin) ja 2D-kuvat 3D-kuvausjärjestelmän tallentamina.
E57 tiedostomuoto
E57-tiedostomuodon tekniset tiedot ovat saatavilla ATSM-verkkosivustolla, ja niihin voi viitata kehittäjille. Konseptipaperi ja E57-tiedostomuodon tekniset tiedot ovat saatavilla viitemateriaalina {{HYPERLINKKI}}:sta. E57-tiedoston tiedot tallennetaan XML-pohjaiseen hierarkkiseen puurakenteeseen seuraavan kuvan mukaisesti. Matalalla tasolla E57-tiedostot tallennetaan pakattuina binääritiedostoina, jotta tiedostokoko on pieni.
E57 tiedostorakenne
E57-tiedoston rakenne on seuraavan taulukon mukainen.
Tiedoston rakenne |
---|
Otsikko |
Binääriosa (pisteet) |
Binääriosa (pisteet) |
… |
… |
Binääriosa (kuva) |
XML-osio |
E57 Otsikko
E57-otsikko on pieni, 48-tavuinen binaarirakenne, joka sisältää tärkeitä tiedostotason tietoja, kuten versionumeron ja XML-osan sijainnin. Se voidaan esittää progamaattisesti seuraavasti.
struct E57FileHeader {
char fileSignature[8];
uint32_t majorVersion;
uint32_t minorVersion;
uint64_t filePhysicalLength;
uint64_t xmlPhysicalOffset;
uint64_t xmlLogicalLength;
uint64_t pageSize;
}
XML-hierarkia
E57-tiedoston XML-osio kuvaa puuhierarkiaa käyttämällä vakio-XML:n osajoukkoa. Tämä perustuu kahdeksaan E57-elementtityyppiin, joissa jokainen elementti on rakennettu käyttämällä ydinrakennuspalikoiden sarjaa. Näistä E57-elementeistä viisi on päätetyyppiä ja kolme ei-päätelaitteita.
Päätetyypit
Kokonaisluku - etumerkillinen kokonaisluku, jonka koko on enintään 63 bittiä
Float - tallentaa yhden tai kaksinkertaisen tarkkuuden liukulukunumeron IEEE 754-1985 -muodossa
ScaledInteger - Tallentaa luvun, jossa on murto-osa kokonaislukuna, sekä asteikon ja siirtymän
String - Tallentaa tekstitiedot UTF-8-koodattuina ja tukee kansainvälisiä merkkejä
Blob - Tallentaa läpinäkymättömän lohkon binääridataa, jonka lukija tulkitsee kontekstin mukaan.
Ei-päätetyypit
Rakenne - Sisältää järjestämättömän joukon minkä tahansa tyyppisiä E57-elementtejä. E57-rakenne on analoginen C-ohjelmointikielen rakenteen kanssa.
Vektori - Sisältää järjestetyn luettelon olennaisesti identtisesti kirjoitetuista kohteista. Lippu elementissä sallii kohteiden rajoittamisen haluttaessa täsmälleen identtisiksi kirjoitettavaksi.
CompressedVector - Sisältää järjestetyn luettelon identtisesti kirjoitetuista kohteista, jotka on pakattu binäärimuotoon. Kuten Blob-tietotyypissä, CompressedVectorin esitys on jaettu XML-osaan ja binääriosaan.