RouteTask执行最短路径计算时“无法完成 操作”问题分析解决

0
分享 2013-01-13
当我们使用ArcGISServer API,通过RouteTask来进行路径分析有时会遇到下面的错误


核心代码如下:
//地图点击取点
privatevoid myMap_MouseClick(object sender, Map.MouseEventArgs e)
{
try
{
if(!bAddPoint) return;
SimpleMarkerSymbol pMarkerSym = newSimpleMarkerSymbol();
SolidColorBrush ebrush = newSolidColorBrush(System.Windows.Media.Colors.Red);
pMarkerSym.Color = ebrush;
pMarkerSym.Size = 10;
GraphicpGra = newGraphic();
pGra.Geometry = e.MapPoint;
pGra.Symbol = pMarkerSym;
pGra.SetZIndex(1);
GraphicsLayer graphicsLayer = myMap.Layers["MyGraphicsLayer"] asGraphicsLayer;
graphicsLayer.Graphics.Add(pGra);
}
catch (Exception per)
{
MessageBox.Show(per.Message,“提示“, MessageBoxButton.OK);
}
}
privatevoid btn3_Click(objectsender, RoutedEventArgs e)
{
RouteTask routeTask = newRouteTask(routestr);
routeTask.Token = “”;
GraphicsLayer stopsGraphicsLayer = myMap.Layers["MyGraphicsLayer"] asGraphicsLayer;
RouteParameters routeParameters = newRouteParameters()
{
Stops = stopsGraphicsLayer,
ReturnDirections = true
};
routeTask.SolveCompleted += newEventHandler<RouteEventArgs>(routeTask_SolveCompleted);
routeTask.Failed += newEventHandler<TaskFailedEventArgs>(routeTask_Failed);
routeTask.SolveAsync(routeParameters);
}
void routeTask_Failed(objectsender, TaskFailedEventArgs e)
{
MessageBox.Show(e.Error.Message);
}
void routeTask_SolveCompleted(object sender, RouteEventArgs e)
{
try
{
// 获取路径并设置符号
RouteResultrouteResult = e.RouteResults[0];
GraphicsLayer graphicsLayer = myMap.Layers["MyGraphicsLayer"] asGraphicsLayer;
SimpleLineSymbol pLineSym = newSimpleLineSymbol();
SolidColorBrush ebrush = newSolidColorBrush(System.Windows.Media.Colors.Red);
pLineSym.Color = ebrush;
pLineSym.Style. = SimpleLineSymbol.LineStyle.DashDotDot;
pLineSym.Width = 3;
routeResult.Route.Symbol =pLineSym;
graphicsLayer.Graphics.Add(routeResult.Route);
}
catch (Exception per)
{
MessageBox.Show(per.Message,“提示“, MessageBoxButton.OK);
}
}
从上面代码可以看出,也并没有考虑单行线等因素、功能执行过程也并不复杂,因此基本可以排除是程序的原因导致的上面问题出现;那么,很有可能是我们创建的道路网络数据集过程中的设置引起的。
下面我们来看看在生成网络数据集时的几个关键设置

当我们创建道路网络不需要考虑单行线、道路等级、转向、天桥底下通道等高级设置时,转弯和高程两项是否设置并不影响我们的最短路径分析功能执行。但是,方向指示选项必须设置。方向指示是有关如何穿过路径的流转说明,网络分析时为生成的任何路径创建指示;这是在执行最短路径分析功能时所必要的。
方向指示设置会自动关联上网络数据集要素源中的“NAME”字段,如没有也可以指定其它字段,下图所示。


叠加网络分析路径图层后,重新发布服务


重新发布服务后,在程序中再次测试,最短路径分析功能已能成功进行


文章来源:http://blog.csdn.net/sydbc/article/details/17716873

0 个评论

要回复文章请先登录注册