GIS软件工程实习报告(最短路径分析)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

AE开发之基于几何网络的最短路径分析1、实习目的

本次实习目的在于熟练掌握ArcGIS Engine开发工具并能够通过C#语言在VS 2010开发环境中完成查询几何网络的最短路径分析的功能。

2、实习时间

2015年5月23日星期六

3、实习内容

3.1实验环境

操作系统:Windows 2007

二次开发平台:VS 2010开发环境、ArcGIS Desktop10.0、AE开发组件3.2实验任务

完成基于几何网络分析的最短路径查询功能,即实现通过在几何网络地图中指定起始点,能够查询经过起始点的最短路线,并能够通过缩放功能在地图窗口居中显示。

3.3实验步骤

3.3.1新建项目

选择\文件\新建项目,如图选择项目类型中Visual C#,再选择Windows Application,记为“FindShortPath”,点击确定。

3.3.2添加控件

3.3.3控件绑定

因为添加的控件只是单独存在,但是程序需要各控件间协同工作,因此要进行控件绑定。

3.3.4创建几何网络

1.在ArcCataLog中新建个人地理数据库—“甘地的个人地理数据库”,然后新建要素数据集“road”,接着,鼠标右键选择要素数据集“road”,选择“导入要素类”,导入需要创建几何网络的要素类“主要公路”,输出要素类的名字改为“road”,如下图所示:

2.鼠标右键选择要素数据集“road”,选择新建“几何网络”,则出现“新建几何网络”对话框,作如下图所示的一系列设置,最终得到几何网络“road_Net”。

至此,得到几何网络“road_Net”,如下图所示:

3.3.5代码实现最短路径分析

①设置ToolStrip1

②添加代码

privateIActiveViewm_ipActiveView;

private IMapm_ipMap;//地图控件中地图

private IGraphicsContainerpGC;//图形对象

privatebool clicked = false;

intclickedcount = 0;

private double m_dblPathCost = 0;

private IGeometricNetworkm_ipGeometricNetwork;

private IPointCollectionm_ipPoints;//输入点集合

privateIPointToEIDm_ipPointToEID;

private IEnumNetEIDm_ipEnumNetEID_Junctions;

private IEnumNetEIDm_ipEnumNetEID_Edges;

private IPolylinem_ipPolyline;

private IMapControl3 mapctrlMainMap = null;

private void Form1_Load(object sender, EventArgs e)

{

//对象初始化

mapctrlMainMap = (IMapControl3)this.axMapControl1.Object;

m_ipActiveView = axMapControl1.ActiveView;

m_ipMap = m_ipActiveView.FocusMap;

clicked = false;

pGC = m_ipMap as IGraphicsContainer;

}

private void Findpath_Click(object sender, EventArgs e)

{

mapctrlMainMap.CurrentTool = null;

//设置鼠标样式

axMapControl1.MousePointer = esriControlsMousePointer.esriPointerCrosshair;

if (yerCount == 0)

{

MessageBox.Show("请先加载几何网络数据!");

return;

}

m_ipActiveView = axMapControl1.ActiveView;

m_ipMap = m_ipActiveView.FocusMap;

clicked = false;

pGC = m_ipMap as IGraphicsContainer;

ILayeripLayer = m_ipMap.get_Layer(0);

IFeatureLayeripFeatureLayer = ipLayer as IFeatureLayer;

IFeatureDatasetipFDS = ipFeatureLayer.FeatureClass.FeatureDataset;

OpenFeatureDatasetNetwork(ipFDS);

clicked = true;

clickedcount = 0;

pGC.DeleteAllElements();

}

private void SolvePath_Click(object sender, EventArgs e)

{

axMapControl1.MousePointer = esriControlsMousePointer.esriPointerDefault;

if (SolvePathGan("Weight"))//先解析路径

{

IPolylineipPolyResult = PathPolyLine();//最后返回最短路径

clicked = false;

if (ipPolyResult.IsEmpty)

{

相关文档
最新文档