POST fromPeriod / toPeriod as UTC ISO-8601. Each fix can include AIS destination and etaUtc when stored in Influx; they appear in map popups.
CO₂ calculation uses the same path-based emission dialog as voyages (hull and type from Neo4j by IMO); at least two position fixes are required. Actual fuel sends period from this panel’s From/To and source position_history_fuel_capture.
The last port call is loaded as the sea-route origin. Pick a destination port below. If the API returns several routes, a second dialog lists distance and ETA for each; use Show on map to draw one option. When the API returns duration_hours for a route, ETA for that row (and on the map for that option) uses that value; otherwise ETA falls back to straight-line distance from the vessel’s current AIS position to the destination, with speed from the profile (or 15 kn if missing or < 1 kn). For the same vessel, your last port and route results are kept until you use New route planning.
The last port call is the sea-route origin. The request uses GET /api/route/eta (same path as /api/route, plus lastLatitude / lastLongitude for along-route ETAs). Pick a destination below. SOG below 1 kn uses 2 kn for the API speed parameter. Results and map use routeEtas when returned; otherwise ETA falls back like standard route planning.
The sea-route origin is the vessel’s current AIS position (lastLat / lastLon on the profile). Pick a destination port. The request uses GET /api/route with olat and olon at that position (plus destination, units=naut, and speed from the latest fix). Distance is along the returned path; ETA in the results dialog uses duration_hours when present, otherwise straight-line from current AIS to the destination.
| LOCODE | Name | Country | Lat | Lon |
|---|
| Route | Distance (NM) | Remaining hours | ETA (local) |
|---|
Voyages are cached per vessel until you refresh or reload the page. When the vessel has left the latest port, the first row is the open leg with To / Arrival on-going and positions to the latest AIS fix. Click a row or Show on Map to draw that leg; hold Ctrl or Cmd while clicking to add or remove legs so several voyages appear at once (each leg uses a different color). Analysis opens AIS heuristics (loiter vs underway segments), Export CSV downloads all Influx positions for that leg, and CO₂ calculation uses hull dimensions and vessel type from the Neo4j vessel node by IMO. For actual fuel, period uses this row’s Departed/Arrival and source voyage_fuel_capture.
| Voyage | From | To | Departed | Arrival | Duration |
|---|
Docked on the left so the map stays visible. Heuristic only (AIS position + reported SOG). Not proof of STS, bunkering, or waiting.
Click a row to zoom the main map to that segment (draws segments first if needed).
| # | Kind | Start (UTC) | End (UTC) | Hours | Mean SOG (kn) | Radius (NM) | Points |
|---|
Listed when time between two consecutive fixes exceeds the server VoyageAnalysis:MinimumGapMinutes (default 60). Click a row to zoom (red dashed).
| # | Start (UTC) | End (UTC) | Minutes |
|---|
Path preview (this dialog only)
Use one fuel for the whole voyage or a fuel per part (each segment V₀→V₁, V₁→V₂, …). For a voyage leg, LRIT internal waters (blue) and territorial sea (orange) from departure/arrival ports are drawn on this map when DDP has them; per-part fuel is filled from vertex pairs vs those zones (MGO / LFO / HFO). Hover or focus a part row to highlight it on the map. Hull data comes from Neo4j; options match CARBON_FACTOR_FUEL_TYPES.
Predict uses hull from Neo4j. For actual data: either one total + fuel (below) or noon-style rows — one voyage total per fuel type (e.g. HFO + MGO). If any noon row has a positive amount, actualFuelsByType is sent and single-fuel fields are ignored.
Noon report — add a row per fuel with voyage total (t). Merged by fuel code; each total is distance-allocated like the API.
Or single total (only if no noon rows above):
| From | To | Distance (NM) | Fuel (t) | Fuel / split | CF | CO₂ (t CO₂) |
|---|
Countries are extracted from the background port list cache. Select one to plot all matching ports on the map.