ThinkGeo.com    |     Documentation    |     Premium Support

GetRoute method for getting a feature near the passed PointShape

I'd like to know how does the GetRoute method behave when getting the feature close to the PointShape.


Does it get the closest features from the route start/end points and then build a route based on them? Is there a tolerance (a distance, in meters, for example) for that?


I'd like to establish a tolerance if possible.


Have a great day.


 


Gustavo



When using GetRoute passing PointShapes for Start and End points, it will find the closest points on the nearest road segments and base the roiute on that. So, you don’t have to use points that are right on the road network. I hope we answered your question.

But when the road segment is too far away from the route start/end points I would like to show a message that it wasn’t possible to calculate the route. That’s why I want to establish a tolerance to the distance between the route start/end point and the road segment.

 


Gustavo,
I think you can use the “GetRoute(string startFeatureId, string endFeatureId)” instead, the startFeatureId is the id of feature which is closest to start point, and the endFeatureId is the id of the feature that is nearest to end point. Both of them can be available by the way:
featureSource.GetFeaturesNearestTo(Feature targetFeature, GeographyUnit unitOfData, int numberOfItemsToFind, IEnumerable<string> returningColumnNames, double distanceLimits, DistanceUnit unitOfDistance)
The distanceLimits parameter allows you to add a tolerance which specifies the search area.
Thanks,
Johnny

I had thought on that. It solves this issue. 
  
 But it raises another. In this case, I would probably have to tweak the start and end feature lines to get a line segment that goes just to the desired point, as the line feature can not end exactly in the route start/end point. I know how to do that, but there must to be a better way I suppose. 
  
 How does the GetRoute method handle this internally? Does it get the closest features to the route start/end points and them calculate the route based on these two features?

 You can check before you do the GetRoute, if the points are within your set tolerance. For example, you can look at the code below to have an idea on how to do that:


 


 



//Does the GetRoute only if features are found within 100 meters of the start point.
Collection<Feature> features = StreetLayer.QueryTools.GetFeaturesWithinDistanceOf(startPointShape, winformsMap1.MapUnit, DistanceUnit.Meter, 100, ReturningColumnsType.NoColumns);

if (features.Count > 0)
{
    //Do the GetRoute.
}
else
{
    //Warns that not within tolerance.
}


I let you know that we published a Code Community project related to that subject. You can check it out:


Routing Tolerance:  code.thinkgeo.com/projects/show/routingtolerance