Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Our products have been updated with the releases associated to this Sprint 103:

  • Ara on

  • Chouette Convert on

New features for Chouette will be released with Sprint 104

Chouette

These new features for Chouette will be released with Sprint 104

Create Dataset on NeTEx import

When the user imports a NeTEx file, Chouette creates a Dataset according defined lines and overall period defined by NeTEx DayTypeAssignment and OperatingPeriod resources.

With this example:

<Line id="1">
  <Name>Line 1</Name>
</Line>
<Line id="2">
  <Name>Line 2</Name>
</Line>          

<DayTypeAssignment id="date-included" version="any" order="0">
  <Date>2030-01-01</Date>
  <isAvailable>true</isAvailable>
</DayTypeAssignment>

<OperatingPeriod id="period" version="any">
  <FromDate>2030-05-05T00:00:00+0200</FromDate>
  <ToDate>2030-05-10T00:00:00+0200</ToDate>
</OperatingPeriod>

Chouette creates a Dataset on Line 1 and Line 2 with a period from 2030-01-01 to 2030-05-10.

Create TimeTables from NeTEx resources

The NeTEx import creates a Chouette TimeTable for each DayType according to associated DayTypeAssignment and OperatingPeriod resources.

With this example:

<DayType id="daytype-1">
  <Name>Sample</Name>
  <properties>
    <PropertyOfDay>
      <DaysOfWeek>Tuesday Friday</DaysOfWeek>
    </PropertyOfDay>
  </properties>
</DayType>

<DayTypeAssignment id="assigment-1">
  <OperatingPeriodRef ref="period-1"/>
  <DayTypeRef ref="daytype-1"/>
</DayTypeAssignment>

<DayTypeAssignment id="assigment-2">
  <Date>2030-01-15</Date>
  <DayTypeRef ref="daytype-1"/>
  <isAvailable>true</isAvailable>
</DayTypeAssignment>

<OperatingPeriod id="period-1">
  <FromDate>2030-01-01T00:00:00</FromDate>
  <ToDate>2030-01-10T00:00:00</ToDate>
</OperatingPeriod>

Chouette creates a Timetable like this one:

screenshot.png

Create Routes from NeTEx resources

The NeTEx import creates a Chouette Route for each NeTEx Route defined in the NeTEx file:

<Route id="1">
    <Name>Tveita - Solfjellet - Larsbråten - Tveita</Name>
    <LineRef ref="Line:0061"/>
    <DirectionType>outbound</DirectionType>
    <DirectionRef ref="Direction:1" version="any"/>
    <pointsInSequence>
        <PointOnRoute version="1" id="PointOnRoute:0061101001-0" order="1">
            <RoutePointRef ref="RoutePoint:0061101A0A0061101001"/>
        </PointOnRoute>
        <PointOnRoute version="1" id="PointOnRoute:0061101003-2" order="2">
            <RoutePointRef ref="RoutePoint:0061101A2A0061101003"/>
        </PointOnRoute>
        <PointOnRoute id="PointOnRoute:0061101004-3" order="3">
            <RoutePointRef ref="RoutePoint:0061101A3A0061101004"/>
        </PointOnRoute>
        <PointOnRoute id="PointOnRoute:0061101007-6" order="4">
            <RoutePointRef ref="RoutePoint:0061101A6A0061101007"/>
        </PointOnRoute>
    </pointsInSequence>
</Route>

<RoutePoint id="RoutePoint:0061101A0A0061101001">
    <projections>
        <PointProjection id="PointProjection:0061101A0A0061101001">
            <ProjectToPointRef ref="ScheduledStopPoint:0061101001"/>
        </PointProjection>
    </projections>
</RoutePoint>

<Direction version="any" id="Direction:1">
  <Name>Rosny-sous-Bois RER</Name>
</Direction>

The following NeTEx attributes are supported:

  • Route Name,

  • Route DirectionType outbound/inbound

  • Route Direction name

Route PointOnRoutes are optional. The NeTEx import creates automatically the needed Route Stop Points according defined Route PointOnRoutes and related Journey Pattern Stop Points.

Create Journey Patterns from NeTEx resources

The NeTEx import creates a Chouette Journey Pattern for each NeTEx ServiceJourneyPattern (or JourneyPattern) defined in the NeTEx file:

<ServiceJourneyPattern id="1" version="any">
  <Name>to Bullfrog</Name>
  <RouteRef ref="1"/>
  <DestinationDisplayRef ref="destinationdisplay-1"/>
  <pointsInSequence>
      <StopPointInJourneyPattern id="StopPointInJourneyPattern:0061101002" order="1">
          <ScheduledStopPointRef ref="ScheduledStopPoint:0061101001"/>
      </StopPointInJourneyPattern>
      <!-- ... -->
      <StopPointInJourneyPattern id="StopPointInJourneyPattern:0061101002" order="12">
          <ScheduledStopPointRef ref="ScheduledStopPoint:0061101002"/>
      </StopPointInJourneyPattern>
  </pointsInSequence>
</ServiceJourneyPattern>
                                                                                                                                                
<DestinationDisplay id="destinationdisplay-1">                                                                                                                                                               
  <FrontText>Destination Sample</FrontText>                                                                                                                                                                  
</DestinationDisplay>                              

The following NeTEx attributes are supported:

  • Journey Pattern Name,

  • StopPointInJourneyPattern resources which define Journey Pattern stop points,

  • a DestinationDisplay FronText (used a Chouette Journey Pattern destination name)

Create Vehicle Journeys from NeTEx resources

The NeTEx import creates a Chouette Vehicle Journeys for each NeTEx ServiceJourney defined in the NeTEx file:

<ServiceJourney id="AAMV1">
  <Name>AAMV1</Name>
  <dayTypes>
    <DayTypeRef ref="daytype-1"/>
  </dayTypes>
  <JourneyPatternRef ref="journeypattern-1"/>
  <passingTimes>
    <TimetabledPassingTime>
      <DepartureTime>23:50:00</DepartureTime>
    </TimetabledPassingTime>
    <TimetabledPassingTime>
      <ArrivalTime>23:59:00</ArrivalTime>
      <ArrivalDayOffset>0</ArrivalDayOffset>
      <DepartureTime>00:01:00</DepartureTime>
      <DepartureDayOffset>1</DepartureDayOffset>
    </TimetabledPassingTime>    
    <TimetabledPassingTime>
      <ArrivalTime>00:15:00</ArrivalTime>
      <ArrivalDayOffset>1</ArrivalDayOffset>
    </TimetabledPassingTime>
  </passingTimes>
</ServiceJourney>

For the moment, StopPointInJourneyPatternRef attributes are ignored.

Calendar templates as Workbench resources

The user can manage https://enroute.atlassian.net/wiki/spaces/PUBLIC/pages/1890123791/Timetables#Calendar-templates into each Workbench resources:

image-20240114-093633.png

Timetables can be created/updated in the Workbench Datasets using these Calendar templates.

Ara

Collect using SIRI Situation Exchange requests

When the user adds SIRI SituationExchange Request Collector (siri-situation-exchange-request-collector) to a Partner, Ara collects Situations by using SIRI Situation Exchange requests.

In this setup, Ara performs periodically a request for each known Line and Stop Area with the flag CollectGeneralMessages.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <ws:GetSituationExchange xmlns:siri="http://www.siri.org.uk/siri" xmlns:ws="http://wsdl.siri.org.uk">
      <ServiceRequestInfo>
        <siri:RequestTimestamp>2030-01-01T12:00:00.000Z</siri:RequestTimestamp>
        <siri:RequestorRef>siri-client</siri:RequestorRef>
      </ServiceRequestInfo>

      <Request>
        <siri:RequestTimestamp>2030-01-01T12:00:00.000Z</siri:RequestTimestamp>
        <siri:MessageIdentifier>request-33170d7c-35e3-11ee-8a32-7f95f59ec38f</siri:MessageIdentifier>

        <siri:LineRef>52</siri:LineRef>
      </Request>
      <RequestExtension/>
    </ws:GetSituationExchange>
  </soap:Body>
</soap:Envelope>

SIRI Situation Exchange request example

Simplify General Message ↔︎ Situation mapping for MessageText

We’ve simplified the mapping between GM Mesage Type and Message Text and Situation associated attributes. The previous mapping (which includes the text length in the criteria) was changing the message type between a collected and a broadcasted GM. This behavior isn’t expected by most of GM consumers.

MessageType

MessageText

When a Situation is created from a GM:

According to MessageType, MessageText is stored as

  • shortMessage: Summary

  • textOnly/formattedText/HTML/RTF/longMessage: Description

Any HTML tag is sanitized (= removed)

When a GM is created from a Situation:

  • a shortMessage Message is created with Summary

  • a textOnly Message is created with Description

The Mapping between Situation and General Message "France" document has been updated accordingly.

Support SIRI raw in Lines Discovery collector

When the user defines a Partner with the setting siri.envelope with the value raw, the Lines Discovery Request collector sends a request with this format:

<?xml version="1.0" encoding="UTF-8"?>
<Siri xmlns="http://www.siri.org.uk/siri" version="2.0">
  <LinesRequest>
    <RequestTimestamp>2030-01-01T10:00:00-05:00</RequestTimestamp>
    <RequestorRef>Ara</RequestorRef>
    <MessageIdentifier>5d52c588-9810-11ee-bd68-b7f91294f877</MessageIdentifier>
  </LinesRequest>
</Siri>

and processes this kind of response:

<?xml version="1.0" encoding="utf-8"?>
<Siri xmlns="http://www.siri.org.uk/siri">
  <LinesDelivery version="2.0">
    <ResponseTimestamp>2004-12-17T09:30:47-05:00</ResponseTimestamp>
    <Status>true</Status>
    <AnnotatedLineRef>
      <LineRef>Line564</LineRef>
      <LineName xml:lang="EN">564</LineName>
      <Monitored>true</Monitored>
    </AnnotatedLineRef>
    <AnnotatedLineRef>
      <LineRef>LineOther</LineRef>
      <LineName>Other</LineName>
      <Monitored>true</Monitored>
    </AnnotatedLineRef>
  </LinesDelivery>
</Siri>

Support SIRI raw in Estimated Timetable Subscription collector

When the user defines a Partner with the setting siri.envelope with the value raw, the Estimated Timetable Subscription collector sends a subscription request with this format:

<?xml version="1.0" encoding="UTF-8"?>
<Siri xmlns="http://www.siri.org.uk/siri">
  <SubscriptionRequest>
    <RequestTimestamp>2030-01-01T10:00:00-05:00</RequestTimestamp>
    <RequestorRef>Ara</RequestorRef>

    <EstimatedTimetableSubscriptionRequest>
      <SubscriberRef>Ara</SubscriberRef>
      <SubscriptionIdentifier>000765</SubscriptionIdentifier>
      <InitialTerminationTime>2030-01-02T10:00:00-05:00</InitialTerminationTime>

      <EstimatedTimetableRequest>
        <RequestTimestamp>2030-01-01T10:00:00-05:00</RequestTimestamp>
        <Lines>
          <LineDirection>
            <LineRef>123</LineRef>
          </LineDirection>
        </Lines>
      </EstimatedTimetableRequest>
    </EstimatedTimetableSubscriptionRequest>
  </SubscriptionRequest>
</Siri>

And it processes this kind of notification payload:

<?xml version='1.0' encoding='utf-8'?>
<Siri xmlns='http://www.siri.org.uk/siri'>
 <ServiceDelivery>
   <ResponseTimestamp>2004-12-17T09:30:46-05:00</ResponseTimestamp>
   <ProducerRef>test</ProducerRef>
   <ResponseMessageIdentifier>6ba7b814-9dad-11d1-8-00c04fd430c8</ResponseMessageIdentifier>

   <EstimatedTimetableDelivery>
     <ResponseTimestamp>2030-01-01T10:00:00-05:00</ResponseTimestamp>
     <SubscriberRef>subscriber</SubscriberRef>
     <SubscriptionRef>subscription1</SubscriptionRef>
     <Status>true</Status>
     <EstimatedJourneyVersionFrame>
       <RecordedAtTime>2030-01-01T10:00:00-05:00</RecordedAtTime>
       <EstimatedVehicleJourney>
         <!-- ... -->
       </EstimatedVehicleJourney>
       <EstimatedVehicleJourney>
         <!-- ... -->
       </EstimatedVehicleJourney>     
     </EstimatedJourneyVersionFrame>
   </EstimatedTimetableDelivery>

   <EstimatedTimetableDelivery>
     <ResponseTimestamp>2030-01-01T10:00:00-05:00</ResponseTimestamp>
     <SubscriberRef>subscriber</SubscriberRef>
     <SubscriptionRef>subscription2</SubscriptionRef>
     <Status>true</Status>
     <EstimatedJourneyVersionFrame>
       <RecordedAtTime>2030-01-01T10:00:00-05:00</RecordedAtTime>
       <EstimatedVehicleJourney>
         <!-- ... -->
       </EstimatedVehicleJourney>
     </EstimatedJourneyVersionFrame>
   </EstimatedTimetableDelivery>
 </ServiceDelivery>
</Siri>

Support SIRI raw in Vehicle Monitoring Subscription collector

When the user defines a Partner with the setting siri.envelope with the value raw, the Vehicle Monitoring Subscription collector sends a subscription request with this format:

<?xml version="1.0" encoding="UTF-8"?>
<Siri xmlns="http://www.siri.org.uk/siri">
  <SubscriptionRequest>
    <RequestTimestamp>2030-01-01T10:00:00-05:00</RequestTimestamp>
    <RequestorRef>Ara</RequestorRef>

    <VehicleMonitoringSubscriptionRequest>
      <SubscriberRef>Ara</SubscriberRef>
      <SubscriptionIdentifier>000765</SubscriptionIdentifier>
      <InitialTerminationTime>2030-01-02T10:00:00-05:00</InitialTerminationTime>

      <VehicleMonitoringRequest>
        <RequestTimestamp>2030-01-01T10:00:00-05:00</RequestTimestamp>
        <Lines>
          <LineDirection>
            <LineRef>123</LineRef>
          </LineDirection>
        </Lines>
      </VehicleMonitoringRequest>
    </VehicleMonitoringSubscriptionRequest>
  </SubscriptionRequest>
</Siri>

And it processes this kind of notification payload:

<?xml version='1.0' encoding='utf-8'?>
<Siri xmlns='http://www.siri.org.uk/siri'>
  <ServiceDelivery>
    <ResponseTimestamp>2017-01-01T12:00:20.000Z</ResponseTimestamp>
    <ProducerRef>NINOXE:default</ProducerRef>
    <ResponseMessageIdentifier>RATPDev:ResponseMessage::6ba7b814-9dad-11d1-9-00c04fd430c8:LOC</ResponseMessageIdentifier>
    <VehicleMonitoringDelivery>
      <ResponseTimestamp>2022-06-25T15:08:14.940+02:00</ResponseTimestamp>
      <SubscriberRef>subscriber</SubscriberRef>
      <SubscriptionRef>6ba7b814-9dad-11d1-4-00c04fd430c8</SubscriptionRef>
      <Status>true</Status>
      <VehicleActivity>
        <RecordedAtTime>2022-06-25T15:08:14.928+02:00</RecordedAtTime>
        <ItemIdentifier>108</ItemIdentifier>
        <ValidUntilTime>2022-06-25T16:08:14.928+02:00</ValidUntilTime>
        <VehicleMonitoringRef>108</VehicleMonitoringRef>
        <!-- ... -->
      </VehicleActivity>
      <VehicleActivity>
        <!-- ... -->
      </VehicleActivity>
    </VehicleMonitoringDelivery>

    <VehicleMonitoringDelivery>
      <!-- ... -->
    </VehicleMonitoringDelivery>
  </ServiceDelivery>
</Siri>

Support OAuth Scope

The user can use the setting remote_authentication.oauth.scopes to define the https://oauth.net/2/scope/ used by the SIRI Client for this Partner to perform requests.

Chouette Convert

NeTEx Scheduled Stop Points are associated to a Line

The GTFS to NeTEx Convertion creates Netex::ScheduledStopPoint with an associated Line. Indeed several profiles (IDFM Profiles, French Profiles, etc) expect that a Scheduled Stop Point is associated to a Line.

This Scheduled Stop Point line specific constraint requires to duplicate all Scheduled Stop Points to have a NeTEx resource for each line / GTFS Route id.

  • No labels