Samtrafiken Noptis to GTFS-RT mapping

This page describes how Samtrafiken maps Noptis data (see Home Page | NOPTIS) to GTFS-realtime data. For a complete specification of the GTFS-realtime format, see http://gtfs.org/reference/realtime/v1/.

Message: FeedHeader

GTFS-RT

Value

GTFS-RT

Value

header.gtfs_realtime_version

“2.0”

header.incrementality

FULL_DATASET

header.timestamp

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

Message: FeedEntity

GTFS-RT

NOPTIS

GTFS-RT

NOPTIS

id

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

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-RT

NOPTIS

Comment

GTFS-RT

NOPTIS

Comment

trip.trip_id

VehicleJourney.Id

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

trip.direction_id

DirectionOfLine.DirectionCode → direction_id

  • EVEN → 0

  • ODD → 1

trip.start_time

DatedVehicleJourney.TimetabledStartDateTime

Is only included if a trip is unscheduled.

trip.start_date

DatedVehicleJourney.TimetabledStartDateTime

Is only included if a trip is unscheduled.

trip.schedule_relationship

If vehicle journey exists, then SCHEDULED, else ADDED.

 

position.latitude

Position.Northing

 

position.longitude

Position.Easting

 

position.bearing

Position.Heading

 

position.speed

Position.Speed

 

vehicle.id

Position.Vehicle

 

timestamp

Position.Timestamp

 

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-RT

NOPTIS

GTFS-RT

NOPTIS

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