您的位置:首页 > 其它

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

2013-12-31 16:25 579 查看
当我们使用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”字段,如没有也可以指定其它字段,下图所示。



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



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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: