How to use the preprocessor.exe in order to ignore GeoTIFF tags while preprocessing non standard .LAS, .LAZ pointcloud data?

Symptoms

Some unusual point cloud input files, like LAS files with non-standard column layout or non-standard geo tags are not automatically preprocessed correctly. They contain geo tag transformations that have already been applied to the coordinates. By treating the .las file in a standard way, the transformation would be applied a second time, resulting in faulty coordinates.

Cause

  • The raw data in these files are in meter, however the file also contains GeoTIFF tags. Therefore, the reader thinks the coordinates are not meter but lat/long, and converts the assumed lat/long to meter. In BricsCAD V21 GeoTIFF tags and WKT strings were totally ignored and the pointclouds were successfully preprocessed, but BricsCAD V22 reads geo tags automatically, and corrupt geo tags are no longer ignored.
  • This new behavior (to not ignore the geo tags anymore) is intended. Other standard pointcloud files will fail to load if GeoTIFF tags are ignored. GeoTIFF tags / WKT strings are specific per LAS/LAZ file.

Solution

  • Our development team implemented a new pre-processor executable file that will allow users to ignore WKT strings / GeoTIFF tags during pre-processing. This way, the files that loaded in V21 but fails to load in V22 will work again.

    A full set of the re-factored options of the executable preprocessor can be found if run the pre-processor executable without arguments in an OS shell:

    Options:
    
    Dry run:
      -h [ --help ]                print allowed options
      -p [ --parse ]               print parsed arguments (without file access)
      -H [ --header ]              print las/laz/e57 header (without reading
                                   points)
    Global:
      -o [ --output ] arg          output filename (string)
      -f [ --folder ] arg          output folder (string)
      -d [ --discretization ] arg  coordinate discretization in meter (double;
                                   default 0.000100)
      -u [ --unstructured ]        treat input files as unstructured
      -t [ --threads ] arg         number of threads (uint32_t; default 12)
    
    Modifiers for subsequent (!) input files:
      -s [ --scale ] arg           scale factor to meter (double; default 1.000000)
      -c [ --columns ] arg         PTS columns (string, default "auto"):
                                       '-c "auto"' assumes 'XYZ[I][RGB]'
                                       '-c "XYZ..BGR"' for example
                                       allows 'XYZRGBI.' with '.' column skip
      -w [ --wkt ] arg             well-known text (WKT) (string, default "file"):
                                       '-w "skip"' skips WKT of input file(s)
                                       '-w "file"' uses  WKT of input file(s)
                                       '-w "GEOGCS[\"WGS 84\",...]"' for example
      -r [ --rgb ] arg             override input RGB bits (uint32_t; default 0):
                                       '-r 0' causes automatic bit determination
                                       allows 0, 8 and 16
    
    Input files:
      -i [ --input ] arg           input files (space separated, wildcard *):
                                       /path/to/stem.ext
                                       /path/to/scan*.*
Steps to use in order to complete a preprocessing with the new executable:
  1. Open the C:\Program Files\Bricsys\BricsCAD V24 en_US folder.
  2. In the folder, with nothing selected, perform Shift+right-click and select Open PowerShell window here.
  3. In the Windows PowerShell dialog that opens, perform the following command using pre-processor options:

    .\preprocessor.exe -w skip -i 'E:\FILE\filename.las' -o myCloud -f "E:\test"

    Note: The first path used in the argument is the path to the actual pointcloud file and then the last path is an empty folder where the cache for the .las file will be created.
  4. Wait for the pre-processing. When it ends, a message Preprocessing finished successful! is displayed.
    PS C:\Program Files\Bricsys\BricsCAD V24 en_US> .\preprocessor.exe -w skip -i 'E:\FILE\filename.las' -o myCloud -f "E:\test"
    **************************
    * Parsed program options *
    **************************
      output         = myCloud.vrm
      folder         = E:/test
      discretization = 0.0001
      unstructured   = use scan positions if present
      threads        = 12
    **************************
      file 1:
        path    = E:\FILE\filename.las
        scale   = 1
        wkt     = skip
        rgb     = automatically determined
    **************************
      Running preprocess: track progress at E:/test\myCloud.log
      Preprocessing finished successful!
    **************************
  5. Copy the new cache folder created (in the above example test folder from E:\) into the BricsCAD's PointCloudCache:

    C:\Users\%username%\AppData\Roaming\Bricsys\BricsCAD\V24x64\en_US\PointCloudCache

  6. Open BricsCAD, create a new drawing and save it.
  7. Run the _POINTCLOUDREFERENCE command -> Insert myCloud.vrm -> set a rendered Visual Style, Zoom to Extents and the pointcloud should be correctly loaded into the drawing.