The XML section, found through the file
header, describes everything in the file as a tree of typed elements. Its root
element is e57Root, and the default namespace is
http://www.astm.org/COMMIT/E57/2010-e57-v1.0. This page follows
libE57Format; element names are those its reader and writer use.
Element types
Every element carries a type attribute with one of eight values.
| type | Attributes | Content |
|---|---|---|
Structure | – | Named child elements, in any order |
Vector | allowHeterogeneousChildren (0 or 1) | Child elements in order, usually all of one kind, conventionally named vectorChild |
CompressedVector | fileOffset, recordCount | A prototype child describing one record, and a codecs child; the records are in the binary section at fileOffset |
Integer | minimum, maximum (default the full 64-bit range) | A whole number, default 0 |
ScaledInteger | minimum, maximum, scale (default 1), offset (default 0) | A whole number; its value is number × scale + offset |
Float | precision (single or double, default double), minimum, maximum | A floating-point number |
String | – | Text, usually in a CDATA section |
Blob | fileOffset, length | Empty; the bytes are in a blob section |
In a prototype, the minimum and maximum of each integer
field fix how many bits each value takes in the binary data.
Root
| Element | Type | Meaning |
|---|---|---|
formatName | String | ASTM E57 3D Imaging Data File |
guid | String | Unique identifier of the file |
versionMajor, versionMinor | Integer | Version of the standard, 1 and 0 |
e57LibraryVersion | String | Library that wrote the file |
creationDateTime | Structure | dateTimeValue (Float, GPS time in seconds) and isAtomicClockReferenced (Integer 0 or 1) |
coordinateMetadata | String | Information about the coordinate reference system, as text |
data3D | Vector | The scans |
images2D | Vector | The pictures |
Scans (data3D)
Each child of data3D is a Structure:
| Element | Type | Meaning |
|---|---|---|
guid, name, description | String | Identity of the scan |
originalGuids | Vector | Scans this one was made from |
sensorVendor, sensorModel, sensorSerialNumber, sensorHardwareVersion, sensorSoftwareVersion, sensorFirmwareVersion | String | The scanner |
temperature, relativeHumidity, atmosphericPressure | Float | Conditions during the scan, in °C, percent and pascals |
acquisitionStart, acquisitionEnd | Structure | Date and time, as creationDateTime |
pose | Structure | rotation (quaternion w x y z) and translation (x y z) from the scan’s own coordinates to the file’s |
indexBounds | Structure | rowMinimum/Maximum, columnMinimum/Maximum, returnMinimum/Maximum |
intensityLimits | Structure | intensityMinimum, intensityMaximum |
colorLimits | Structure | colorRedMinimum … colorBlueMaximum |
cartesianBounds | Structure | xMinimum … zMaximum |
sphericalBounds | Structure | rangeMinimum/Maximum, elevationMinimum/Maximum, azimuthStart/End |
pointGroupingSchemes | Structure | groupingByLine: idElementName and a groups list, each with an idElementValue, startPointIndex and pointCount |
points | CompressedVector | The point records; fields below |
Point fields
A scan’s prototype contains whichever of these it records:
| Field | Meaning |
|---|---|
cartesianX, cartesianY, cartesianZ | Position in metres |
cartesianInvalidState | 0 to 2; 0 means the position is valid |
sphericalRange, sphericalAzimuth, sphericalElevation | Position as distance in metres and angles in radians |
sphericalInvalidState | 0 to 2; 0 means the position is valid |
rowIndex, columnIndex | Place in the scanner’s grid |
returnIndex, returnCount | Which return of how many |
timeStamp, isTimeStampInvalid | Time of the point in seconds, and 1 if it is not valid |
intensity, isIntensityInvalid | Return strength, and 1 if it is not valid |
colorRed, colorGreen, colorBlue, isColorInvalid | Colour, and 1 if it is not valid |
For the two invalid-state fields, values 1 and 2 mark a position as partly or wholly unusable; the meaning of each is set in the standard, which is not freely available, so it is not described further here.
Pictures (images2D)
Each child of images2D is a Structure with guid,
name, description, sensor details, acquisitionDateTime,
pose, associatedData3DGuid (the scan it belongs to) and one
of four representations:
| Representation | Contents |
|---|---|
pinholeRepresentation | A jpegImage or pngImage Blob, optional imageMask, imageWidth, imageHeight, pixelWidth, pixelHeight, focalLength, principalPointX, principalPointY |
sphericalRepresentation | The image and mask, sizes and pixel sizes (pixel width and height as angles) |
cylindricalRepresentation | The image and mask, sizes, pixel sizes, radius and principalPointY |
visualReferenceRepresentation | The image and mask and their size only, for a picture without calibration |