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.