AE 最短路径分析.doc
文本预览下载声明
ArcEngine 最短路径分析
using System;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.NetworkAnalysis;
namespace GisEditor
{
/// summary
/// 最短路径分析
/// /summary
public class ClsPathFinder
{
?? private IGeometricNetwork m_ipGeometricNetwork;
?? private IMap m_ipMap;
?? private IPointCollection m_ipPoints;
?? private IPointToEID m_ipPointToEID;
?? private double m_dblPathCost =0;
?? private IEnumNetEID m_ipEnumNetEID_Junctions;
?? private IEnumNetEID m_ipEnumNetEID_Edges;
?? private IPolyline??? m_ipPolyline;
?? #region Public Function
?? //返回和设置当前地图
?? public IMap SetOrGetMap
?? {
??? set{ m_ipMap = value;}
??? get{return??? m_ipMap;}
?? }
?? //打开几何数据集的网络工作空间
?? public void OpenFeatureDatasetNetwork(IFeatureDataset FeatureDataset)
?? {
??? CloseWorkspace();???
??? if (!InitializeNetworkAndMap(FeatureDataset))
???? Console.WriteLine( 打开network出错);
?? }
?? //输入点的集合
?? public IPointCollection StopPoints
?? {
??? set{m_ipPoints= value;}
??? get{return??? m_ipPoints;}
?? }
???
?? //路径成本
?? public double PathCost
?? {
??? get {return m_dblPathCost;}
?? }
??
?? //返回路径的几何体
?? public IPolyline PathPolyLine()
?? {
??? IEIDInfo ipEIDInfo;
??? IGeometry ipGeometry;????
??? if(m_ipPolyline!=null)return m_ipPolyline;
???
??? m_ipPolyline = new PolylineClass();
??? IGeometryCollection ipNewGeometryColl = m_ipPolyline as IGeometryCollection;
???
??? ISpatialReference ipSpatialReference = m_ipMap.SpatialReference;
??? IEIDHelper ipEIDHelper = new EIDHelperClass();
??? ipEIDHelper.GeometricNetwork = m_ipGeometricNetwork;??
??? ipEIDHelper.OutputSpatialReference = ipSpatialReference;
??? ipEIDHelper.ReturnGeometries = true;
??? IEnumEIDInfo ipEnumEIDInfo = ipEIDHelper.CreateEnumEIDInfo(m_ipEnumNetEID_Edges);
??? int count = ipEnumEIDInfo.Count;
??? ipEnumEIDInfo.Reset();
??? for(int i =0;icount;i++)
??? {
???? ipEIDInfo = ipEnumEIDInfo.Next();
???? ipGeometry = ipEIDInfo.Geometry;
???? ipNewGeometryColl.AddGeometryCollection( ipGeom
显示全部