网络分析系统设计
1.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 service."));
// 取得网络分析参数
string[] naLayers = naServer.GetNALayerNames(esriNAServerLayerType.esriNAServerRouteLayer);
NAServerSolverParams solverParams = naServer.GetSolverParameters(naLayers[0]) as NAServerSolverParams;
// 设置网络分析路径参数
NAServerRouteParams routeParams = solverParams as NAServerRouteParams;
……………
//对起点和终点地理编码 LoadLocations(solverParams);//自定义函数
// 解决问题
NAServerSolverResults solverResults;
solverResults = naServer.Solve(solverParams);
// 显示结果
OutputResults(solverResults); //自定义函数
}
}
1.1.2 设置障碍点的实现
在GIS网络分析中,如何寻找避开障碍点而到达目的地最近或最快的道路.如下是核心代码:
private void Solvebarriers()
{ 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.esriNAServerRouteLayer); NAServerSolverParams solverParams = naServer.GetSolverParameters(naLayers[0]) as NAServerSolverParams;
// 设置网络分析路径参数
NAServerRouteParams routeParams = solverParams as NAServerRouteParams;
……………
LoadLocationsbarriers(solverParams);//与最优路径最大的不同
// 解决问题-查找路径
NAServerSolverResults solverResults;
solverResults = naServer.Solve(solverParams);
//显示结果
OutputResults(solverResults);
}
}
请与最优路径的结果图对比,便可发现路线不同.
1.1.3 通达性分析的实现
本系统的通达性分析是分析两个地点之间的通达,如果两点之间是通达的那么分析最短路径的时候会返回一系列的路径方向,这个方向是让用户明白怎样走,如果不能够通达,那么就不能返回,或者返回的为空,根据这一思路,设计程序如下:
private void SolveArrive()
{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.esriNAServerRouteLayer); NAServerSolverParams solverParams = naServer.GetSolverParameters(naLayers[0]) as NAServerSolverParams;
// 设置网络分析参数
NAServerRouteParams routeParams = solverParams as NAServerRouteParams;
……………
LoadLocationsArrive(solverParams);
// 查找路径
NAServerSolverResults solverResults;
solverResults = naServer.Solve(solverParams);
NAServerRouteResults RouteSolverResults = solverResults as NAServerRouteResults;
//显示结果
if (RouteSolverResults.Directions != null)
{ this.Label20.Text = "分析结果:能够成功到达";
}
else
{this.Label20.Text = "分析结果:不能到达";}
}
} 255