Τι είναι ένα αρχείο E57;
Ένα αρχείο με επέκταση .e57 είναι μια συμπαγής, ουδέτερη από τον προμηθευτή μορφή αρχείου που χρησιμοποιείται για την αποθήκευση και την ανταλλαγή τρισδιάστατων (3D) δεδομένων απεικόνισης, όπως σύννεφα σημείων, εικόνες και μεταδεδομένα. Τέτοια δεδομένα δημιουργούνται συχνά με συστήματα όπως σαρωτές λέιζερ. Αναπτύχθηκε από την υποεπιτροπή Διαλειτουργικότητας Δεδομένων της Επιτροπής ATSM E57 για τα συστήματα τρισδιάστατης απεικόνισης. Το E57 είναι ανοιχτού κώδικα και αποθηκεύει δεδομένα σημείων 3D, τα χαρακτηριστικά του (όπως το χρώμα και την ένταση) και τις εικόνες 2D όπως καταγράφονται από το σύστημα τρισδιάστατης απεικόνισης.
Μορφή αρχείου E57
Οι προδιαγραφές μορφής αρχείου E57 είναι διαθέσιμες στον ιστότοπο της ATSM και μπορούν να αναφέρονται για αναφορά προγραμματιστή. Το πρωτότυπο έγγραφο και οι τεχνικές λεπτομέρειες της μορφής αρχείου E57 είναι διαθέσιμα ως υλικό αναφοράς από τον Daniel Huber. Τα δεδομένα σε ένα αρχείο E57 αποθηκεύονται σε μια ιεραρχική δομή δέντρου βασισμένη σε XML, όπως φαίνεται στην παρακάτω εικόνα. Σε χαμηλό επίπεδο, τα αρχεία E57 αποθηκεύονται ως συμπιεσμένα δυαδικά αρχεία για να γίνει το μέγεθος του αρχείου συμπαγές.
E57 Δομή αρχείου
Η δομή ενός αρχείου E57 είναι όπως φαίνεται στον παρακάτω πίνακα.
Δομή αρχείου |
---|
Κεφαλίδα |
Δυαδικό τμήμα (σημεία) |
Δυαδικό τμήμα (σημεία) |
… |
… |
Δυαδικό τμήμα (εικόνα) |
Ενότητα XML |
Κεφαλίδα E57
Η κεφαλίδα E57 είναι μια μικρή δυαδική δομή 48 byte που περιέχει κρίσιμες πληροφορίες σε επίπεδο αρχείου, όπως τον αριθμό έκδοσης και τη θέση της ενότητας 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 bit
Float
- αποθηκεύει έναν αριθμό κινητής υποδιαστολής μονής ή διπλής ακρίβειας σε μορφή IEEE 754-1985
“ScaledInteger” - Αποθηκεύει έναν αριθμό με ένα κλασματικό μέρος ως ακέραιο μαζί με μια κλίμακα και μετατόπιση
String
- Αποθηκεύει δεδομένα κειμένου ως κωδικοποιημένα UTF-8 και υποστηρίζει διεθνείς χαρακτήρες
Blob
- Αποθηκεύει ένα αδιαφανές μπλοκ δυαδικών δεδομένων που ερμηνεύεται από τον αναγνώστη ανάλογα με το περιβάλλον.
Τύποι μη τερματικού
«Δομή» - Περιέχει ένα μη ταξινομημένο σύνολο στοιχείων E57 οποιουδήποτε τύπου. Μια δομή E57 είναι ανάλογη με μια δομή στη γλώσσα προγραμματισμού C.
«Διάνυσμα» - Περιέχει μια ταξινομημένη λίστα με ουσιαστικά πανομοιότυπα δακτυλογραφημένα στοιχεία. Μια σημαία στο στοιχείο επιτρέπει στα στοιχεία που πρόκειται να περιοριστούν να πληκτρολογηθούν ακριβώς πανομοιότυπα, εάν είναι επιθυμητό.
«CompressedVector» - Περιέχει μια ταξινομημένη λίστα με πανομοιότυπα δακτυλογραφημένα στοιχεία, τα οποία είναι συμπιεσμένα σε δυαδική μορφή. Όπως και με τον τύπο δεδομένων Blob, η αναπαράσταση ενός CompressedVector χωρίζεται σε ένα τμήμα XML και ένα δυαδικό τμήμα.