GIS软件工程实习报告最短路径分析.docx

上传人:b****2 文档编号:1034453 上传时间:2022-10-15 格式:DOCX 页数:15 大小:106.60KB
下载 相关 举报
GIS软件工程实习报告最短路径分析.docx_第1页
第1页 / 共15页
GIS软件工程实习报告最短路径分析.docx_第2页
第2页 / 共15页
GIS软件工程实习报告最短路径分析.docx_第3页
第3页 / 共15页
GIS软件工程实习报告最短路径分析.docx_第4页
第4页 / 共15页
GIS软件工程实习报告最短路径分析.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

GIS软件工程实习报告最短路径分析.docx

《GIS软件工程实习报告最短路径分析.docx》由会员分享,可在线阅读,更多相关《GIS软件工程实习报告最短路径分析.docx(15页珍藏版)》请在冰豆网上搜索。

GIS软件工程实习报告最短路径分析.docx

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

AE开发之基于几网络的最短路径分析

1、实习目的

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

2、实习时间

2015年5月23日星期六

3、实习容

3.1实验环境

操作系统:

Windows2007

二次开发平台:

VS2010开发环境、ArcGISDesktoplO.O、AE开发组件

3.2实验任务

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

3.3实验步骤

331新建项目

选择文件新建项目,如图选择项目类型中VisualC#,再选择Windows

Application,记为“FindShortPath”点击确定。

 

.h£TFmgwmk4*|丰击适肓

百林N:

皿U-

覚巨]

甫手丘宙却碎左|

Tr

用&»建&舟Windows亦理户界龜

诟3Ct

WP丄庖冃世*

VirWjaiC#

str.-ftE?

忻fu刑Cf

ayr

CL*7if»'.Slf-

WuiJC<

Mr■如g无主

i'jF-冃户担-4J;

畑jHCt

押殳•MM住匚丄

VsuhJIC*

d■-docun-wril!

?

'wisiual"tud-3201iT,Prcije!

rt3

Fi『£旺卑詁

 

332添加控件

333控件绑定

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

行控件绑定

 

334创建几网络

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

road”,如下图所示:

'I旨it出益査

t:

Mfeenlhbini皿生tan炖惘:

謬、Lmtcrtlj^中国析竝3昊§

辰7

2.鼠标右键选择要素数据集“road”,选择新建“几网络”,贝U出现“新建几

网络”对话框,作如下图所示的一系列设置,最终得到几网络“road_Net

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

 

335代码实现最短路径分析

①设置ToolStripl

甘地一实习

②添加代码

privatelActiveViewm」pActiveView;

privateIMapm_ipMap;〃地图控件中地图

privateIGraphicsContainerpGC;〃图形对象

privateboolclicked=false;

intclickedcount=0;

privatedoublem_dblPathCost=0;

privateIGeometricNetworkm_ipGeometricNetwork;

privateIPointCollectionm」pPoints;〃输入点集合

privateIPointToEIDm_ipPointToEID;

privatelEnumNetEIDm_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=new

LineElementClass();

ILineSymbollinesymbol=new

SimpleLineSymbolClass();

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(IFeatureDataset

FeatureDataset)

{

IFeatureClassContaineripFeatureClassContainer;

IFeatureClassipFeatureClass;

IGeoDatasetipGeoDataset;

ILayeripLayer;

IFeatureLayeripFeatureLayer;

IEnvelopeipEnvelope,ipMaxEnvelope;

doubledblSearchTol;

INetworkCollectionipNetworkCollection=FeatureDataset

asINetworkCollection;

intcount=ipNetworkCollection.GeometricNetworkCount;

//获取第一个几网络工作空间

m_ipGeometricNetwork=

ipNetworkCollection.get_GeometricNetwork(0);

INetworkipNetwork=m_ipGeometricNetwork.Network;

if(m_ipMap!

=null)

ipFeatureClassContainer=m_ipGeometricNetworkas

IFeatureClassContainer;

count=ipFeatureClassContainer.ClassCount;for(inti=0;i

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1