Access Links by Transit Mode

I would like to be able to control access link generation for each transit mode separately. I'm not seeing any transit mode setting to filter in the GENERATE command, so I assume it has to be done prior to that step. Short of manually separating transit line data into separate files by mode, is there another way to do this programmatically?

  • Could you provide more information on what you are trying to achieve and why you would like to do this?

  • We want to generate different access links by mode. For example, for CRT and LRT we want to have walk and drive access and egress, but for local bus we want to have walk and drive access but only walk egress, no drive egress.

  • Hi Bill.

    It is possible to generate different non-transit legs by separate modes and to control their generation by transit sub-mode. 

    Indeed, within the DataPrep phase, the keywords of the GENERATE control statement should be actually specified by transit MODE indeed. Please look at the list of keywords in the CUBE Voyager Reference Guide (Public Transport Program > Control statements > GENERATE).

    When you find the V under the keyword criteria column this means that the keyword is vectored, i.e., multiple values may be entered. An index may be appended to the keyword to indicate the loading point in the keyword array. An index should not be appended if a number does not follow V, and any index may not exceed the value of the number.

    In particular, for example, MAXCOST and MAXNTLEGS are "vector keywords" with index and dimension equal to the number of transit modes. Hence, for example, if we specify the below:

    GENERATE,
      NTLEGMODE = 100,
      COST = li.T0,
      MAXNTLEGS[1] = 1,
      MAXNTLEGS[2] = 1,
      MAXCOST[1] = 10,
      MAXCOST[2] = 0

    We are not generating NT-Legs for the transit mode with number 2, because MAXCOST is 0 and the program generates a leg to a TONODE serviced by a transit mode only when the cost to that node is less than the MAXCOST for that transit mode.

    You can also use the compact notation like MAXNTLEGS=6*5, 4*2, which uses the "repetition operator" * and apply a MAXNTLEGS of 5 for the first 6 modes, and 2 for the subsequent 4 modes. The repetition operator can be used to enter the same value multiple times for a V keyword. The data are loaded into successive locations in the vector.  

    Many other keywords can be used to further customize the generation of NT-legs, particularly if using different node ranges by PT sub-mode. Also, using different NT-legs modes allows to differentiate the access and egress by user-class by specifying different factor files. 

    That said, it is important to notice that care must be taken in case of stop nodes for overlapping transit modes. Indeed, the keywords will be applied by transit mode, therefore you might find an NT-leg generated to a stop node where you have overlapping mode 1 and 2, even if you specified MAXCOST=0 for the second mode (in the example above). To avoid this, it is necessary to use different nodes by transit sub-mode or different line files with separate PT programs (if no crowding is used). 

    Answer Verified By: Filippo Contiero 

  • Thank you! This is what I was looking for. And thanks for the thorough explanation. This is the first time I'm learning about vectored keywords and repetition operators.