I am building a multimodal network with 4 modes (Walking, bike, bus and metro) using ArcGIS Desktop 10.5.

Now i would like to use costs in $ as an impedance for the best (thus cheapest) route. However, I have a metro that uses a fare/km but a bus system with a flat rate. This means u pay for example 2$ to get onto the bus system and from then on can go wherever you want to go within the system. Now how do i model this in a correct way, without charging the fee multiple times for each transfer?


I finally solved this issue with the use of the transfer edges between the walking infrastructure and the Public Transport System.

When adding the half of the fee in the on board transfer and half in the off board transfer, the total trip will take into account the whole fee.

It is also possible to use one-way costs, but it would require an extra step, even though this might be more pure.


I'd do all of that work in the output attribute table with field calculator.

For the bus, you already know it's a flat fee so no matter the time/distance, it's $2, right? All your output would be 2, no matter what. Each line, no matter the length, = $2.

For the metro, you'd take your output paths' distances in the table, and use the field calculator in a new field to multiply the total accumulated km * the fare and voila you have your total cost.

  • I think the question is for the requests done through the analysis, how to manage the cost per segment. I think it should be via some code, which I haven't the slightest clue as how to write but instead of each segment having a fixed cost (fare/km, so calculated through these values) having a condition mentioning something in the lines of "If bus segment was taken, +2 but ignore all the others, else other calculations. Your suggestion would work if only 1 bus line segment was borrowed, if more were taken, I think the $2 would add up. – Louis May 8 '17 at 19:30
  • with multiple modes, if bus is always $2 then divide 2 by the total # of nodes so with multiple rows in an attribute table they will always sum to $2. with metro, if it's a certain rate per 1 km, then multiply the rate per 1 km * the km distance for each row/segment, and sum. you could code that ahead of time or post-processing. either way you'd need a new field for the output. – rachel.passer May 8 '17 at 19:42
  • 1
    Thank you both a lot for your replies. I finally solved it by creating transfer lines to the bus network at which the flat fee was charged. The first half was charged at the tranfer edge when entering the bus infrastructure, the second half when leaving it. – Rogier May 9 '17 at 21:45
  • @Rogier Please write that up as an answer - it is fine to self-answer (and encouraged) – PolyGeo Jun 1 '17 at 10:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.