Skip to content

Conversation

@tkchouaki
Copy link
Collaborator

This PR relates to the FeederDrt feature present in eqasim-java.

Previously, the selection of access and egress transit stops in an intermodal route betweeen PT and DRT included both identifying the possible stops and the selection criteria.

In this PR, we distinguish between the two by having two separate interfaces. Now, the FeederDrtRouting module takes both an AccessEgressStopSearch and an AccessEgressStopSelector. The former is in charge of identifying the possible transit stops, and the second for selecting among them.

Now, we have three implementations of AccessEgressStopSearch:

  • The first is TransitStopByModeAccessEgressStopSearch, allowing to filter transit stops by the modes of the transit routes they are located on. Also permits to filter only the ones that are inside a certain area given a shapefile.
  • The second is TransitStopByIdAccessEgressStopSearch, allowing to directly specify transit stops by their IDs
  • The third is CompositeAccessEgressStopSearch. This one allows to combine multiple AccessEgressStopSearch strategies into one. This allows to easily build simulations where we allow intermodality at all train stops and a few bus stops determined by their IDs. Or allowing all train stops of a given city, plus all subway stops of another city...

Now, The XML looks like this:

<module name="multiModeFeederDrt" >
    <!-- Whether or not to perform the analysis for feeder drt services. If set to true, will follow the analysis interval specified in the configuration of the eqasim module -->
    <param name="performAnalysis" value="true" />
    <parameterset type="feederDrt" >
        <!-- The name of the drt mode to use for access and egress segments -->
        <param name="accessEgressModeName" value="drt_for_feeder_b" />
        <!-- Possible values: CLOSEST -->
        <param name="accessEgressStopSelection" value="CLOSEST" />
        <!-- Mode which will be handled by PassengerEngine and VrpOptimizer (passengers'/customers' perspective) -->
        <param name="mode" value="feeder_b" />
        <!-- The name by which the pt mode is known to the agents. Most usually pt -->
        <param name="ptModeName" value="pt" />
        <!-- A regex that if matches with the from facility id (resp to facility id) will result in an access (resp egress) drt leg not being constructed. Leave empty to consider access and egress segments at all times -->
        <param name="skipAccessAndEgressAtFacilities" value="^outside*+" />
        <parameterset type="CompositeAccessEgressStopSearchParameterSet" >
            <parameterset type="TransitStopByIdAccessEgressStopSearch" >
                <param name="ids" value="IDFM:482345.link:305887,IDFM:31170.link:618272,IDFM:462597.link:511974" />
            </parameterset>
            <parameterset type="TransitStopByModeAccessEgressStopSearch" >
                <!-- Comma separated list of PT transit modes (rail, bus...) where intermodality can happen, leave empty to allow intermodality everywhere -->
                <param name="accessEgressTransitStopModes" value="rail,tram,subway" />
            </parameterset>
        </parameterset>
    </parameterset>
    <parameterset type="feederDrt" >
        <param name="accessEgressModeName" value="drt_for_feeder_a" />
        <param name="accessEgressStopSelection" value="CLOSEST" />
        <param name="mode" value="feeder_a" />
        <param name="ptModeName" value="pt" />
        <param name="skipAccessAndEgressAtFacilities" value="^outside*+" />
        <parameterset type="CompositeAccessEgressStopSearchParameterSet" >
            <parameterset type="TransitStopByIdAccessEgressStopSearch" >
                <param name="ids" value="IDFM:482345.link:305887,IDFM:31170.link:618272,IDFM:462597.link:511974" />
            </parameterset>
            <parameterset type="TransitStopByModeAccessEgressStopSearch" >
                <param name="accessEgressTransitStopModes" value="rail,tram,subway" />
            </parameterset>
        </parameterset>
    </parameterset>
</module>

The documentation entry for this functionality has been updated according to the changes introduced by this PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants