A LiDAR user is telling me that his LiDAR data acquired from my organization has only integer LiDAR in certain areas. He is requesting non-integer LiDAR for those areas. First, can anyone help explain integer vs non integer LiDAR to me?
I imagine that "non-integer" (in this context, a very incorrect term) is indicating floating point in the z values. The [x,y,z] data is always collected as float, stored as integer and scaled using the X, Y or Z scale factor in the PUBLIC RECORD HEADER. Depending on the sensor, you can rely on decimal precision to 4-5 decimal places.
All of the LAS standards (1.0 - 1.4) state: "The scale factor fields contain a double floating point value that is used to scale the corresponding X, Y, and Z long values within the point records. The corresponding X, Y, and Z scale factor must be multiplied by the X, Y, or Z point record value to get the actual X, Y, or Z coordinate. For example, if the X, Y, and Z coordinates are intended to have two decimal point values, then each scale factor will contain the number 0.01." Most software for processing lidar will do this automatically during processing or export.
If the data is in an ASCII format and was rounded for storage purposes, it is possible that the data had a scaling factor applied (eg., [z * 10000] would scale to 16-bit) and the original data can be retrieved by merely dividing by the scaling factor. This should be indicated in any associated metadata.
It is also possible that the data was rounded for misguided processing purposes. If this is the case it is quite problematic and will cause considerable bias when using the data. Even if the data represents filtered bare earth, rounding the data will bring out the bias of the given filtering algorithm applied (eg., contour, tin, interpolation). If you discover that this data has just been rounded, and not scaled, I would request the raw data from the vendor and reprocess everything.
Keep in mind that, unless calibrated in post processing, the return intensity values are always 8-bit integer (0-255). Although, I believe that some vendors were looking into 16-bit intensity values but, the data would still be integer and not 32-bit or 64-bit floating point.
Storing in integer instead of floating point is just a trick to reduce the size of the dataset which has little impact in practice.
Maybe the user is talking about discrete vs full waveform data for the area, which makes more difference. In "discrete" LiDAR, one pulse coming back to the sensor is recorded as a set of "individual returns", while with full waveform the returning intensité is recorder in one graph with a very short time step.