Esempio n. 1
0
        //最短路径分析
        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
        }