ThinkGeo.com    |     Documentation    |     Premium Support

Diff in distance and strange route?

 


Hi I have two routing problems.
(Using 6.0.0.151)
 
Please see attached sample project. (Including failing unittest)
1.) Button 1 creates a strange route why? 
2.) Button 2 There is a diff in the route length and the distance in zone 1 why?
 
 - Niels
 
 

RoutingTest.zip (354 KB)

 Don't know if it changes anything but my windows locale is set to danish.


(Where , is the decimal separator and . is the thousand separator)


Hope anyone can help :)



Hi Neils,  
  
 I would perhaps try changing your Windows Regional Settings to use ‘English (United States)’ as a quick test.  
 I have see many an issue be caused by the difference in the decimal and thousand seperator.

Hi Ryan. 
 Didn’t solve the problem. :( 
  
 Can you reproduce the problem using the attached sample?

Converted to support ticket

Hello Niels, 
  
 Thanks for your sample, we have recreate that bug and fixed it, please get the newest dlls 6.0.156.0 or 6.0.0.156 tomorrow and have another try. 
  
 Feel free to let us know if you still have problem. 
  
 Regards, 
  
 Gary

Hi Neils,


Thanks for the sample application! I checked it out and have a couple of questions and comments for you.


First the route looks normal for the type of result that you have requested. In your sample you are requested the route as the RoutingResultsType.RouteSegmentsAndFeatures



This will obviously return all the RouteSegments (from the RoutingIndex) and the Features (from the ShapeFile), but most importantly that this returns a Features collection of Features that make up the route. The important distinction here is that the Features are not clipped to match your Start and End points. Instead the entire Feature is provided and thus you have parts of the route that extend past your Start and End points as the Features extend past the Start and End points.


To get the route to start and stop at your Start and End points you might use the GetSingleLineRoute() method off of the RoutingResult object. This will do some clipping for you as shown below. The Red line is the current result of the .Route method and the Yellow line is the result of the GetSingleLineRoute():


 


Your second question is regarding the Route.Distance values you received. Remember that the Route you recieved did not do any clipping for you so the Distance you received was the length of all of the Features that were provided added together.


I do see some issues here so I am in discussion with the Routing Team to make the results of the GetSingleLineRoute() be the default value that is provided  by the .Route rather than requiring an additional method call to access. This should expose this element of the Routing Edition more clearly and hope fully reduce the confusion that seems to be present with the currently available options.



 Hi Ryan.



I'll have to say it's is strange that when I ask for a .route from a to b I get the route and more than i ask for...


Well so you say I have to use GetSingleLineRoute()  but how do i add that to my routinglayer then?


Since routes.add() wants a multishape and getsinglelineroute() is a lineshape so again... so strange i just want to add my a to b route...


RoutingLayer routingLayer = (RoutingLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"];


routingLayer.Routes.Clear();


routingLayer.Routes.Add(_route.GetSingleLineRoute());


What is the correct way to add my singlelineroute to my routing layer??


 


- Niels




Hello Niels, 
  
 Sorry for the inconvenience, yesterday we modified the routing core code and now you need modify your sample code to working in the new version, I saw that you have another post ask a question related to this sample too, I will answer in that post with a modified sample attach, then everything can work fine. 
  
 Regards, 
  
 Gary

 Sorry but I still don't get it.....


 


Downloaded your sample.


Added som buttons (to use in another forum post)


 


If you from the FTP opens RoutingTest.zip


And press "Test 1" button.


1.) Still the drawn route is longer than the end point.


2.) If i still have to use GetSingleLine route to ONLY get the route I need how do i then display that???


This is my display singleline route problem:



Since routes.add() wants a multishape and getsinglelineroute() is a lineshape so again... so strange i just want to add my a to b route...


RoutingLayer routingLayer = (RoutingLayer)((LayerOverlay)winformsMap1.Overlays["RoutingOverlay"]).Layers["RoutingLayer"];


routingLayer.Routes.Clear();


routingLayer.Routes.Add(_route.GetSingleLineRoute());


What is the correct way to add my singlelineroute to my routing layer??



 


- Niels



Hello Niels, 
   
  Yes, with 6.0.0.168, the problem still exist, because we need time to totally confirm this bug has fix, then we will synchronize the development and release version, before that, please using 6.0.x.0 not 6.0.0.x 
   
  Let us known if you still meet problem. 
   
  Regards, 
   
  Gary