Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This page describes how Samtrafiken maps Noptis data (see https://www.noptis.com/) to GTFS-realtime data. For a complete specification of the GTFS-realtime format, please see http://gtfs.org/reference/realtime/v1/.

Header

...

Message: FeedHeader

GTFS-

R

RT

Value

header.gtfs_realtime_version

“2.0”

header.incrementality

FULL_DATASET

header.timestamp

UTC time in seconds of file creation. Example: 1611582680.

Alert

...

Message: FeedEntity

GTFS-

R

RT

NOPTIS

id

DeviationMessageVersion.Id

alert.active_period.start

DeviationMessageVersion.PublishFromDateTime

alert.active_period.end

DeviationMessageVersion.PublishUpToDateTime

alert.header_text.translation.text

DeviationMessage.Content (UsageTypeShortName=HEADER)
OR
DeviationMessageVersion.PublicNote

alert.description_text.translation.text

DeviationMessage.Content (UsageTypeShortName=DETAILS)
OR
DeviationMessageVersion.PublicNote

alert.cause

UNKNOWN_CAUSE
OR
DeviationReasonStandardCategoryCode → alert.cause

  • MEDICALMEDICAL_EMERGENCY

  • POLICEDECISIONPOLICE_ACTIVITY

  • ROADWORKCONSTRUCTION

  • MAINTENANCEMAINTENANCE

  • WEATHERWEATHER

  • ACCIDENTACCIDENT

  • STRIKESTRIKE

  • VEHICLEBREAKDOWN, TECHNICALFAILURE TECHNICAL_PROBLEM

  • ELSE OTHER_CAUSE

alert.informed_entity.route_id

Line.Gid

alert.informed_entity.stop_id

StopPoint.Gid
OR
StopArea.Gid

alert.informed_entity.agency_id

TransportAuhtority.Id

alert.informed_entity.trip.trip_id

VehicleJourney.Id

alert.informed_entity.trip.schedule_relationship

If a vehicle journey exists, then SCHEDULED, else field is not included.

Vehicle position

...

If entity contains field trip_update, then:

  • DatedVehicleJourney.Id

If entity contains field vehicle, then:

  • Position.Nr (where Position refers to a POSROI message)

If entity contains field alert, then:

  • DeviationMessageVersion.Id

trip_update

See section “Message: TripUpdate”.

vehicle

See section “Message: VehiclePosition”.

alert

See section “Message: Alert”.

Message: TripUpdate

File: TripUpdates.pb

When trip updates are generated, stop time updates with departure or arrival times that are considered too old are excluded. A departure/arrival is considered too old if the vehicle left the stop 10 minutes ago.

GTFS-RT

NOPTIS

trip.trip_id

VehicleJourney.Id

trip.route_id

Line.Gid

trip.direction_id

DirectionOfLine.DirectionCode → direction_id

  • EVEN → 0

  • ODD → 1

trip.start_time

DatedVehicleJourney.TimetabledStartDateTime

trip.start_date

DatedVehicleJourney.TimetabledStartDateTime

trip.schedule_relationship

If a DatedVehicleJourney.VehicleJourneyState exists and is canceled, then set to CANCELED.
If a vehicle journey exists then set to SCHEDULED, else ADDED.

stop_time_update.stop_id

StopPoint.Gid

stop_time_update.stop_sequence

Departure.JourneyPatternSequenceNumber
OR
Arrival.JourneyPatternSequenceNumber

stop_time_update.arrival.delay

Based on predicted arrival time and scheduled arrival time

stop_time_update.arrival.time

Arrival.ObservedDateTime or Arrival.TargetDateTime
OR
if arrival is after departure (unless last stop), then:
Departure.ObservedDateTime or Departure.TargetDateTime

stop_time_update.arrival.uncertainty

0 if Arrival.ObservedDateTime is set and is after the used departure time (or is at last stop)

stop_time_update.arrival.schedule_relationship

SKIPPED if Arrival.ArrivalState is set to canceled, else omitted

stop_time_update.departure.delay

Based on predicted departure time and scheduled departure time

stop_time_update.departure.time

Departure.ObservedDateTime or Departure.TargetDateTime
OR
if last stop then:
Arrival.ObservedDateTime or Arrival.TargetDateTime

stop_time_update.departure.uncertainty

0 if Departure.ObservedDateTime is set

stop_time_update.departure.schedule_relationship

SKIPPED if Departure.DepartureState is set to canceled, else omitted

vehicle.id

MonitoredVehicleJourney.IsAssignedToVehicleGid

timestamp

Departure.Timestamp
OR
Arrival.Timestamp

The latest timestamp overall in the list of departures and arrivals in the current trip update

Message VehiclePosition

File: VehiclePositions.pb.

Entity Position in the below table refers to a POSROI message.

GTFS-

R

RT

NOPTIS

id

Position.Nr

vehicle.

Comment

trip.trip_id

VehicleJourney.Id

vehicle.

If a scheduled journey exists, then trip_id is used for identification, else route_id and direction_id is used.

trip.route_id

Line.Gid

vehicle.

trip.direction_id

DirectionOfLine.DirectionCode →

vehicle.trip.

direction_id

  • EVEN 0

  • ODD 1

vehicle.

trip.start_time

DatedVehicleJourney.TimetabledStartDateTime

vehicle.

Is only included if a trip is unscheduled.

trip.start_date

DatedVehicleJourney.TimetabledStartDateTime

vehicle.

Is only included if a trip is unscheduled.

trip.schedule_relationship

If vehicle journey exists, then SCHEDULED, else ADDED.

vehicle.

position.latitude

Position.Northing

vehicle.

position.longitude

Position.Easting

vehicle.

position.bearing

Position.Heading

vehicle.

position.speed

Position.Speed

vehicle.id

Position.Vehicle

timestamp

Position.Timestamp

vehicle.vehicle.id

Position.Vehicle

Trip updates

...

occupancy_status

APCRDA.PassengerLoadReport.OnboardCount for current occupancy
Vehicle.CapacitySeatingsCount and Vehicle.CapacityStandingsCount for capacity

Mapped to the OccupancyStatus enum as described below:
EMPTY = 0 passengers on board
MANY_SEATS_AVAILABLE = More than 50% of seats available
FEW_SEATS_AVAILABLE = Less than 50% but more than 10% of seats available
STANDING_ROOM_ONLY = Less than 10% of seats available
CRUSHED_STANDING_ROOM_ONLY = Less than 20% standing room available
FULL = No standing room available

Message Alert

File: ServiceAlerts.pb.

GTFS-

realtime

RT

NOPTIS

ROI

id

DatedVehicleJourney.Id

trip_update.trip.trip_id

VehicleJourney.Id

trip_update.trip.start_date

DatedVehicleJourney.TimetabledStartDateTime

trip_update.trip.schedule_relationship

If a vehicle journey exists, then SCHEDULED, else ADDED.

vehicle.id

MonitoredVehicleJourney.IsAssignedToVehicleGid

stop_time_update.stop_sequence

stop_time_update.arrival.delay

stop_time_update.arrival.time

stop_time_update.arrival.uncertainty

stop_time_update.departure.delay

stop_time_update.departure.time

stop_time_update.departure.uncertainty

stop_time_update.stop_id

timestamp

active_period.start

DeviationMessageVersion.PublishFromDateTime

active_period.end

DeviationMessageVersion.PublishUpToDateTime

header_text.translation.text

DeviationMessage.Content (UsageTypeShortName=HEADER)
OR
DeviationMessageVersion.PublicNote

description_text.translation.text

DeviationMessage.Content (UsageTypeShortName=DETAILS)
OR
DeviationMessageVersion.PublicNote

cause

UNKNOWN_CAUSE
OR
DeviationReasonStandardCategoryCode → alert.cause

  • MEDICAL → MEDICAL_EMERGENCY

  • POLICEDECISION → POLICE_ACTIVITY

  • ROADWORK → CONSTRUCTION

  • MAINTENANCE → MAINTENANCE

  • WEATHER → WEATHER

  • ACCIDENT → ACCIDENT

  • STRIKE → STRIKE

  • VEHICLEBREAKDOWN, TECHNICALFAILURE → TECHNICAL_PROBLEM

  • ELSE OTHER_CAUSE

informed_entity.route_id

Line.Gid

informed_entity.stop_id

StopPoint.Gid
OR
StopArea.Gid

informed_entity.agency_id

TransportAuthority.Id

informed_entity.trip.trip_id

VehicleJourney.Id

informed_entity.trip.schedule_relationship

If a vehicle journey exists, then SCHEDULED, else field is not included