Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

How do I add transportation schedules to a multimodal network dataset? For example, Bus 1 runs between 08:00 and 16:00, and Bus 2 between 14:00 and 23:00. If a passenger wants to solve for a route starting at 16:30, Bus 1 cannot be included in the result as it is not in service at that time.

After some research, I came across this article about managing a public transit system in GIS using ArcInfo 8 (the article is from 2004). The transit data model is essentially the same as the one that ESRI currently has available, except they added a table called ScheduleTimetable, which contains the bus schedules which are related to routes. This table can't be added to the network dataset though, as file gdb tables can't be stored inside a feature dataset (and therefore can't be used in a network dataset). How would I be able to access the time fields so they can be used as restrictions for the routes?

share|improve this question
Thanks for the link, but I'm not sure if that's exactly what I need. What is the purpose then of setting a Start Time in the Analysis Settings? – Cindy Williams-Jayakumar Oct 25 '12 at 6:14
up vote 1 down vote accepted

According to this post on timetable-based routing on the ArcGIS forums, this is not possible as of yet in Network Analyst.

share|improve this answer

You can create a Custom Evaluator kind this one:

I have personalized this importaing transit data in network dataset creating on the fly:

//distance evaluator
            IEvaluatedNetworkAttribute evaluatedNetworkAttribute = new EvaluatedNetworkAttributeClass();
            INetworkAttribute2 networkAttribute = (INetworkAttribute2)evaluatedNetworkAttribute;
            networkAttribute.Name = "Minutes";
            networkAttribute.UsageType = esriNetworkAttributeUsageType.esriNAUTCost;
            networkAttribute.DataType = esriNetworkAttributeDataType.esriNADTDouble;
            networkAttribute.Units = esriNetworkAttributeUnits.esriNAUMinutes;
            networkAttribute.UseByDefault = true;

INetworkConstantEvaluator netConstantEvaluator = new NetworkConstantEvaluatorClass(); netConstantEvaluator.ConstantValue = 0; evaluatedNetworkAttribute.set_Evaluator(networkSourceEdge, esriNetworkEdgeDirection.esriNEDAlongDigitized, (INetworkEvaluator)netConstantEvaluator); evaluatedNetworkAttribute.set_Evaluator(networkSourceEdge, esriNetworkEdgeDirection.esriNEDAgainstDigitized, (INetworkEvaluator)netConstantEvaluator); DepartureTimeEvaluator.DepartureTimeEvaluator departureTimeEvaluator = new DepartureTimeEvaluator.DepartureTimeEvaluator(); IPropertySet propertySet = new PropertySet(); propertySet.SetProperty(DepartureTimeEvaluator.DepartureTimeEvaluator.PROPNAME_SCHEDULE_PATHGDB, featureDataset.Workspace.PathName); propertySet.SetProperty(DepartureTimeEvaluator.DepartureTimeEvaluator.PROPNAME_SCHEDULE_TABLE, DepartureTimeEvaluator.DepartureTimeEvaluator.DEFAULT_TABLE); propertySet.SetProperty(DepartureTimeEvaluator.DepartureTimeEvaluator.PROPNAME_SOURCEID_FIELDNAME, DepartureTimeEvaluator.DepartureTimeEvaluator.DEFAULT_SOURCEID_FIELDNAME); propertySet.SetProperty(DepartureTimeEvaluator.DepartureTimeEvaluator.PROPNAME_OID_FIELDNAME, DepartureTimeEvaluator.DepartureTimeEvaluator.DEFAULT_OID_FIELDNAME); propertySet.SetProperty(DepartureTimeEvaluator.DepartureTimeEvaluator.PROPNAME_DEPARTURETIMES_FIELDNAME, DepartureTimeEvaluator.DepartureTimeEvaluator.DEFAULT_DEPARTURETIMES_FIELDNAME); departureTimeEvaluator.Data = propertySet; evaluatedNetworkAttribute.set_Evaluator(networkSourceJunction, esriNetworkEdgeDirection.esriNEDNone, departureTimeEvaluator); evaluatedNetworkAttribute.set_DefaultEvaluator(esriNetworkElementType.esriNETEdge, (INetworkEvaluator)netConstantEvaluator); evaluatedNetworkAttribute.set_DefaultEvaluator(esriNetworkElementType.esriNETJunction, (INetworkEvaluator)netConstantEvaluator); IArray attributeArray = new ArrayClass(); attributeArray.Add(evaluatedNetworkAttribute); deNetworkDataset.Attributes = attributeArray;
share|improve this answer

I have recently visited the link that you shared originally - it seems that the discussion continued and now it is possible to incorporate Add GTFS to a Network Dataset - - I am currently attempting to incorporate time tables into a multimodal public transport network myself. So perhaps this could assist.

share|improve this answer
Hey Winston, nice to see you here :) Yes, at the time that option did not exist. I got in contact with Melinda Morang at ESRI, who was developing that tool. By the time it came out, the project I needed it for had already been completed. This definitely seemed like a viable option. If you use this, please post back here? – Cindy Williams-Jayakumar Jun 29 '15 at 5:01

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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