//最佳路径分析 private void PathAnalyst_Click(object sender, RoutedEventArgs e) { if (points.Count < 2) { MessageBox.Show("请指定途经点"); return; } if (featuresLayer.Features.Count > 0) { featuresLayer.Features.Clear(); } //定义 Point2D 类型的参数 FindPathParameters<Point2D> paramPoint2D = new FindPathParameters<Point2D> { Nodes = points, HasLeastEdgeCount = true, Parameter = new TransportationAnalystParameter { ResultSetting = new TransportationAnalystResultSetting { ReturnEdgeFeatures = true, ReturnEdgeGeometry = true, ReturnEdgeIDs = true, ReturnNodeFeatures = true, ReturnNodeGeometry = true, ReturnNodeIDs = true, ReturnPathGuides = true, ReturnRoutes = true }, WeightFieldName = "length", TurnWeightField = "TurnCost", BarrierPoints = barrierPoints, } }; //与服务器交互 FindPathService findPathService = new FindPathService("http://*****:*****@Changchun"); findPathService.ProcessAsync(paramPoint2D); findPathService.ProcessCompleted += new EventHandler<FindPathEventArgs>(findPathService_ProcessCompleted); findPathService.Failed += new EventHandler<ServiceFailedEventArgs>(findPathService_Failed); }
//最佳路径分析 async private void PathAnalyst_Click(object sender, RoutedEventArgs e) { if (points.Count < 2) { await MessageBox.Show("请指定途经点"); return; } if (featuresLayer.Features.Count > 0) { featuresLayer.Features.Clear(); } //定义 Point2D 类型的参数 FindPathParameters<Point2D> paramPoint2D = new FindPathParameters<Point2D> { Nodes = points, HasLeastEdgeCount = true, Parameter = new TransportationAnalystParameter { ResultSetting = new TransportationAnalystResultSetting { ReturnEdgeFeatures = true, ReturnEdgeGeometry = true, ReturnEdgeIDs = true, ReturnNodeFeatures = true, ReturnNodeGeometry = true, ReturnNodeIDs = true, ReturnPathGuides = true, ReturnRoutes = true }, WeightFieldName = "length", TurnWeightField = "TurnCost", BarrierPoints = barrierPoints, } }; //与服务器交互 try { FindPathService findPathService = new FindPathService(url); var result = await findPathService.ProcessAsync(paramPoint2D); //路径样式 PredefinedLineStyle simpleLineStyle = new PredefinedLineStyle(); simpleLineStyle.Stroke = new SolidColorBrush(Colors.Blue); simpleLineStyle.StrokeThickness = 2; //服务器返回结果,将最佳路径显示在客户端 if (result != null) { if (result.PathList != null) { foreach (ServerPath p in result.PathList) { //将要素添加到图层 featuresLayer.Features.Add(new Feature { Geometry = p.Route.Line, Style = simpleLineStyle }); this.length.Text = "路线长度:" + p.Route.Length.ToString(); this.cost.Text = "花费:" + p.Weight.ToString(); } resultPanel.Visibility = Visibility.Visible; } else { await MessageBox.Show("此设置下无可用路径"); } } } //服务器计算失败提示失败信息 catch(Exception ex) { MessageBox.Show(ex.Message); } }
private void FindPath_Click(object sender, RoutedEventArgs e) { FindPathParameters<int> paramInt = new FindPathParameters<int> { Nodes = new List<int> { 2, 3 }, HasLeastEdgeCount = true, Parameter = new TransportationAnalystParameter { ResultSetting = new TransportationAnalystResultSetting { ReturnEdgeFeatures = true, ReturnEdgeGeometry = true, ReturnEdgeIDs = true, //ReturnImage = false, ReturnNodeFeatures = true, ReturnNodeGeometry = true, ReturnNodeIDs = true, ReturnPathGuides = true, ReturnRoutes = true }, //MapParameter = new NAResultMapParameter //{ // Viewer = new Rect(0, 0, 256, 256), // Format = OutputFormat.PNG //}, WeightFieldName = "length", TurnWeightField = "TurnCost" } }; FindPathParameters<Point2D> paramPoint2D = new FindPathParameters<Point2D> { Nodes = new List<Point2D> { new Point2D(4737.65773280094, -3406.06007171244), new Point2D(5645.28372661686, -3312.88173774655) }, HasLeastEdgeCount = true, Parameter = new TransportationAnalystParameter { ResultSetting = new TransportationAnalystResultSetting { ReturnEdgeFeatures = true, ReturnEdgeGeometry = true, ReturnEdgeIDs = true, //ReturnImage = false, ReturnNodeFeatures = true, ReturnNodeGeometry = true, ReturnNodeIDs = true, ReturnPathGuides = true, ReturnRoutes = true }, //MapParameter = new NAResultMapParameter //{ // Viewer = new Rect(0, 0, 256, 256), // Format = OutputFormat.PNG //}, WeightFieldName = "length", TurnWeightField = "TurnCost" } }; FindPathService findPathService = new FindPathService("http://*****:*****@Changchun") { }; //findPathService.ProcessAsync(paramInt); findPathService.ProcessAsync(paramPoint2D); findPathService.Failed += Failed; findPathService.ProcessCompleted += new EventHandler<FindPathEventArgs>(findPathService_ProcessCompleted); }