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:
-
- Open the C:\Program Files\Bricsys\BricsCAD V24 en_US folder.
- In the folder, with nothing selected, perform Shift+right-click and select Open PowerShell window here.
- 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. - 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! **************************
- 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
- Open BricsCAD, create a new drawing and save it.
- 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.