models.trip module

Trip model for boat routes.

class models.trip.Trip(csv_path: str)[source]

Bases: object

Boat trip with waypoints loaded from CSV.

route_name

Route name (from CSV filename stem).

points

List of TripPoint waypoints.

Type:

List[models.trip.TripPoint]

duration

Total trip duration in seconds.

estimate_energy_required(boat_k_factor: float) float[source]

Estimate total energy (kWh) for the full trip using cube-law power per segment.

Parameters:

boat_k_factor – Boat k-factor (motor_power / range_speed^3).

Returns:

Total energy in kWh.

get_energy_between(start_elapsed_seconds: float, end_elapsed_seconds: float, boat_k_factor: float) float[source]

Energy (kWh) consumed in [start_elapsed, end_elapsed] using same segment integration as estimate_energy_required.

Parameters:
  • start_elapsed_seconds – Window start (s from trip start).

  • end_elapsed_seconds – Window end (s from trip start).

  • boat_k_factor – Boat k-factor (motor_power / range_speed^3).

Returns:

Energy in kWh for the window.

get_point_at_elapsed_time(elapsed_seconds: float) TripPoint | None[source]

Return the waypoint closest to the given elapsed time from trip start.

Parameters:

elapsed_seconds – Seconds since trip start.

Returns:

Closest TripPoint, or None if elapsed_seconds exceeds trip duration.

points: List[TripPoint]
class models.trip.TripPoint(timestamp: datetime, point_type: str, speed: float, heading: float, latitude: float, longitude: float)[source]

Bases: object

One waypoint in a trip route.

timestamp

Time at this point.

Type:

datetime.datetime

point_type

Type label (e.g. Static, Dock, Terrestrial, Interpolated).

Type:

str

speed

Speed in knots.

Type:

float

heading

Heading in degrees.

Type:

float

latitude

Latitude.

Type:

float

longitude

Longitude.

Type:

float

heading: float
latitude: float
longitude: float
point_type: str
speed: float
timestamp: datetime