📄 optimalpath.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 + -