34 imf_( filePath,
"r" ), root_( imf_.root() ), data3D_( root_.get(
"/data3D" ) ),
35 images2D_( root_.get(
"/images2D" ) )
79 if ( root_.
isDefined(
"e57LibraryVersion" ) )
84 if ( root_.
isDefined(
"coordinateMetadata" ) )
89 if ( root_.
isDefined(
"creationDateTime" ) )
94 (int32_t)
IntegerNode( creationDateTime.
get(
"isAtomicClockReferenced" ) ).value();
115 if ( ( imageIndex < 0 ) || ( imageIndex >= images2D_.
childCount() ) )
126 if (
image.isDefined(
"name" ) )
131 if (
image.isDefined(
"description" ) )
136 if (
image.isDefined(
"sensorVendor" ) )
140 if (
image.isDefined(
"sensorModel" ) )
144 if (
image.isDefined(
"sensorSerialNumber" ) )
149 if (
image.isDefined(
"associatedData3DGuid" ) )
154 if (
image.isDefined(
"acquisitionDateTime" ) )
160 (int32_t)
IntegerNode( acquisitionDateTime.
get(
"isAtomicClockReferenced" ) ).value();
164 if (
image.isDefined(
"pose" ) )
184 if (
image.isDefined(
"visualReferenceRepresentation" ) )
186 StructureNode visualReferenceRepresentation(
image.get(
"visualReferenceRepresentation" ) );
188 if ( visualReferenceRepresentation.
isDefined(
"jpegImage" ) )
193 if ( visualReferenceRepresentation.
isDefined(
"pngImage" ) )
198 if ( visualReferenceRepresentation.
isDefined(
"imageMask" ) )
205 (int32_t)
IntegerNode( visualReferenceRepresentation.
get(
"imageHeight" ) ).value();
207 (int32_t)
IntegerNode( visualReferenceRepresentation.
get(
"imageWidth" ) ).value();
210 if (
image.isDefined(
"pinholeRepresentation" ) )
214 if ( pinholeRepresentation.
isDefined(
"jpegImage" ) )
219 if ( pinholeRepresentation.
isDefined(
"pngImage" ) )
224 if ( pinholeRepresentation.
isDefined(
"imageMask" ) )
233 (int32_t)
IntegerNode( pinholeRepresentation.
get(
"imageHeight" ) ).value();
235 (int32_t)
IntegerNode( pinholeRepresentation.
get(
"imageWidth" ) ).value();
246 else if (
image.isDefined(
"sphericalRepresentation" ) )
250 if ( sphericalRepresentation.
isDefined(
"jpegImage" ) )
255 if ( sphericalRepresentation.
isDefined(
"pngImage" ) )
260 if ( sphericalRepresentation.
isDefined(
"imageMask" ) )
267 (int32_t)
IntegerNode( sphericalRepresentation.
get(
"imageHeight" ) ).value();
269 (int32_t)
IntegerNode( sphericalRepresentation.
get(
"imageWidth" ) ).value();
276 else if (
image.isDefined(
"cylindricalRepresentation" ) )
280 if ( cylindricalRepresentation.
isDefined(
"jpegImage" ) )
285 if ( cylindricalRepresentation.
isDefined(
"pngImage" ) )
290 if ( cylindricalRepresentation.
isDefined(
"imageMask" ) )
297 (int32_t)
IntegerNode( cylindricalRepresentation.
get(
"imageHeight" ) ).value();
299 (int32_t)
IntegerNode( cylindricalRepresentation.
get(
"imageWidth" ) ).value();
316 int64_t
count )
const
318 int64_t transferred = 0;
327 if (
image.isDefined(
"jpegImage" ) )
330 jpegImage.read( (uint8_t *)pBuffer, start, (
size_t)
count );
337 if (
image.isDefined(
"pngImage" ) )
340 pngImage.read( (uint8_t *)pBuffer, start, (
size_t)
count );
347 if (
image.isDefined(
"imageMask" ) )
350 imageMask.read( (uint8_t *)pBuffer, start, (
size_t)
count );
361 int64_t &imageHeight, int64_t &imageSize,
Image2DType &imageMaskType )
const
369 if (
image.isDefined(
"imageWidth" ) )
378 if (
image.isDefined(
"imageHeight" ) )
387 if (
image.isDefined(
"jpegImage" ) )
389 imageSize =
BlobNode(
image.get(
"jpegImage" ) ).byteCount();
392 else if (
image.isDefined(
"pngImage" ) )
398 if (
image.isDefined(
"imageMask" ) )
402 imageSize =
BlobNode(
image.get(
"imageMask" ) ).byteCount();
412 int64_t &imageWidth, int64_t &imageHeight, int64_t &imageSize,
415 if ( ( imageIndex < 0 ) || ( imageIndex >= images2D_.
childCount() ) )
428 if (
image.isDefined(
"visualReferenceRepresentation" ) )
431 StructureNode visualReferenceRepresentation(
image.get(
"visualReferenceRepresentation" ) );
432 ret = GetImage2DNodeSizes( visualReferenceRepresentation, imageType, imageWidth, imageHeight, imageSize,
434 imageVisualType = imageType;
437 if (
image.isDefined(
"pinholeRepresentation" ) )
442 GetImage2DNodeSizes( pinholeRepresentation, imageType, imageWidth, imageHeight, imageSize, imageMaskType );
444 else if (
image.isDefined(
"sphericalRepresentation" ) )
448 ret = GetImage2DNodeSizes( sphericalRepresentation, imageType, imageWidth, imageHeight, imageSize,
451 else if (
image.isDefined(
"cylindricalRepresentation" ) )
455 ret = GetImage2DNodeSizes( cylindricalRepresentation, imageType, imageWidth, imageHeight, imageSize,
464 void *pBuffer, int64_t start, int64_t
count )
const
466 if ( ( imageIndex < 0 ) || ( imageIndex >= images2D_.
childCount() ) )
471 int64_t transferred = 0;
474 switch ( imageProjection )
479 if (
image.isDefined(
"visualReferenceRepresentation" ) )
481 StructureNode visualReferenceRepresentation(
image.get(
"visualReferenceRepresentation" ) );
482 transferred = ReadImage2DNode( visualReferenceRepresentation, imageType, pBuffer, start,
count );
487 if (
image.isDefined(
"pinholeRepresentation" ) )
490 transferred = ReadImage2DNode( pinholeRepresentation, imageType, pBuffer, start,
count );
495 if (
image.isDefined(
"sphericalRepresentation" ) )
498 transferred = ReadImage2DNode( sphericalRepresentation, imageType, pBuffer, start,
count );
503 if (
image.isDefined(
"cylindricalRepresentation" ) )
506 transferred = ReadImage2DNode( cylindricalRepresentation, imageType, pBuffer, start,
count );
545 if ( ( dataIndex < 0 ) || ( dataIndex >= data3D_.
childCount() ) )
576 for ( i = 0; i < originalGuids.
childCount(); i++ )
593 if ( scan.
isDefined(
"sensorSerialNumber" ) )
597 if ( scan.
isDefined(
"sensorHardwareVersion" ) )
601 if ( scan.
isDefined(
"sensorSoftwareVersion" ) )
605 if ( scan.
isDefined(
"sensorFirmwareVersion" ) )
615 if ( scan.
isDefined(
"relativeHumidity" ) )
619 if ( scan.
isDefined(
"atmosphericPressure" ) )
644 if ( scan.
isDefined(
"pointGroupingSchemes" ) )
647 if ( pointGroupingSchemes.
isDefined(
"groupingByLine" ) )
649 StructureNode groupingByLine( pointGroupingSchemes.
get(
"groupingByLine" ) );
658 if ( lineGroupRecord.
isDefined(
"pointCount" ) )
667 if ( scan.
isDefined(
"cartesianBounds" ) )
690 if ( scan.
isDefined(
"sphericalBounds" ) )
755 if ( scan.
isDefined(
"acquisitionStart" ) )
760 (int32_t)
IntegerNode( acquisitionStart.
get(
"isAtomicClockReferenced" ) ).value();
763 if ( scan.
isDefined(
"acquisitionEnd" ) )
768 (int32_t)
IntegerNode( acquisitionEnd.
get(
"isAtomicClockReferenced" ) ).value();
800 else if ( proto.
isDefined(
"sphericalRange" ) )
829 if ( proto.
isDefined(
"sphericalAzimuth" ) )
911 if ( scan.
isDefined(
"intensityLimits" ) )
1016 (double)
IntegerNode( colorbox.
get(
"colorGreenMaximum" ) ).value();
1018 (double)
IntegerNode( colorbox.
get(
"colorGreenMinimum" ) ).value();
1020 (double)
IntegerNode( colorbox.
get(
"colorBlueMaximum" ) ).value();
1022 (double)
IntegerNode( colorbox.
get(
"colorBlueMinimum" ) ).value();
1107 int64_t &groupsSize, int64_t &countSize,
bool &bColumnIndex )
const
1113 int64_t elementSize = 0;
1115 bColumnIndex =
false;
1121 if ( ( dataIndex < 0 ) || ( dataIndex >= data3D_.
childCount() ) )
1129 pointsSize =
points.childCount();
1134 if ( indexBounds.
isDefined(
"columnMaximum" ) )
1140 if ( indexBounds.
isDefined(
"rowMaximum" ) )
1147 if ( scan.
isDefined(
"pointGroupingSchemes" ) )
1150 if ( pointGroupingSchemes.
isDefined(
"groupingByLine" ) )
1152 StructureNode groupingByLine( pointGroupingSchemes.
get(
"groupingByLine" ) );
1154 StringNode idElementName( groupingByLine.
get(
"idElementName" ) );
1155 if ( idElementName.
value().compare(
"columnIndex" ) == 0 )
1157 bColumnIndex =
true;
1165 if ( lineGroupRecord.
isDefined(
"idElementValue" ) )
1170 else if ( bColumnIndex )
1172 elementSize = column;
1179 if ( lineGroupRecord.
isDefined(
"pointCount" ) )
1183 else if ( bColumnIndex )
1210 column = elementSize;
1223 int64_t *startPointIndex, int64_t *pointCount )
const
1225 if ( ( dataIndex < 0 ) || ( dataIndex >= data3D_.
childCount() ) )
1231 if ( !scan.
isDefined(
"pointGroupingSchemes" ) )
1237 if ( !pointGroupingSchemes.
isDefined(
"groupingByLine" ) )
1242 StructureNode groupingByLine( pointGroupingSchemes.
get(
"groupingByLine" ) );
1244 StringNode idElementName( groupingByLine.
get(
"idElementName" ) );
1248 int64_t protoCount = lineGroupRecord.
childCount();
1250 std::vector<SourceDestBuffer> groupSDBuffers;
1252 for ( protoIndex = 0; protoIndex < protoCount; protoIndex++ )
1256 if ( (
name.compare(
"idElementValue" ) == 0 ) && lineGroupRecord.
isDefined(
"idElementValue" ) &&
1257 ( idElementValue !=
nullptr ) )
1259 groupSDBuffers.emplace_back( imf_,
"idElementValue", idElementValue, groupCount,
true );
1262 if ( (
name.compare(
"startPointIndex" ) == 0 ) && lineGroupRecord.
isDefined(
"startPointIndex" ) &&
1263 ( startPointIndex !=
nullptr ) )
1265 groupSDBuffers.emplace_back( imf_,
"startPointIndex", startPointIndex, groupCount,
true );
1268 if ( (
name.compare(
"pointCount" ) == 0 ) && lineGroupRecord.
isDefined(
"pointCount" ) &&
1269 ( pointCount !=
nullptr ) )
1271 groupSDBuffers.emplace_back( imf_,
"pointCount", pointCount, groupCount,
true );
1283 template <
typename COORDTYPE>
1294 std::vector<SourceDestBuffer> destBuffers;
1296 for ( protoIndex = 0; protoIndex < protoCount; protoIndex++ )
1305 if ( (
name.compare(
"cartesianX" ) == 0 ) && proto.
isDefined(
"cartesianX" ) &&
1308 destBuffers.emplace_back( imf_,
"cartesianX", buffers.
cartesianX,
count,
true, scaled );
1310 else if ( (
name.compare(
"cartesianY" ) == 0 ) && proto.
isDefined(
"cartesianY" ) &&
1313 destBuffers.emplace_back( imf_,
"cartesianY", buffers.
cartesianY,
count,
true, scaled );
1315 else if ( (
name.compare(
"cartesianZ" ) == 0 ) && proto.
isDefined(
"cartesianZ" ) &&
1318 destBuffers.emplace_back( imf_,
"cartesianZ", buffers.
cartesianZ,
count,
true, scaled );
1320 else if ( (
name.compare(
"cartesianInvalidState" ) == 0 ) && proto.
isDefined(
"cartesianInvalidState" ) &&
1325 else if ( (
name.compare(
"sphericalRange" ) == 0 ) && proto.
isDefined(
"sphericalRange" ) &&
1328 destBuffers.emplace_back( imf_,
"sphericalRange", buffers.
sphericalRange,
count,
true, scaled );
1330 else if ( (
name.compare(
"sphericalAzimuth" ) == 0 ) && proto.
isDefined(
"sphericalAzimuth" ) &&
1333 destBuffers.emplace_back( imf_,
"sphericalAzimuth", buffers.
sphericalAzimuth,
count,
true, scaled );
1335 else if ( (
name.compare(
"sphericalElevation" ) == 0 ) && proto.
isDefined(
"sphericalElevation" ) &&
1340 else if ( (
name.compare(
"sphericalInvalidState" ) == 0 ) && proto.
isDefined(
"sphericalInvalidState" ) &&
1345 else if ( (
name.compare(
"rowIndex" ) == 0 ) && proto.
isDefined(
"rowIndex" ) &&
1348 destBuffers.emplace_back( imf_,
"rowIndex", buffers.
rowIndex,
count,
true );
1350 else if ( (
name.compare(
"columnIndex" ) == 0 ) && proto.
isDefined(
"columnIndex" ) &&
1353 destBuffers.emplace_back( imf_,
"columnIndex", buffers.
columnIndex,
count,
true );
1355 else if ( (
name.compare(
"returnIndex" ) == 0 ) && proto.
isDefined(
"returnIndex" ) &&
1358 destBuffers.emplace_back( imf_,
"returnIndex", buffers.
returnIndex,
count,
true );
1360 else if ( (
name.compare(
"returnCount" ) == 0 ) && proto.
isDefined(
"returnCount" ) &&
1363 destBuffers.emplace_back( imf_,
"returnCount", buffers.
returnCount,
count,
true );
1365 else if ( (
name.compare(
"timeStamp" ) == 0 ) && proto.
isDefined(
"timeStamp" ) &&
1368 destBuffers.emplace_back( imf_,
"timeStamp", buffers.
timeStamp,
count,
true, scaled );
1370 else if ( (
name.compare(
"isTimeStampInvalid" ) == 0 ) && proto.
isDefined(
"isTimeStampInvalid" ) &&
1375 else if ( (
name.compare(
"intensity" ) == 0 ) && proto.
isDefined(
"intensity" ) &&
1378 destBuffers.emplace_back( imf_,
"intensity", buffers.
intensity,
count,
true, scaled );
1380 else if ( (
name.compare(
"isIntensityInvalid" ) == 0 ) && proto.
isDefined(
"isIntensityInvalid" ) &&
1385 else if ( (
name.compare(
"colorRed" ) == 0 ) && proto.
isDefined(
"colorRed" ) &&
1388 destBuffers.emplace_back( imf_,
"colorRed", buffers.
colorRed,
count,
true, scaled );
1390 else if ( (
name.compare(
"colorGreen" ) == 0 ) && proto.
isDefined(
"colorGreen" ) &&
1393 destBuffers.emplace_back( imf_,
"colorGreen", buffers.
colorGreen,
count,
true, scaled );
1395 else if ( (
name.compare(
"colorBlue" ) == 0 ) && proto.
isDefined(
"colorBlue" ) &&
1398 destBuffers.emplace_back( imf_,
"colorBlue", buffers.
colorBlue,
count,
true, scaled );
1400 else if ( (
name.compare(
"isColorInvalid" ) == 0 ) && proto.
isDefined(
"isColorInvalid" ) &&
1405 else if ( haveNormalsExt && (
name.compare(
"nor:normalX" ) == 0 ) && proto.
isDefined(
"nor:normalX" ) &&
1406 ( buffers.
normalX !=
nullptr ) )
1408 destBuffers.emplace_back( imf_,
"nor:normalX", buffers.
normalX,
count,
true, scaled );
1410 else if ( haveNormalsExt && (
name.compare(
"nor:normalY" ) == 0 ) && proto.
isDefined(
"nor:normalY" ) &&
1411 ( buffers.
normalY !=
nullptr ) )
1413 destBuffers.emplace_back( imf_,
"nor:normalY", buffers.
normalY,
count,
true, scaled );
1415 else if ( haveNormalsExt && (
name.compare(
"nor:normalZ" ) == 0 ) && proto.
isDefined(
"nor:normalZ" ) &&
1416 ( buffers.
normalZ !=
nullptr ) )
1418 destBuffers.emplace_back( imf_,
"nor:normalZ", buffers.
normalZ,
count,
true, scaled );
std::shared_ptr< core::Tensor > image
An E57 element encoding an fixed-length sequence of bytes with an opaque format.
An E57 element encoding an integer value.
An E57 element containing named child nodes.
int64_t byteCount() const
Get size of blob declared when it was created.
CompressedVectorReader reader(const std::vector< SourceDestBuffer > &dbufs)
Create an iterator object for reading a series of blocks of data from a CompressedVectorNode.
Node prototype() const
Get the prototype tree that describes the types in the record.
int64_t childCount() const
Get current number of records in a CompressedVectorNode.
unsigned read()
Request transfer of blocks of data from CompressedVectorNode into previously designated destination b...
void close()
End the read operation.
double minimum() const
Get the declared minimum that the value may take.
double maximum() const
Get the declared maximum that the value may take.
double value() const
Get IEEE floating point value stored.
bool isOpen() const
Test whether ImageFile is still open for accessing.
bool extensionsLookupPrefix(const ustring &prefix, ustring &uri) const
Get URI associated with an E57 extension prefix in the ImageFile.
void close()
Complete any write operations on an ImageFile, and close the file on the disk.
int64_t value() const
Get integer value stored.
int64_t maximum() const
Get the declared maximum that the value may take.
int64_t minimum() const
Get the declared minimum that the value may take.
ustring elementName() const
Get element name of node.
NodeType type() const
Return the NodeType of a generic Node.
bool GetImage2DSizes(int64_t imageIndex, Image2DProjection &imageProjection, Image2DType &imageType, int64_t &imageWidth, int64_t &imageHeight, int64_t &imageSize, Image2DType &imageMaskType, Image2DType &imageVisualType) const
ReaderImpl(const ustring &filePath)
bool GetData3DSizes(int64_t dataIndex, int64_t &rowMax, int64_t &columnMax, int64_t &pointsSize, int64_t &groupsSize, int64_t &countSize, bool &bColumnIndex) const
bool ReadData3DGroupsData(int64_t dataIndex, int64_t groupCount, int64_t *idElementValue, int64_t *startPointIndex, int64_t *pointCount) const
VectorNode GetRawImages2D() const
int64_t ReadImage2DData(int64_t imageIndex, Image2DProjection imageProjection, Image2DType imageType, void *pBuffer, int64_t start, int64_t count) const
int64_t GetData3DCount() const
StructureNode GetRawE57Root() const
bool ReadData3D(int64_t dataIndex, Data3D &data3DHeader) const
bool GetE57Root(E57Root &fileHeader) const
bool ReadImage2D(int64_t imageIndex, Image2D &Image2DHeader) const
int64_t GetImage2DCount() const
ImageFile GetRawIMF() const
VectorNode GetRawData3D() const
CompressedVectorReader SetUpData3DPointsData(int64_t dataIndex, size_t pointCount, const Data3DPointsData_t< COORDTYPE > &buffers) const
double scale() const
Get declared scaling factor.
int64_t minimum() const
Get the declared minimum that the raw value may take.
int64_t maximum() const
Get the declared maximum that the raw value may take.
double offset() const
Get declared offset.
ustring value() const
Get Unicode character string value stored.
bool isDefined(const ustring &pathName) const
Is the given pathName defined relative to this node.
Node get(int64_t index) const
Get a child element by positional index.
int64_t childCount() const
Return number of child nodes contained by this StructureNode.
Node get(int64_t index) const
Get a child element by positional index.
int64_t childCount() const
Get number of child elements in this VectorNode.
constexpr double E57_NOT_SCALED_USE_INTEGER
Indicates to use ScaledIntegerNode insterad of FloatNode in fields that can use both.
Image2DProjection
Identifies the representation for the image data.
@ E57_SPHERICAL
SphericalRepresentation for the image data.
@ E57_CYLINDRICAL
CylindricalRepresentation for the image data.
@ E57_NO_PROJECTION
No representation for the image data is present.
@ E57_VISUAL
VisualReferenceRepresentation for the image data.
@ E57_PINHOLE
PinholeRepresentation for the image data.
Image2DType
Identifies the format representation for the image data.
@ E57_JPEG_IMAGE
JPEG format image data.
@ E57_PNG_IMAGE
PNG format image data.
@ E57_NO_IMAGE
No image data.
@ E57_PNG_IMAGE_MASK
PNG format image mask.
constexpr double E57_NOT_SCALED_USE_FLOAT
Indicates to use FloatNode instead of ScaledIntegerNode in fields that can use both.
std::string ustring
UTF-8 encodeded Unicode string.
NodeType
Identifiers for types of E57 elements.
@ E57_INTEGER
IntegerNode class.
@ E57_SCALED_INTEGER
ScaledIntegerNode class.
@ E57_FLOAT
FloatNode class.
double zMaximum
The maximum extent of the bounding box in the Z direction.
double xMaximum
The maximum extent of the bounding box in the X direction.
double yMinimum
The minimum extent of the bounding box in the Y direction.
double zMinimum
The minimum extent of the bounding box in the Z direction.
double yMaximum
The maximum extent of the bounding box in the Y direction.
double xMinimum
The minimum extent of the bounding box in the X direction.
double colorGreenMinimum
The minimum producible green color value. Unit is unspecified.
double colorBlueMinimum
The minimum producible blue color value. Unit is unspecified.
double colorRedMaximum
The maximum producible red color value. Unit is unspecified.
double colorBlueMaximum
The maximum producible blue color value. Unit is unspecified.
double colorRedMinimum
The minimum producible red color value. Unit is unspecified.
double colorGreenMaximum
The maximum producible green color value. Unit is unspecified.
double pixelHeight
The height of a pixel in the image (in meters). Shall be positive.
int32_t imageWidth
The image width (in pixels). Shall be positive.
int32_t imageHeight
The image height (in pixels). Shall be positive.
double pixelWidth
The width of a pixel in the image (in radians). Shall be positive.
int64_t jpegImageSize
Size of JPEG format image data in Blob.
int64_t pngImageSize
Size of PNG format image data in Blob.
int64_t imageMaskSize
Size of PNG format image mask in Blob.
Stores pointers to user-provided buffers.
float * normalZ
The Z component of a surface normal vector (E57_EXT_surface_normals).
COORDTYPE * cartesianX
pointer to a buffer with the X coordinate (in meters) of the point in Cartesian coordinates
float * normalX
The X component of a surface normal vector (E57_EXT_surface_normals).
int8_t * isColorInvalid
Value = 0 if the color is considered valid, 1 otherwise.
int8_t * cartesianInvalidState
Value = 0 if the point is considered valid, 1 otherwise.
float * normalY
The Y component of a surface normal vector (E57_EXT_surface_normals).
COORDTYPE * sphericalAzimuth
pointer to a buffer with the Azimuth angle (in radians) of point in spherical coordinates
COORDTYPE * sphericalElevation
pointer to a buffer with the Elevation angle (in radians) of point in spherical coordinates
COORDTYPE * cartesianY
pointer to a buffer with the Y coordinate (in meters) of the point in Cartesian coordinates
int8_t * sphericalInvalidState
Value = 0 if the range is considered valid, 1 otherwise.
uint8_t * colorRed
pointer to a buffer with the Red color coefficient. Unit is unspecified
float * intensity
pointer to a buffer with the Point response intensity. Unit is unspecified
int8_t * isIntensityInvalid
Value = 0 if the intensity is considered valid, 1 otherwise.
COORDTYPE * sphericalRange
pointer to a buffer with the range (in meters) of points in spherical coordinates....
int8_t * isTimeStampInvalid
Value = 0 if the timeStamp is considered valid, 1 otherwise.
COORDTYPE * cartesianZ
pointer to a buffer with the Z coordinate (in meters) of the point in Cartesian coordinates
uint8_t * colorGreen
pointer to a buffer with the Green color coefficient. Unit is unspecified
uint8_t * colorBlue
pointer to a buffer with the Blue color coefficient. Unit is unspecified
Stores the top-level information for a single lidar scan.
DateTime acquisitionStart
The start date and time that the data was acquired.
DateTime acquisitionEnd
The end date and time that the data was acquired.
ustring guid
A globally unique identification string for the current version of the Data3D object.
CartesianBounds cartesianBounds
ustring sensorHardwareVersion
The version number for the sensor hardware at the time of data collection.
ustring sensorFirmwareVersion
std::vector< ustring > originalGuids
ustring name
A user-defined name for the Data3D.
IndexBounds indexBounds
The bounds of the row, column, and return number of all the points in this Data3D.
IntensityLimits intensityLimits
The limits for the value of signal intensity that the sensor is capable of producing.
SphericalBounds sphericalBounds
ustring sensorSerialNumber
The serial number for the sensor.
PointGroupingSchemes pointGroupingSchemes
The defined schemes that group points in different ways.
PointStandardizedFieldsAvailable pointFields
This defines the active fields used in the WritePoints function.
ustring description
A user-defined description of the Image.
ustring sensorModel
The model name or number for the sensor.
float atmosphericPressure
ustring sensorVendor
The name of the manufacturer for the sensor used to collect the points in this Data3D.
ustring sensorSoftwareVersion
The version number for the software used for the data collection.
int32_t isAtomicClockReferenced
double dateTimeValue
The time, in seconds, since GPS time was zero. This time specification may include fractions of a sec...
Stores the top-level information for the XML section of the file.
ustring formatName
Contains the string "ASTM E57 3D Image File".
ustring guid
A globally unique identification string for the current version of the file.
ustring e57LibraryVersion
The version identifier for the E57 file format library that wrote the file.
uint32_t versionMajor
Major version number, should be 1.
uint32_t versionMinor
Minor version number, should be 0.
int64_t data3DSize
Size of the Data3D vector for storing 3D imaging data.
ustring coordinateMetadata
Information describing the Coordinate Reference System to be used for the file.
DateTime creationDateTime
Date/time that the file was created.
int64_t groupsSize
Size of the groups compressedVector of LineGroupRecord structures.
int64_t pointCountSize
This is the size value for the LineGroupRecord::pointCount.
Stores an image from a camera.
ustring sensorVendor
The name of the manufacturer for the sensor used to collect the points in this Data3D.
ustring guid
A globally unique identification string for the current version of the Image2D object.
ustring description
A user-defined description of the Image2D.
ustring name
A user-defined name for the Image2D.
PinholeRepresentation pinholeRepresentation
Representation for an image using the pinhole camera projection model.
ustring sensorModel
The model name or number for the sensor.
SphericalRepresentation sphericalRepresentation
Representation for an image using the spherical camera projection model.
ustring associatedData3DGuid
ustring sensorSerialNumber
The serial number for the sensor.
CylindricalRepresentation cylindricalRepresentation
Representation for an image using the cylindrical camera projection model.
DateTime acquisitionDateTime
The date and time that the image was taken.
VisualReferenceRepresentation visualReferenceRepresentation
int64_t rowMaximum
The maximum rowIndex value of any point represented by this IndexBounds object.
int64_t returnMinimum
The minimum returnIndex value of any point represented by this IndexBounds object.
int64_t columnMinimum
The minimum columnIndex value of any point represented by this IndexBounds object.
int64_t columnMaximum
The maximum columnIndex value of any point represented by this IndexBounds object.
int64_t rowMinimum
The minimum rowIndex value of any point represented by this IndexBounds object.
int64_t returnMaximum
The maximum returnIndex value of any point represented by this IndexBounds object.
double intensityMaximum
The maximum producible intensity value. Unit is unspecified.
double intensityMinimum
The minimum producible intensity value. Unit is unspecified.
double principalPointY
The Y coordinate in the image of the principal point (in pixels).
int64_t imageMaskSize
Size of PNG format image mask in BlobNode.
int32_t imageHeight
The image height (in pixels). Shall be positive.
double focalLength
The camera's focal length (in meters). Shall be positive.
int64_t jpegImageSize
Size of JPEG format image data in BlobNode.
double pixelWidth
The width of the pixels in the camera (in meters). Shall be positive.
double pixelHeight
The height of the pixels in the camera (in meters). Shall be positive.
int32_t imageWidth
The image width (in pixels). Shall be positive.
int64_t pngImageSize
Size of PNG format image data in BlobNode.
GroupingByLine groupingByLine
Grouping information by row or column index.
double pointRangeScaledInteger
bool returnCountField
Indicates that the PointRecord returnCount field is active.
bool isColorInvalidField
Indicates that the PointRecord isColorInvalid field is active.
bool normalZ
Indicates that the PointRecord nor:normalZ field is active.
bool timeStampField
Indicates that the PointRecord timeStamp field is active.
bool returnIndexField
Indicates that the PointRecord returnIndex field is active.
bool colorGreenField
indicates that the PointRecord colorGreen field is active
bool normalY
Indicates that the PointRecord nor:normalY field is active.
bool sphericalRangeField
Indicates that the PointRecord sphericalRange field is active.
bool columnIndexField
Indicates that the PointRecord columnIndex field is active.
bool cartesianYField
Indicates that the PointRecord cartesianY field is active.
bool cartesianInvalidStateField
Indicates that the PointRecord cartesianInvalidState field is active.
bool rowIndexField
Indicates that the PointRecord rowIndex field is active.
bool isIntensityInvalidField
Indicates that the PointRecord isIntensityInvalid field is active.
uint32_t columnIndexMaximum
double intensityScaledInteger
bool sphericalElevationField
Indicates that the PointRecord sphericalElevation field is active.
bool sphericalAzimuthField
Indicates that the PointRecord sphericalAzimuth field is active.
bool sphericalInvalidStateField
Indicates that the PointRecord sphericalInvalidState field is active.
bool normalX
Indicates that the PointRecord nor:normalX field is active.
double angleScaledInteger
bool cartesianZField
Indicates that the PointRecord cartesianZ field is active.
bool colorBlueField
indicates that the PointRecord colorBlue field is active
bool intensityField
Indicates that the PointRecord intensity field is active.
bool cartesianXField
Indicates that the PointRecord cartesianX field is active.
bool colorRedField
indicates that the PointRecord colorRed field is active
bool isTimeStampInvalidField
Indicates that the PointRecord isTimeStampInvalid field is active.
double z
The k coefficient of the quaternion.
double y
The j coefficient of the quaternion.
double x
The i coefficient of the quaternion.
double w
The real part of the quaternion. Shall be nonnegative.
Translation translation
The translation point vector, t, of the transform.
Quaternion rotation
A unit quaternion representing the rotation, R, of the transform.
double azimuthEnd
The ending azimuth angle defining the extent of the bounding region around the z axix.
double elevationMaximum
The maximum extent of the bounding region from the horizontal plane.
double rangeMinimum
The minimum extent of the bounding region in the r direction.
double rangeMaximum
The maximum extent of the bounding region in the r direction.
double elevationMinimum
The minimum extent of the bounding region from the horizontal plane.
double azimuthStart
The starting azimuth angle defining the extent of the bounding region around the z axis.
int32_t imageHeight
The image height (in pixels). Shall be positive.
int64_t imageMaskSize
Size of PNG format image mask in BlobNode.
double pixelHeight
The height of a pixel in the image (in radians). Shall be positive.
int64_t jpegImageSize
Size of JPEG format image data in BlobNode.
double pixelWidth
The width of a pixel in the image (in radians). Shall be positive.
int32_t imageWidth
The image width (in pixels). Shall be positive.
int64_t pngImageSize
Size of PNG format image data in BlobNode.
double y
The Y coordinate of the translation (in meters)
double x
The X coordinate of the translation (in meters)
double z
The Z coordinate of the translation (in meters)
int32_t imageHeight
The image height (in pixels). Shall be positive.
int64_t imageMaskSize
Size of PNG format image mask in BlobNode.
int32_t imageWidth
The image width (in pixels). Shall be positive.
int64_t jpegImageSize
Size of JPEG format image data in BlobNode.
int64_t pngImageSize
Size of PNG format image data in BlobNode.