Wrong scale for additional attribute "Pulse Width" in recent RIEGL exports?

39 views
Skip to first unread message

Martin Isenburg

unread,
Sep 13, 2018, 8:56:59 AM9/13/18
to LAStools - efficient command line tools for LIDAR processing, The LAS room - a friendly place to discuss specifications of the LAS format
Hello,

has someone else seen this? Recent exports of the additional point attribute "Pulse Width" that is available when exporting LiDAR collected with RIEGL scanners seem to have the wrong scale in the Extra Bytes VLR. There is a scale of 0.01 scale instead of the 0.1 scale that I remember being there in the past. Below the relevant snippet from the lasinfo report (full report at the end).

      data type: 3 (unsigned short), name "Pulse width", description: "Full width at half maximum [ns]", min: 1, max: 10000, scale: 0.01, offset: 0 (not set)

Is someone else seeing that in their data? This is an export from RiWORLD 5.1.4. and it seems as if there might be a little bug in the exporter. I've hacked something to fix it that is also useful for copying extra attribute data into other fields, such as copying the "Pulse Width" (or rather the "Echo Width" in order not to confuse it with the diameter of the footprint) into the user data field.

Here are the clearly wrong values for "echo width" in red. They should be 10 times bigger.

C:\LAStools\bin>las2las -i dhmlas_32507_5713_1_nw.laz -otxt -oparse xyz1u -stdout | more
507640.09 5713027.78 220.63 0.47 2
507640.15 5713028.37 220.71 0.43 2
507639.82 5713028.37 220.52 0.43 2
507639.52 5713028.38 219.94 0.44 2
507640.78 5713028.89 220.10 0.41 2
507640.36 5713028.86 220.28 0.63 2
[...]

Fixed to the correct values with the new option ' set_attribute_scale' in las2las.

C:\LAStools\bin>las2las -i dhmlas_32507_5713_1_nw.laz -set_attribute_scale 1 0.1 -otxt -oparse xyz1u -stdout | more
507640.09 5713027.78 220.63 4.7 2
507640.15 5713028.37 220.71 4.3 2
507639.82 5713028.37 220.52 4.3 2
507639.52 5713028.38 219.94 4.4 2
507640.78 5713028.89 220.10 4.1 2
507640.36 5713028.86 220.28 6.3 2
[...]

In order to store those values to the user data we can simply use a larger scale factor.

C:\LAStools\bin>las2las -i dhmlas_32507_5713_1_nw.laz -set_attribute_scale 1 1.0 -otxt -oparse xyz1u -stdout | more
507640.09 5713027.78 220.63 47 2
507640.15 5713028.37 220.71 43 2
507639.82 5713028.37 220.52 43 2
507639.52 5713028.38 219.94 44 2
507640.78 5713028.89 220.10 41 2
507640.36 5713028.86 220.28 63 2
[...]

Now we copy them - at the same time - into the user data field.

C:\LAStools\bin>las2las -i dhmlas_32507_5713_1_nw.laz -set_attribute_scale 1 1.0 -copy_attribute_into_user_data 1 -otxt -oparse xyz1u -stdout | more
507640.09 5713027.78 220.63 47 47
507640.15 5713028.37 220.71 43 43
507639.82 5713028.37 220.52 43 43
507639.52 5713028.38 219.94 44 44
507640.78 5713028.89 220.10 41 41
507640.36 5713028.86 220.28 63 63
[...]

Voila! This will be available in the next version of LAStools.

========================================================

C:\software\LAStools\bin>lasinfo -i dhmlas_32507_5713_1_nw.laz -histo attribute1 0.5
lasinfo (180911) report for 'dhmlas_32507_5713_1_nw.laz'
reporting all LAS header entries:
  file signature:             'LASF'
  file source ID:             0
  global_encoding:            1
  project ID GUID data 1-4:   00000000-0000-0000-0000-000000000000
  version major.minor:        1.4
  system identifier:          ''
  generating software:        'TerraScan'
  file creation day/year:     242/2018
  header size:                375
  offset to point data:       815
  number var. length records: 1
  point data format:          6
  point data record length:   34
  number of point records:    0
  number of points by return: 0 0 0 0 0
  scale factor x y z:         0.01 0.01 0.01
  offset x y z:               0 5000000 0
  min x y z:                  507000.00 5713000.00 215.65
  max x y z:                  507999.99 5713999.99 250.73
  start of waveform data packet record: 0
  start of first extended variable length record: 0
  number of extended_variable length records: 0
  extended number of point records: 6561202
  extended number of points by return: 6508593 41554 9419 1481 155 0 0 0 0 0 0 0 0 0 0
variable length header record 1 of 1:
  reserved             0
  user ID              'LASF_Spec'
  record ID            4
  length after header  384
  description          'RIEGL Extra Bytes'
    Extra Byte Descriptions
      data type: 3 (unsigned short), name "Amplitude", description: "Echo signal amplitude [dB]", min: 0, max: 10000, scale: 0.01, offset: 0 (not set)
      data type: 3 (unsigned short), name "Pulse width", description: "Full width at half maximum [ns]", min: 1, max: 10000, scale: 0.01, offset: 0 (not set)
the header is followed by 2 user-defined bytes
LASzip compression (version 3.2r3 c3 50000): POINT14 3 BYTE14 3
reporting minimum and maximum for all LAS point record entries ...
  X            50700000   50799999
  Y            71300000   71399999
  Z               21565      25073
  intensity           1      65525
  return_number       1          5
  number_of_returns   1          5
  edge_of_flight_line 0          0
  scan_direction_flag 0          0
  classification      1         24
  scan_angle_rank   -34         33
  user_data           2          2
  point_source_ID   108        134
  gps_time 205072161.761080 205152474.441258
  extended_return_number          1      5
  extended_number_of_returns      1      5
  extended_classification         1     24
  extended_scan_angle         -5667   5500
  extended_scanner_channel        0      0
number of first returns:        6508593
number of intermediate returns: 12325
number of last returns:         6504093
number of single returns:       6463809
overview over extended number of returns of given pulse: 6463809 65861 25152 5602 778 0 0 0 0 0 0 0 0 0 0
histogram of classification of points:
           44784  unclassified (1)
         6371404  ground (2)
           12325  Reserved for ASPRS Definition (19)
          132572  Reserved for ASPRS Definition (20)
             117  Reserved for ASPRS Definition (24)
attribute 1 histogram with bin size 0.500000
  bin [0.0,0.5) has 6512163
  bin [0.5,1.0) has 45331
  bin [1.0,1.5) has 299
  bin [1.5,2.0) has 4
  bin [428.0,428.5) has 3405
  average attribute 1 0.6 for 6561202 element(s)

Martin Isenburg

unread,
Sep 15, 2018, 8:33:26 AM9/15/18
to LAStools - efficient command line tools for LIDAR processing, The LAS room - a friendly place to discuss specifications of the LAS format
Hello,

the mystery was solved. The RIEGL exports are okay. TerraScan X64 Version 18.018 is the problem.


For the raw strip processed by RiWorld software the scale for pulse width looks normal 0.1:


 description          'RIEGL Extra Bytes'
    Extra Byte Descriptions
      data type: 3 (unsigned short), name "Amplitude", description: "Echo signal amplitude [dB]", min: 0, max: 10000, scale: 0.01, offset: 0 (not set)
      data type: 3 (unsigned short), name "Pulse width", description: "Full width athalf maximum [ns]", min: 1, max: 10000, scale: 0.1, offset: 0 (not set)

The strips where then imported in blocks into TerraScan X64 Version 18.018. After this step the extrabyte information for pulse width is rescaled to 0.01:

description          'RIEGL Extra Bytes'
    Extra Byte Descriptions
      data type: 3 (unsigned short), name "Amplitude", description: "Echo signal amplitude [dB]", min: 0, max: 10000, scale: 0.01, offset: 0 (not set)
      data type: 3 (unsigned short), name "Pulse width", description: "Full width at half maximum [ns]", min: 1, max: 10000, scale: 0.01, offset: 0 (not set)

Terrasolid has been informed about the bug.

Regards,

Martin
Reply all
Reply to author
Forward
0 new messages