-
Notifications
You must be signed in to change notification settings - Fork 44
Output
helios++
supports multiple output formats for point clouds, trajectory data and fullwave data.
The output point clouds and (optionally) the full waveform and the trajectory files are stored in
[cwd]/output/Survey Playback/[name of survey as defined in survey.xml]/[time stamp of simulation start]/points/[number of scan position].[xyz|las]
e.g. helios-plusplus/output/Survey Playback/TLS Arbaro/2016-09-28_15-17-52/points/leg000_points.xyz
By default, the point clouds of each leg are written to separate ASCII XYZ files (.xyz) in the format:
X Y Z intensity echoWidth returnNumber numberOfReturns fullwaveIndex hitObjectId class gpsTime
The echo width is only computed if the command line attribute --calcEchowidth
is set, otherwise it will be set to 0.000
for all points.
returnNumber
corresponds to the number of the current hit in a single pulse and numberOfReturns
to the total number of hits in the pulse. In complex scenes, it may be highly influenced by the quality of the fullwave simulation - especially when using the diffuse voxel model.
fullwaveIndex
is an index that corresponds to the line index in the fullwave.txt
output file, if such a file was generated. It is the same as a pulse ID, so echos from the same pulse have the same fullwaveIndex
. Use it to look up the exact waveform of specific points in the simulated point cloud. For example, consider the following highlighted lines (entry 107 starts a line earlier on the right side, and only the fullwave data is highlighted. See section ASCII FWF for details.):
Here, the pulse with fullwaveIndex=107
created two returns, and the waveform also shows two seperate peaks (with a number of 0.000
in between). The previous and next pulses only show one return.
The hitObjectId
is the ID of the respective object in the scene. The IDs are starting with ´0´ and corresponding to the order of objects as stored in the scene except for scene parts to which custom IDs were assigned in the scene XML. The IDs are unique for every <part>
tag in the scene XML file. When using the efilepath
parameter, the geometry from each file will receive a unique incremental ID unless a custom ID was supplied. In this case, the geomtries all receive the same ID (see section geometry loaders).
The class
is taken from the primitive material, which is specified through the helios_classification
field in a material MTL file (see page Scene).
Finally, gpsTime
relates the point to the trajectory, if it is exported. It represents the timestamp at which the pulse is sent out in seconds after the beginning of the GPS week (which starts on Sunday, 0:00 A.M.) + 300,000. The simulation start date is taken from the system clock and thereafter continued using the simulation time (i.e. rotation/flight speeds from the XML files) rather than real time.
With the parameter --lasOutput
, point clouds can be written to ASPRS LAS 1.4 format (Point Data Record Format 6; .las) instead of ASCII. echo_width
, fullwaveIndex
and hitObjectId
are stored as extra bytes, the other fields in the respective fields of the LAS Format.
The coordinates of the point cloud are shifted to the lower-left corner of the bounding box of the scene, and a scale is applied. By default, the scale is 0.0001
(corresponding to 1/10 mm resolution), but can be changed by using the --lasScale
argument on the command line.
If a trajectoryTimeInterval_s
attribute is defined in the survey XML file within the scannerSettings
tag, the trajectory will be written in the format
X Y Z gpsTime roll pitch yaw
gpsTime
is given in seconds after the beginning of GPS week + 300,000 and corresponds to the gpsTime
in the point cloud output. The angles around the aircraft principal axes are provided in degrees, the position and attitude is related to the origin and axes of the platform
in the global reference frame, and does not necessarily show the position and orientation of the scanner. This position/orientation may be changed in the survey or platform XML by supplying lever arm and misalignment as mounting parameters (see Platforms)
Full waveform (FWF) output can be activated using the option --writeWaveform
. The output will be one file per leg. Every line corresponds to one outgoing pulse. Only pulses that returned an echo are recorded. The link to the point output is established via the fullwaveIndex
. The FWF output format is:
fullwaveIndex beamOrigin.x beamOrigin.y beamOrigin.z beamDir.x beamDir.y beamDir.z minTime maxTime gpsTime FWFIntensities
Here, the beamOrigin
is in the global coordinate system, and represents (in contrast to the position given in the trajectory) the position of the laser scanner reference center (i.e. the beam origin). The beamDir
is a unit vector showing the axis of the beam cone.
minTime
and maxTime
are times after beam transmission in nanoseconds for the first and last record in the FWFIntensities
vector, respectively.
gpsTime
is the same as for the point cloud and trajectory files, and is added for completeness.
The FWFIntensities
is a vector of (sampled) amplitudes. For details on the simulation, see fullwave. Every value represents a bin of size binSize_ns
(set in the survey XML <FWFSettings [...]/>
tag) in nanoseconds. These bins are summed up amplitude values from the individual subrays.
For example, the waveform from the highlighted example above (fullwaveIndex=107
) looks like this:
The output files can be compressed using the parameter --zipOutput
. This generates bin
compressed ASCII files for both the point clouds and the waveform information. If used in combination with --lasOutput
, the point clouds will be exported in LAZ format. Trajectory information is not compressed.
HELIOS++
outputs can be unzipped with the --unzip
parameter:
helios --unzip [input_path] [output_path]
For example:
helios --unzip my_pointcloud.bin my_pointcloud.xyz
Unzipping also works for HELIOS++
-created LAZ files.
By default, logging will be output to the console and only information and errors are displayed. However, there is also the option to output a log file:
-
--logFile
: Logging will be output to a file "helios.log" in the current directory, not only to standard output. -
--logFileOnly
: Logging will be output ONLY to a file.
The content to be reported can be controlled by the following parameters when calling a survey:
-
--silent
: Disable logging output. -
-q
orquiet
: Only errors are reported. -
-vt
: Errors and time are reported. -
-v
: Errors, information and warnings are reported. -
-v2
: All messages are reported.
By default, only information and errors are reported.