Syntax @PointCloudInterpretation(CONVERT [,, ,,]+) @PointCloudInterpretation(SCALE [,,, ,,]+) @PointCloudInterpretation([REJECTABLE], [], [,,, ,,]+) Arguments REJECTABLE Specifies if the function will supply a rejection code and message to the invalid feature and output it to the rejected port, or will fail upon being supplied invalid features. A feature can be rejected for the following reasons: - The feature has invalid geometry - The pointcloud is missing the specific component The component to scale. The source type of the component. Range: REAL64, REAL32, UINT64, INT64, UINT32, INT32, UINT16, INT16, UINT8, INT8 The destination type of the component. Range: REAL64, REAL32, UINT64, INT64, UINT32, INT32, UINT16, INT16, UINT8, INT8, STRING The conversion method to go from the source type to the destination type. CAST - uses C-style casts. BOUNDEDCAST - Uses C-style casts, but also validates that the source values fit into the destination type, effectively preventing underflow and overflow. If a source value does not fit, the corresponding destination value will either be set to its type's minimum or maximum value. TYPESCALE - Scales the source values while preserving all proportions in regard to the source and destination types' range. This is typically used when converting color components, e.g. from UInt8 to UInt16. DATASCALE - Finds the minimum and maximum values of the source values and uses them to scale the values to the full range of the destination type. DATASCALEPRESERVE - Similar to DATASCALE, but also sets a scale and offset on the destination component so that the original values are preserved. This may be useful when you have floating point values but need to convert them to an integer type, while still preserving the original values. For example, this could be used when reading Real64 coordinates (e.g. from the POINTCLOUDXYZ reader) and writing to a format that only supports integer coordinates (e.g. the LAS writer). Range: CAST, BOUNDEDCAST, TYPESCALE, DATASCALE, DATASCALEPRESERVE The action to take when converting from floating-point values to integer. ROUND rounds the value to the nearest integer. CEIL gets the next integer which is greater than or equal to the floating-point value. FLOOR gets the next integer which is less than or equal to the floating-point value. Range: ROUND, CEIL, FLOOR Description The @PointCloudInterpretation function is used to alter the data type and component values of point cloud components. CONVERT mode In CONVERT mode, the data type of the component is changed. Multiple components can be converted with one call to this function. The set of four parameters (,,, ) must be specified for each component. The following example will scale the red, green, and blue component values to uint16: @PointCloudInterpretation (CONVERT, color_red,uint16,TYPESCALE,ROUND, color_green,uint16,TYPESCALE,ROUND, color_blue,uint16,TYPESCALE,ROUND) SCALE mode In SCALE mode, the underlying data type of the component is not changed, but the component values are scaled to reflect the intended data type range. For example, consider the color component. The color point cloud component is always stored as UInt16, which has a range of 0-65535. However, in practice, some datasets will only have values in the UInt8 range (0-255), despite being stored in a UInt16. When combining point clouds from different sources, if the color values do not use a consistent range, e.g. one point cloud uses UInt16 color values and another uses UInt8 color values, then the points from the UInt8 cloud may appear black when visualized because the color values are so small in comparison. This function can be used to resolve this inconsistency. Multiple components can be scaled with one call to this function. The set of five parameters (,,,,) must be specified for each component. The following example will scale the red, green, and blue component values from uint8 to uint16: @PointCloudInterpretation (SCALE, color_red,uint8,uint16,TYPESCALE,ROUND, color_green,uint8,uint16,TYPESCALE,ROUND, color_blue,uint8,uint16,TYPESCALE,ROUND) Note that in this mode, STRING is not a valid component type. Additionally, CAST, BOUNDEDCAST, and DATASCALEPRESERVE are not valid conversion types.