Simulation Output

Format

The Simulation Output is intended to store ship motions during a simulation. As the number of data-points generated can be large, the simulation output is stored in Apache Arrow tables. These store data in a binary format, providing a good compromise between serialization speed and file size.

Data is stored in a single Arrow Table named simulation_output.arrow.

Serialization

The arrow table is serialized to a file using Interprocess Communication (IPC) . The table must be written in the IPC File Format (not IPC Streaming Format).

There exist several libraries in different programming languages (C, C++, C#, Java, JavaScript, Julia, MATLAB, Python, R, Ruby, Rust) which can write data into an IPC file.

Compression

Apache Arrow supports a range of compression formats (SNAPPY, GZIP, BROTLI, LZ4, ZSTD). However, as compression is not available for all implementations (such as JavaScript), it's recommended not to use any compression on the Arrow Table itself, but rather apply DEFLATE compression on the marzip file, if necessary.

Units

Unless otherwise specified, SI and SI-derived units shall be used. When using degrees, absolute bearings shall be used where possible.

Versioning

The version can be specified in the table metadata.

simulation_output.arrow

The following columns have been defined. Additional columns are allowed.

Column Name Mapped Arrow Type Required Unit Description
id UInt32 An id uniquely identifies a ship. This id should correspond to the id used in the traffic situation.
timeStamp1 Timestamp (micro) us Timestamp stored in microseconds ("us"). Use microseconds to avoid casting issues. Time Zone can be omitted or be UTC+00:00.
lat1 Float64 WGS-84 decimal degrees WGS-84 latitude encoded in decimal form.
lon1 Float64 WGS-84 decimal degrees WGS-84 longitude encoded in decimal form.
sog1 Float32 knots Speed over ground in knots.
cog1 Float32 degrees Course over ground (COG) (absolute bearing).
heading1 Float32 degrees Heading of ship's bow (absolute bearing).
rot1 Float32 degrees per second Rate of turn of the ship.
navStatus2 UInt8 AIS Navigational status (1-15).
surgeAcc3 Float32 ms⁻² Vessel Acceleration (surge motion)
swayAcc3 Float32 ms⁻² Vessel Acceleration (sway motion)
heaveAcc3 Float32 ms⁻² Vessel Acceleration (heave motion)
rollAcc3 Float32 rad/s⁻² Vessel Rotational Acceleration (roll)
pitchAcc3 Float32 rad/s⁻² Vessel Rotational Acceleration (pitch)
yawAcc3 Float32 rad/s⁻² Vessel Rotational Acceleration (yaw)

1 Column names originating from ISO 19848:2024.

2 Defined in ITU-R M.1371-5 § 3.1 .

3 Not yet implemented, to be considered later.