ArcGIS Mobile 10开发(三)–网络分析

这次主要是和大家交流一下通过ArcGIS Mobile 10来实现网络分析的功能(最短路径计算)。考虑到手机或者PDA的CPU计算能力问题,在ArcGIS Mobile的类库中并没有提供最短路径计算的算法和相关类库,所以必须通过ArcGIS Server的GP服务来实现最短路径计算。

实质就是在移动端给服务器端发送俩个或者多个点,并请求最短路径计算服务。由服务器端来实现最短路径的计算,然后将计算结果返回给移动端。效果如图:

第一步,通过ArcGISServer发布最短路径计算的GP服务。在ArcTutor实验数据(ArcTutorGP ServiceExamplesShortestRoute)有样例数据和ShortestRouteService.tbx工具箱。

第二步,在Mobile的解决方案中添加Web References

添加GP地址
http://esri/arcgis/services/Sh ... Fwsdl,并命名:GP Server


第三部,编写调用GP服务的代码,首先在移动端构造两个参数

①点集合Coordinate,作为输入参数1。②字符串,即GP服务的名称“CalculateShortest Route”,作为输入参数2。如果用于不同的场景中,当然还要注意另外一个参数,即坐标系统的问题。
// 实例化一个GP server
ShortestRouteService_GPServer m_gpServer = new
GP_Server.ShortestRouteService_GPServer();

// 获取GP 模型的信息
GPToolInfo m_gpToolInfo =m_gpServer.GetToolInfo(“Calculate Shortest Route”);
……………………….

// 构建输入要素集
GPFeatureRecordSetLayer m_gpInputFeatureRecordsetLayer = (GP_Server.GPFeatureRecordSetLayer)gpModelParameterInfo[0].Value;

//此构建输入参数
GPValue gpValues = newGPValue[1];
……………………..

// 发送请求到 GP server, 并记录 Job ID
string jobID;
jobID =m_gpServer.SubmitJob(m_gpToolInfo.Name, gpValues, newGP_Server.GPResultOptions(), new GP_Server.PropertySet());

// 从 GP server 获得结果
GPResultgpResult = m_gpServer.GetJobResult(jobID, null,gpResultOptions);


第四步,通过GP服务返回的结果,在移动端得Map控件中添加自定义的myLayer,并通过StrokePaintOperation类进行绘制,定义最短路径的符号化(线的颜色、宽度等)

其中调用GP服务以及绘制最短路径的过程,我都写在了一个myLayer的类库中。附件中是该类得源码,如有需要可以直接下载下来使用。

文章来源:http://blog.csdn.net/sydbc/article/details/17203351

0 个评论

要回复文章请先登录注册