//最短路径分析 private void routeSolverMenuItem_Click(object sender, EventArgs e) { ICommand pCommand; pCommand = new ShortPathSolveCommand(); //新建自定义的“执行分析”命令 pCommand.OnCreate(axMapControl1.Object); //创建该命令 pCommand.OnClick(); //启动该命令 pCommand = null; #region 道路详细信息 //获取最短路径的长度 string totalLengthOfRoute = ""; IFeatureLayer shortRouteLayer = NetWorkAnalysClass.GetLayerByName( m_mapControl.Map, "Routes") as IFeatureLayer; IFeatureCursor featureCursor = shortRouteLayer.Search(null, false); IFeature featue = featureCursor.NextFeature(); for (int i = 0; i < featue.Fields.FieldCount; i++) { if (featue.Fields.get_Field(i).Name == "Total_Shape_Length") { totalLengthOfRoute = featue.get_Value(i).ToString(); } } //获取与最短路径有关的道路的名字 FormQueryBySpatial formQueryBySpatial = new FormQueryBySpatial(); ArrayList containRouteNameList = formQueryBySpatial.selectRouteNameBySpatial( esriSpatialRelEnum.esriSpatialRelContains, m_mapControl.Map); ArrayList overlapRouteNameList = formQueryBySpatial.selectRouteNameBySpatial( esriSpatialRelEnum.esriSpatialRelOverlaps, m_mapControl.Map); m_mapControl.Map.ClearSelection(); string output = "经过道路有:"; for (int i = 0; i < containRouteNameList.Count; i++) { output += containRouteNameList[i].ToString() + ","; } output = output.Substring(0, output.Length - 1); output += "\n" + "站点所在道路为:"; for (int i = 0; i < overlapRouteNameList.Count; i++) { output += overlapRouteNameList[i].ToString() + ","; } output = output.Substring(0, output.Length - 1); output = output + "\n" + "路径长度:" + totalLengthOfRoute + "米"; MessageBox.Show(output); #endregion }