1、系统网络分析功能模块的实现一.1 系统网络分析功能模块的实现一.1.1 最优路径查询的实现本模块是对最短路径的求解, 给定的两个点之间找到一个最短路径, 下拉框里列出了用于分析的街道名称,供用户来选择起点和终点.下面是最优查询的主程序: try / 取得网络分析服务 using (NAServerProxy naServer = NAServerProxy.Create(SERVER_NAME, ROUTE_SERVICE_NAME, null) if (naServer = null) throw (new System.Exception(Could not find the web se
2、rvice.); / 取得网络分析参数 string naLayers = naServer.GetNALayerNames(esriNAServerLayerType.esriNAServerRouteLayer); NAServerSolverParams solverParams = naServer.GetSolverParameters(naLayers0) as NAServerSolverParams; / 设置网络分析路径参数 NAServerRouteParams routeParams = solverParams as NAServerRouteParams; /对起点和
3、终点地理编码 LoadLocations(solverParams);/自定义函数 / 解决问题 NAServerSolverResults solverResults; solverResults = naServer.Solve(solverParams); / 显示结果 OutputResults(solverResults); /自定义函数 一.1.2 设置障碍点的实现在GIS网络分析中,如何寻找避开障碍点而到达目的地最近或最快的道路.如下是核心代码: private void Solvebarriers() try / 取得网络分析服务 using (NAServerProxy na
4、Server = NAServerProxy.Create(SERVER_NAME, ROUTE_SERVICE_NAME, null) if (naServer = null) throw (new System.Exception(Could not find the web service.); / 取得网络分析参数 string naLayers = naServer.GetNALayerNames(esriNAServerLayerType.esriNAServerRouteLayer); NAServerSolverParams solverParams = naServer.Ge
5、tSolverParameters(naLayers0) as NAServerSolverParams; / 设置网络分析路径参数NAServerRouteParams routeParams = solverParams as NAServerRouteParams; LoadLocationsbarriers(solverParams);/与最优路径最大的不同 / 解决问题-查找路径 NAServerSolverResults solverResults; solverResults = naServer.Solve(solverParams); /显示结果 OutputResults(
6、solverResults); 请与最优路径的结果图对比,便可发现路线不同.一.1.3 通达性分析的实现本系统的通达性分析是分析两个地点之间的通达,如果两点之间是通达的那么分析最短路径的时候会返回一系列的路径方向,这个方向是让用户明白怎样走,如果不能够通达,那么就不能返回,或者返回的为空,根据这一思路,设计程序如下: private void SolveArrive() try / 取得网络分析服务 using (NAServerProxy naServer = NAServerProxy.Create(SERVER_NAME, ROUTE_SERVICE_NAME, null) if (na
7、Server = null)throw (new System.Exception(Could not find the web service.); / 取得网络分析参数 string naLayers = naServer.GetNALayerNames(esriNAServerLayerType.esriNAServerRouteLayer); NAServerSolverParams solverParams = naServer.GetSolverParameters(naLayers0) as NAServerSolverParams; / 设置网络分析参数 NAServerRou
8、teParams routeParams = solverParams as NAServerRouteParams; LoadLocationsArrive(solverParams); / 查找路径 NAServerSolverResults solverResults; solverResults = naServer.Solve(solverParams); NAServerRouteResults RouteSolverResults = solverResults as NAServerRouteResults;/显示结果 if (RouteSolverResults.Direct
9、ions != null) this.Label20.Text = 分析结果:能够成功到达; else this.Label20.Text = 分析结果:不能到达; 一.1.4 资源配送的实现资源分配问题,就是将数量一定的资源(如原材料、资金、机器设备、劳动力、食品等)恰当地分配给若干个使用者, 使总的路径值最优 private void SolveSource() try /取得网络分析服务 using (NAServerProxy naServer = NAServerProxy.Create(SERVER_NAME, ROUTE_SERVICE_NAME, null) if (naSer
10、ver = null)throw (new System.Exception(Could not find the web service.); /取得网络分析参数 string naLayers = naServer.GetNALayerNames(esriNAServerLayerType.esriNAServerRouteLayer); NAServerSolverParams solverParams = naServer.GetSolverParameters(naLayers0) as NAServerSolverParams; /设置网络分析参数NAServerRoutePara
11、ms routeParams = solverParams as NAServerRouteParams; /对起点和终点地理编码 LoadLocationsSource(solverParams); /查找路径 NAServerSolverResults solverResults; solverResults = naServer.Solve(solverParams); /显示结果 OutputSourceResults(solverResults); 一.1.5 道路分析与建议根据道路的统计数据分析各条道路的现状,以及给行人分析行走路线或者给政府部门进行各种整顿工作.如下代码是显示道路
12、数据的明细情况: string strQuery = select * from streetculture ; DataSet ds = new DataSet(); OleDbDataAdapter adapter = new OleDbDataAdapter(); adapter.SelectCommand = new OleDbCommand(strQuery, conn); adapter.Fill(ds); this.GridView3.DataSource = ds; this.GridView3.DataBind();如下代码是综合得分的代码: while (reader.Re
13、ad() scorei = (int)100 - (int)reader.GetValue(1) * 2 - (int)reader.GetValue(2) * 3 - (int)reader.GetValue(3); namei = (string)reader.GetValue(0); i+; 如下代码是给各个部门的建议: string strQuery1 = select * from streetculture where 堵车次数10; OleDbCommand cmd = new OleDbCommand(strQuery1, conn); OleDbDataReader read
14、er = cmd.ExecuteReader();this.TextBox8.Text = 以下地方请政府部门注意,希望能够加强道路分流; while (reader.Read() this.TextBox8.Text += (string)reader.GetValue(0) + ,; reader.Close(); conn.Close();一.2 综合实例的实现一.2.1 道路通之一:轿车助手本实例是综合了最优路径查询与设置障碍点, 障碍点可以用户自己设置,可以增加也可以删除.系统默认有四个障碍,列在表中,当用户设置完成后,只要点击确定就可以找到最优路径.其核心代码如下: private
15、 void SolveCAR() try /取得网络分析服务 using (NAServerProxy naServer = NAServerProxy.Create(SERVER_NAME, ROUTE_SERVICE_NAME, null) if (naServer = null)throw (new System.Exception(Could not find the web service.); /取得网络分析参数 string naLayers = naServer.GetNALayerNames(esriNAServerLayerType.esriNAServerRouteLay
16、er); NAServerSolverParams solverParams = naServer.GetSolverParameters(naLayers0) as NAServerSolverParams; /设置网络分析参数 NAServerRouteParams routeParams = solverParams as NAServerRouteParams; /对起点和终点地理编码LoadLocationsCar(solverParams); /查找路径 NAServerSolverResults solverResults; solverResults = naServer.So
17、lve(solverParams); /显示结果 OutputResults(solverResults); 一.2.2 道路通之二:货运助手本实例是综合了资源配送与设置障碍点, 只要用户选择资源点与需求点,同样障碍点可以用户自己设置,可以增加也可以删除.系统默认有四个障碍,列在表中,当用户设置完成后,只要点击确定就可以找到最优路径.其核心代码有:private void SolveDriverSource() try /取得网络分析服务 using (NAServerProxy naServer = NAServerProxy.Create(SERVER_NAME, ROUTE_SERVIC
18、E_NAME, null) /设置网络分析参数NAServerRouteParams routeParams = solverParams as NAServerRouteParams; /对起点和终点地理编码LoadLocationsDriverSource(solverParams); /查找路径 NAServerSolverResults solverResults; solverResults = naServer.Solve(solverParams); /显示结果 OutputSourceResults(solverResults); 一.2.3 应急响应之一:急救先锋本实例是实现
19、查找最近设施,其主要应用就是应急响应,这个实例是服务病人或者医院,为了应急,各样应从简,更合实际.如下是核心代码: protected void Button39_Click(object sender, EventArgs e) /取得网络分析服务using (NAServerProxy naServer = NAServerProxy.Create(SERVER_NAME, ROUTE_SERVICE_NAME, null) /取得网络分析参数 NAServerSolverParams solverParams = naServer.GetSolverParameters(Closest
20、Facility) as NAServerSolverParams;/设置网络分析参数 NAServerClosestFacilityParams closestfacilityParams = solverParams as NAServerClosestFacilityParams; /查找路径 LoadLocationsHospital(solverParams); NAServerSolverResults solverResults; solverResults = naServer.Solve(solverParams); /显示结果 OutputhospitalResults(s
21、olverResults); 一.2.4 应急响应之二:消防助手本实例是实现查找最近设施,其主要应用就是应急响应,这个实例是服务消防部门, 确定火灾的严重程度,再决定派遣的小分队数,再从小分队所在地出发,找到最为合适的路径,同时会给出详细的说明来引导消防部门protected void Button37_Click(object sender, EventArgs e) /取得网络分析服务using (NAServerProxy naServer = NAServerProxy.Create(SERVER_NAME, ROUTE_SERVICE_NAME, null) /取得网络分析参数NAS
22、erverSolverParams solverParams = naServer.GetSolverParameters(Closest Facility) as NAServerSolverParams; NAServerClosestFacilityParams closestfacilityParams = solverParams as NAServerClosestFacilityParams;/设置分析参数 /查找路径 LoadLocationsFiretry(solverParams); NAServerSolverResults solverResults; solverRe
23、sults = naServer.Solve(solverParams); /显示结果 OutputFireResults(solverResults); 一.2.5 服务区查询本实例主要服务管理人员进行决策与消费者进行购物分析. 创建服务区功能进行评估, 当管理人员想再建一个沃尔玛超市,可以根据服务范围新建,这样能达到最好的资源配置.同时消费者也可以据服务范围到超市购物.如下是核心代码: protected void Button41_Click(object sender, EventArgs e) /取得网络分析服务 using (NAServerProxy naServer = NAS
24、erverProxy.Create(SERVER_NAME, ROUTE_SERVICE_NAME, null) /设置网络分析参数NAServerSolverParams solverParams = naServer.GetSolverParameters(Service Area) as NAServerSolverParams; NAServerServiceAreaParams saParams = solverParams as NAServerServiceAreaParams; /对起点和终点地理编码LoadLocationsServiceArea(solverParams);/查找路径 NAServerSolverResults solverResults; solverResults = naServer.Solve(solverParams);/显示结果 OutputServerAreaResults(solverResults);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1