GIS软件工程实习报告最短路径分析.docx
- 文档编号:1412182
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:18
- 大小:596.32KB
GIS软件工程实习报告最短路径分析.docx
《GIS软件工程实习报告最短路径分析.docx》由会员分享,可在线阅读,更多相关《GIS软件工程实习报告最短路径分析.docx(18页珍藏版)》请在冰豆网上搜索。
GIS软件工程实习报告最短路径分析
AE开发之基于几何网络的最短路径分析
1、实习目的
本次实习目的在于熟练掌握ArcGISEngine开发工具并能够通过C#语言在VS2010开发环境中完成查询几何网络的最短路径分析的功能。
2、实习时间
2015年5月23日星期六
3、实习容
3.1实验环境
操作系统:
Windows2007
二次开发平台:
VS2010开发环境、ArcGISDesktop10.0、AE开发组件
3.2实验任务
完成基于几何网络分析的最短路径查询功能,即实现通过在几何网络地图中指定起始点,能够查询经过起始点的最短路线,并能够通过缩放功能在地图窗口居中显示。
3.3实验步骤
3.3.1新建项目
选择\文件\新建项目,如图选择项目类型中VisualC#,再选择WindowsApplication,记为“FindShortPath”,点击确定。
3.3.2添加控件
3.3.3控件绑定
因为添加的控件只是单独存在,但是程序需要各控件间协同工作,因此要进行控件绑定。
3.3.4创建几何网络
1.在ArcCataLog中新建个人地理数据库—“甘地的个人地理数据库”,然后新建要素数据集“road”,接着,鼠标右键选择要素数据集“road”,选择“导入要素类”,导入需要创建几何网络的要素类“主要公路”,输出要素类的名字改为“road”,如下图所示:
2.鼠标右键选择要素数据集“road”,选择新建“几何网络”,则出现“新建几何网络”对话框,作如下图所示的一系列设置,最终得到几何网络“road_Net”。
至此,得到几何网络“road_Net”,如下图所示:
3.3.5代码实现最短路径分析
1 设置ToolStrip1
2 添加代码
privateIActiveViewm_ipActiveView;
privateIMapm_ipMap;//地图控件中地图
privateIGraphicsContainerpGC;//图形对象
privateboolclicked=false;
intclickedcount=0;
privatedoublem_dblPathCost=0;
privateIGeometricNetworkm_ipGeometricNetwork;
privateIPointCollectionm_ipPoints;//输入点集合
privateIPointToEIDm_ipPointToEID;
privateIEnumNetEIDm_ipEnumNetEID_Junctions;
privateIEnumNetEIDm_ipEnumNetEID_Edges;
privateIPolylinem_ipPolyline;
privateIMapControl3mapctrlMainMap=null;
privatevoidForm1_Load(objectsender,EventArgse)
{
//对象初始化
mapctrlMainMap=(IMapControl3)this.axMapControl1.Object;
m_ipActiveView=axMapControl1.ActiveView;
m_ipMap=m_ipActiveView.FocusMap;
clicked=false;
pGC=m_ipMapasIGraphicsContainer;
}
privatevoidFindpath_Click(objectsender,EventArgse)
{
mapctrlMainMap.CurrentTool=null;
//设置鼠标样式
axMapControl1.MousePointer=esriControlsMousePointer.esriPointerCrosshair;
if(axMapControl1.LayerCount==0)
{
MessageBox.Show("请先加载几何网络数据!
");
return;
}
m_ipActiveView=axMapControl1.ActiveView;
m_ipMap=m_ipActiveView.FocusMap;
clicked=false;
pGC=m_ipMapasIGraphicsContainer;
ILayeripLayer=m_ipMap.get_Layer(0);
IFeatureLayeripFeatureLayer=ipLayerasIFeatureLayer;
IFeatureDatasetipFDS=ipFeatureLayer.FeatureClass.FeatureDataset;
OpenFeatureDatasetNetwork(ipFDS);
clicked=true;
clickedcount=0;
pGC.DeleteAllElements();
}
privatevoidSolvePath_Click(objectsender,EventArgse)
{
axMapControl1.MousePointer=esriControlsMousePointer.esriPointerDefault;
if(SolvePathGan("Weight"))//先解析路径
{
IPolylineipPolyResult=PathPolyLine();//最后返回最短路径
clicked=false;
if(ipPolyResult.IsEmpty)
{
MessageBox.Show("没有路径可到!
!
");
}
else
{
IRgbColorcolor=newRgbColorClass();
color.Red=255;
color.Blue=64;
color.Green=128;
LineElementClasselement=newLineElementClass();
ILineSymbollinesymbol=newSimpleLineSymbolClass();
linesymbol.Color=colorasIColor;
linesymbol.Width=3;
element.Geometry=m_ipPolyline;
element.Symbol=linesymbol;
pGC.AddElement(element,0);
m_ipActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics,null,null);
axMapControl1.FlashShape(element.Geometry);
MessageBox.Show("路径经过"+m_ipEnumNetEID_Edges.Count+"条线"+"\r\n"+"经过节点数为"+m_ipEnumNetEID_Junctions.Count+"\r\n"+"路线长度为"+m_ipPolyline.Length.ToString("#######.##")+"\r\n","几何路径信息");
}
}
}
//路径缩放功能
privatevoidSuoFang_Click(objectsender,EventArgse)
{
if(m_ipPolyline==null)
{
MessageBox.Show("当前没有执行路径查询!
!
!
请确认!
");
}
else
{
this.axMapControl1.Extent=m_ipPolyline.Envelope;
}
}
#region自定义路径查询函数
publicvoidOpenFeatureDatasetNetwork(IFeatureDatasetFeatureDataset)
{
CloseWorkspace();
if(!
InitializeNetworkAndMap(FeatureDataset))
Console.WriteLine("打开network出错");
}
//关闭工作空间
privatevoidCloseWorkspace()
{
m_ipGeometricNetwork=null;
m_ipPoints=null;
m_ipPointToEID=null;
m_ipEnumNetEID_Junctions=null;
m_ipEnumNetEID_Edges=null;
m_ipPolyline=null;
}
//初始化几何网络和地图
privateboolInitializeNetworkAndMap(IFeatureDatasetFeatureDataset)
{
IFeatureClassContaineripFeatureClassContainer;
IFeatureClassipFeatureClass;
IGeoDatasetipGeoDataset;
ILayeripLayer;
IFeatureLayeripFeatureLayer;
IEnvelopeipEnvelope,ipMaxEnvelope;
doubledblSearchTol;
INetworkCollectionipNetworkCollection=FeatureDatasetasINetworkCollection;
intcount=ipNetworkCollection.GeometricNetworkCount;
//获取第一个几何网络工作空间
m_ipGeometricNetwork=ipNetworkCollection.get_GeometricNetwork(0);
INetworkipNetwork=m_ipGeometricNetwork.Network;
if(m_ipMap!
=null)
{
ipFeatureClassContainer=m_ipGeometricNetworkasIFeatureClassContainer;
count=ipFeatureClassContainer.ClassCount;
for(inti=0;i { ipFeatureClass=ipFeatureClassContainer.get_Class(i); ipFeatureLayer=newFeatureLayerClass(); ipFeatureLayer.FeatureClass=ipFeatureClass; for(intj=0;j { if(m_ipMap.get_Layer(j).Name.ToUpper()==ipFeatureLayer.Name.ToUpper()) { continue;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- GIS 软件工程 实习 报告 路径 分析