Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

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 Oct 25 '12 at 6:14

2 Answers 2

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: http://www.arcgis.com/home/item.html?id=72ef24542857413c8981f2e196f1bb13

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

Your Answer

 
discard

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.