This is a follow-up to the discussion on improving the hard-to-implement-correctly wording of the full waveform part of the LAS 1.3/1.4 specifications:
I am looking for multi-return LiDAR data in LAS format where you are sure that a proper refraction of the laser pulse either by the atmosphere or by the water surface was considered in the calculation of the returns. I need overheanging vegetation in the case of water to get sufficiently many returns.
In order to check this I need at least three returns R1, R2, R3 from one pulse. Then I can simply check whether the two vectors V1->V2 and V2->V3 are colinear or not. Of course they will not be exactly colinear because the LiDAR returns are quantized onto a grid with (typically) centimeter resolution. So I have to disregard any non-colinearity that has do to with the quantization by allowing a "wiggle" of one unit of resolution (or so) in all directions.
I wrote a little tool that does this analysis based on the attached formulas. On (the few) topographic data sets that I have tested so far I do not seen any concrete evidence for a refraction calculation.
Here a small output for a heavily vegetated area (= many multi-returns) when allowing an error of 0.75 (and 0.5) resolution units (units are 0.01 m). The first interval [0,0.01) is the amount the angle is bigger than the error in degrees. The second number 5.45705 is the average scan angle of all (17) cases that fell into the bin [0,0.01). For details on the forumlas I use see the attached illustration.
D:\LAStools\bin>laspulse -i sample_sorted.laz -histo angle_bigger_error 0.01 -error 0.75
angle bigger than error [degrees] histogram of averages with bin size 0.01
bin [0,0.01) average has 5.45705 (of 17)
bin [0.01,0.02) average has 7.88778 (of 12)
bin [0.02,0.03) average has 7.82674 (of 7)
bin [0.03,0.04) average has 8.89233 (of 4)
bin [0.04,0.05) average has 4.20227 (of 3)
bin [0.05,0.06) average has 4.68921 (of 2)
bin [0.06,0.07) average has 5.67395 (of 1)
bin [0.07,0.08) average has 6.4139 (of 1)
bin [0.08,0.09) average has 25.9835 (of 1)
average angle bigger than error [degrees] 0.0217497
angle_was_bigger: 48
error_was_bigger: 7433
D:\LAStools\bin>laspulse -i sample_sorted.laz -histo angle_bigger_error 0.01 -error 0.5
angle bigger than error [degrees] histogram of averages with bin size 0.01
bin [0,0.01) has average 6.60165 (of 237)
bin [0.01,0.02) has average 6.74692 (of 199)
bin [0.02,0.03) has average 6.927 (of 145)
bin [0.03,0.04) has average 5.60133 (of 152)
bin [0.04,0.05) has average 6.07346 (of 101)
bin [0.05,0.06) has average 6.70201 (of 102)
bin [0.06,0.07) has average 5.69322 (of 81)
bin [0.07,0.08) average has 6.6355 (of 62)
bin [0.08,0.09) average has 6.18434 (of 46)
bin [0.09,0.1) average has 6.44559 (of 43)
bin [0.1,0.11) average has 6.15146 (of 38)
bin [0.11,0.12) average has 6.25207 (of 31)
bin [0.12,0.13) average has 5.84629 (of 24)
bin [0.13,0.14) average has 7.11392 (of 17)
bin [0.14,0.15) average has 8.26239 (of 15)
bin [0.15,0.16) average has 8.26413 (of 12)
bin [0.16,0.17) average has 4.11885 (of 6)
bin [0.17,0.18) average has 4.65816 (of 4)
bin [0.18,0.19) average has 4.53317 (of 8)
bin [0.19,0.2) average has 5.2924 (of 5)
bin [0.2,0.21) average has 4.75854 (of 2)
bin [0.21,0.22) average has 10.2464 (of 4)
bin [0.22,0.23) average has 5.86678 (of 2)
bin [0.23,0.24) average has 4.29368 (of 4)
bin [0.24,0.25) average has 5.17868 (of 3)
bin [0.25,0.26) average has 5.04914 (of 2)
bin [0.26,0.27) average has 4.97388 (of 1)
bin [0.27,0.28) average has 5.3555 (of 1)
bin [0.31,0.32) average has 6.49198 (of 1)
bin [0.33,0.34) average has 4.34348 (of 2)
bin [0.34,0.35) average has 4.30976 (of 1)
bin [0.36,0.37) average has 4.04272 (of 1)
bin [0.4,0.41) average has 4.22064 (of 1)
bin [0.61,0.62) average has 22.5806 (of 1)
bin [0.73,0.74) average has 5.65066 (of 1)
average angle bigger than error [degrees] 0.0516696
angle_was_bigger: 1355
error_was_bigger: 6126
Does anybody have data that is *definitely* refraction corrected? I want to see how this looks different in the outputs