storing nanometers? set suitable scale factors in your LAS/LAZ exports.

27 views
Skip to first unread message

Martin Isenburg

unread,
Jul 2, 2018, 7:15:47 AM7/2/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 folks from 3DReshaper have (recently?) added support for exporting point clouds to the LAS/LAZ formats and asked me to comment on an  exported LAS/LAZ sample.

"Here is a small zip file containing a LAS and a LAZ file exported from 3DReshaper. Let me know what your findings are about the lasinfo report. To export a LAS (or LAZ) file in 3DReshaper, just select the point cloud, go to File / Export / Export Selected Cloud(s) and choose the right extension!"

I'm using this as an example to remind you to reflect about the accuracy that you expect your data to have and to set the resolution (aka scale factors of LAS/LAZ header) accordingly.

I had a look at the lasinfo report and it looks good except the scale factors and the offset values. This is not the way the LAS / LAZ format was intended to be used. The value in the scale factors specified with what resolution the coordinates are stored and it should match the expected accuracy of the point coordinates. For airborne scans we tend to use scale factors 0.01 0.01 0.01 (aka cm resolution). For mobile scans we tend to use scale factors 0.001 0.001 0.001 (aka mm resolution). For terrestrial scans we tend to use scale factors 0.00025 0.00025 0.00025 (aka quarter-mm resolution).

Your LAS/LAZ files store each point with approximately 9 decimal digits (the digits to the right of the decimal point) because it uses scale factors of 0.000000000150398 0.000000000169045 0.00000000020536. That corresponds to nanometer resolution, which is clearly excessive unless you are scanning with an electron-microscope ... (-:

Also your offsets are really not nice to look at. We usually pick some "rounded" coordinate that is near the point coordinates. The offset is not really needed for local coordinate systems where numbers are close to zero. They are really needed only for projected coordinates (e.g. UTM), geocentric (ECEF), or geometric (long/lat) coordinates where the bounding box enclosing the points is far from zero.

Below I show how to rescale / reoffset the LAZ file you have provided using free and open source las2las. Also note the reduction in file size of down to about a third. The nanometer coordinates are not actual information but just whatever "white noise" happened to be in the registers after the floating-point calculations. And "white noise" is more or less in-compressible.


E:\LAStools\bin>las2las -i "Cloud&Inspection.laz" ^
                         -rescale 0.00025 0.00025 0.00025 ^
                         -auto_reoffset ^
                         -odix _qmm -olaz


BEFORE (size 48,862 bytes)
E:\LAStools\bin>lasinfo -i "Cloud&Inspection.laz"
lasinfo (180620) report for 'Cloud&Inspection.laz'
reporting all LAS header entries:
  file signature:             'LASF'
  file source ID:             0
  global_encoding:            0
  project ID GUID data 1-4:   00000000-0000-0000-0000-000000000000
  version major.minor:        1.2
  system identifier:          'OTHER'
  generating software:        'LASzip DLL 3.1 r0 (170823)'
  file creation day/year:     95/118
  header size:                227
  offset to point data:       227
  number var. length records: 0
  point data format:          2
  point data record length:   26
  number of point records:    4348
  number of points by return: 0 0 0 0 0
  scale factor x y z:         0.000000000150398 0.000000000169045 0.00000000020536
  offset x y z:               -5.061584502268218 4.296448214330293 0.172332938826083
  min x y z:                  -5.362380981254958 3.958358986653901 -0.238388005578519
  max x y z:                  -4.760788023281478 4.634537442006685 0.583053883230685
LASzip compression (version 3.1r0 c2 50000): POINT10 2 RGB12 2
reporting minimum and maximum for all LAS point record entries ...
  X          -2000000000 2000000000
  Y          -2000000000 2000000000
  Z          -2000000000 2000000000
  intensity           0      65535
  return_number       1          1
  number_of_returns   1          1
  edge_of_flight_line 0          0
  scan_direction_flag 0          0
  classification      0          0
  scan_angle_rank     0          0
  user_data           0          0
  point_source_ID     0          0
  Color R 29555 30840
        G 22873 51914
        B 5397 39064
number of first returns:        4348
number of intermediate returns: 0
number of last returns:         4348
number of single returns:       4348
WARNING: for return 1 real number of points by return is 4348 but header entry was not set.
overview over number of returns of given pulse: 4348 0 0 0 0 0 0
histogram of classification of points:
            4348  never classified (0)

AFTER (size 15,951)
E:\LAStools\bin>lasinfo -i "Cloud&Inspection_qmm.laz"
lasinfo (180620) report for 'Cloud&Inspection_qmm.laz'
reporting all LAS header entries:
  file signature:             'LASF'
  file source ID:             0
  global_encoding:            0
  project ID GUID data 1-4:   00000000-0000-0000-0000-000000000000
  version major.minor:        1.2
  system identifier:          'LAStools (c) by rapidlasso GmbH'
  generating software:        'las2las (version 180620)'
  file creation day/year:     95/118
  header size:                227
  offset to point data:       227
  number var. length records: 0
  point data format:          2
  point data record length:   26
  number of point records:    4348
  number of points by return: 4348 0 0 0 0
  scale factor x y z:         0.00025 0.00025 0.00025
  offset x y z:               0 0 0
  min x y z:                  -5.36250 3.95825 -0.23850
  max x y z:                  -4.76075 4.63450 0.58300
LASzip compression (version 3.2r4 c2 50000): POINT10 2 RGB12 2
reporting minimum and maximum for all LAS point record entries ...
  X              -21450     -19043
  Y               15833      18538
  Z                -954       2332
  intensity           0      65535
  return_number       1          1
  number_of_returns   1          1
  edge_of_flight_line 0          0
  scan_direction_flag 0          0
  classification      0          0
  scan_angle_rank     0          0
  user_data           0          0
  point_source_ID     0          0
  Color R 29555 30840
        G 22873 51914
        B 5397 39064
number of first returns:        4348
number of intermediate returns: 0
number of last returns:         4348
number of single returns:       4348
overview over number of returns of given pulse: 4348 0 0 0 0 0 0
histogram of classification of points:
            4348  never classified (0)

Reply all
Reply to author
Forward
0 new messages