⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 optimalpath.cs

📁 开发的地信系统
💻 CS
字号:

using System;
using System.Collections.Generic;
using System.Text;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.NetworkAnalysis;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.esriSystem;


namespace Tom.GIS.ArcEngine.NetworkAnalysis
{
    /// <summary>
    /// 最佳路径对象,用于存储路径分析生成的结果
    /// </summary>
    public class OptimalPath
    {
        private double _pathLenght;
        private string _resultString;


        /// <summary>
        /// 结果路径长度
        /// </summary>
        public double PathLenght
        {
            get
            {
                return _pathLenght;
            }
        }
        /// <summary>
        /// 结果路径描述文字
        /// </summary>
        public string ResultString
        {
            get
            {
                return _resultString;
            }
        }


        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="junctionEIDs">结果路口集合</param>
        /// <param name="edgeEIDs">结果道路集合</param>
        /// <param name="segmentCost">结果道路各片断长度</param>
        public OptimalPath(IEnumNetEID junctionEIDs, IEnumNetEID edgeEIDs, object[] segmentCost)
        {
            //if (SystemFactory.PathFinder.EIDHelper == null)
            //    return;

            //IGeoFeatureLayer featureLayer = PathFinder.GetFeatureLayer("道路中心线", SystemFactory.MapControl.Map);
            ////解析结果道路序列
            //IEnumEIDInfo enumEIDInfo = SystemFactory.PathFinder.EIDHelper.CreateEnumEIDInfo(edgeEIDs);
            //enumEIDInfo.Reset();
            //IEIDInfo eidInfo = enumEIDInfo.Next();
            //List<NameLength> nameLengthList = new List<NameLength>();
            //while (eidInfo != null)
            //{
            //    IFeature feature = eidInfo.Feature;
            //    IGeometry geometry = eidInfo.Geometry;
            //    IPolyline pline = geometry as IPolyline;


            //    if (pline != null)
            //    {
            //        string name = featureLayer.FeatureClass.GetFeature((int)feature.get_Value(0)).get_Value(3).ToString();
            //        double length = pline.Length;
            //        NameLength nameLength = new NameLength();
            //        nameLength.Name = name;
            //        nameLength.Length = length;
            //        bool addFlag = true;

            //        for (int i = 0; i < nameLengthList.Count; i++)
            //        {
            //            if (nameLengthList[i].Name == name)
            //            {
            //                nameLengthList[i].Length += length;
            //                addFlag = false;
            //                break;
            //            }
            //        }
            //        if (addFlag)
            //        {
            //            nameLengthList.Add(nameLength);
            //        }

            //    }

            //    eidInfo = enumEIDInfo.Next();
            //}

            ////对结果字符串进行处理,生成可理解的道路引导字符串

            //nameLengthList.ForEach(delegate(NameLength nl)
            //{
            //    _resultString += nl.Name + "," + Convert.ToInt32(nl.Length).ToString() + "|";
            //});

            //_resultString = _resultString.Substring(0, _resultString.Length - 1);


            ////路径的长度

            //for (int i = 0; i < segmentCost.Length; i++)
            //{
            //    _pathLenght += Convert.ToDouble(segmentCost[i]);
            //}

        }


    }

    public class NameLength
    {
        public string Name;
        public double Length;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -