ThinkGeo.com    |     Documentation    |     Premium Support

Routing Performance & Speed

1) What is the impact on speed of routing to integrate road closures?

2) Can the cost of street segments be modified to take into account different speeds for a road during different times of the day without having to rebuild the route network?



Lyle, 
  
   For the first question the speed impact can be calculated quite easily and is measurable.  Every time we want to get the next segment to test we raise an event before going to the Rtg file.  If you hook to that event you will see it gets raised.  To facilitate road closures you will need to cache in memory what roads are closed and have that in some kind of collection.  On each event you check in your collection if it is looking for the road that is closed.  If you find it does then you ignore it and the routing system will think the road does not exist.  The key to the speed is to as quickly as possible be able to search your collection.  I suggest not using a for-each type of collection.  Maybe a dictionary or better yet a sorted array that you can do a simple binary search into.  This way you start at the middle and in just a few checks you can find if your road is in the list.  The faster you make the search the less performance will be impacted.  The great part is that this is measurable.  Just get the event, look for one of the roads and test the speed.  I think if you use the sorted array the impact would be miniscule. 
  
 For the second question it is very much the same as the first.  You can catch the event and have your sorted array linked to a dictionary or list of variable such as road speed etc…  At runtime you can monkey around with the numbers all you want.  Since more roads will not match your short list you don’t need to worry about slowing things down.  Check out the video as it shows a few samples that manipulate the rerouting network in real time.  Of course the samples are not built with the fastest code for it as that would affect the readability of the sample.  We can help you out on a sample to show you the fastest way. 
  
 David 


Thanks for the response David 
  
 I ahve a few more questions: 
  
 Can the cost of the street segments be updated directly in the route network file instead of updating on events?  Is there an API to update the network file or is it an open format so that the file can be updated directly? 


Lyle, 
  
 Now there are no APIs to update the network index file directly, that’s a good idea though and we have added it to our list and will add this feature maybe in the next version. Thanks for the suggestion and any more question please let me know.  
  
 Ben