【技术贴】ArcGIS Runtime for Xamarin 洪荒之力-查找路径

我们要去一个陌生的地方经常会在地图上查找路线,现在一般的地图软件都有查找路径功能。输入出发地,目的地,轻轻一搜,一条路径就给显示出来了,非常方便我们的出行。那么这个功能是这么做出来的呢,今天我们就介绍ArcGIS Runtime 是怎么做到的。

本文采用的是ArcGIS Runtime for Xamarin 版本实现的,其他的版本均可以实现。

ArcGIS Runtime 能做到什么

  • 计算点对点和多点路线

  • 优化结果找到最短的或最快的路线

  • 重新排序来找到最好的路径

  • 设置避免限制区域和障碍区

  • 指定站点的通过时间段(只在某一个时间段可以通过该点)

1基础知识


ArcGIS Runtime 实现路径分析的主要的类是route task

一个route task是一个网络分析的任务。通过执行这个任务可以在交通网络上得到俩个或者俩个位置的通达的解决路线。    

交通网络可以是道路、桥梁、隧道、自行车道、铁轨和网络以及这个网络中的其他元素,道路的十字路口表示网络可以连接,障碍点表示网络不可以通过,通过分析网络的连通性来找到目标路线。

2详细步骤


有了以上的简单了解,我们就开始step by step 实现这个功能,总共分为六步

  1. 选择网络分析数据源

  2. 创建route对象

  3. 指定route任务参数

  4. 指定开始位置,结束位置和障碍

  5. 执行route任务

  6. 可视化显示路径

1选择网络分析数据


ArcGIS Runtime 的网络数据可以是在线的服务,也可以是离线的本地数据,但不管你使用的在线还是离线的实现的整个过程的是一样的。在线服务可以选择Esri公司的发布的ArcGIS Online,你也可以自己制作发布网络分析服务,具体发布流程请访问官方教程

http://server.arcgis.com/zh-cn/server/latest/get-started/windows/tutorial-publishing-a-network-analysis-service.htm


2创建route对象

 route task 是一个重要的对象,通过设置 该对象的 空间参考,起始点位置,障碍点位置,就可以获得到要分析的满意路径。本例中使用的是在线服务

 

3指定route任务参数


 route task 有许多个参数,通过这些参数可以允许你自定义路径,比如你设置站点位置,障碍点位置。route task 也有多种执行路径模式,不同的模式也会产生不同的结果。其中 spatial reference属性必须和地图的一致。

【技术贴】ArcGIS Runtime for Xamarin 洪荒之力-查找路径_第1张图片

4指定开始位置,结束位置和障碍


【技术贴】ArcGIS Runtime for Xamarin 洪荒之力-查找路径_第2张图片

5执行route任务


当设置完以上的参数以后,就可以得到结果了,只需要一行代码


6可视化显示路径


得到了查找的路径我们当然希望将路径显示在地图上了,为此我们要做一下可视化展示的工作,用一个红色的线的来呈现路径。

【技术贴】ArcGIS Runtime for Xamarin 洪荒之力-查找路径_第3张图片

最后的成果


怎么样 是不是很酷,简简单单的六步就实现一个路径查找功能的,赶快来试试吧。 

下图是一个iOS版本的路径执行结果

【技术贴】ArcGIS Runtime for Xamarin 洪荒之力-查找路径_第4张图片

除了二维平面导航路径以外,还可以做三维的路径,这样对于我们有时候在一栋大楼里面找一个商店或者在一个楼里面开会寻找小伙伴非常管用,下图中直接从一楼导航到三楼。

【技术贴】ArcGIS Runtime for Xamarin 洪荒之力-查找路径_第5张图片

总结

duersi

        一路狂贴代码,ArcGIS Runtime 洪荒之力只用冰山一角,路径分析是一个非常实用的功能,希望通过这篇文章对大家的工作有所帮助,另外提一句 ArcGIS Runtime for Xamarin这个版本可以使用C#开发ArcGIS 跨平台的移动产品, 比如Android 和iOS。

后续关于ArcGIS Runtime 的文章会有

ArcGIS Runtime 设备定位,

ArcGIS Runtime 3D,

ArcGIS Runtime 在线离线,

ArcGIS Runtime 符号化渲染,

ArcGIS Runtime 结合VR初探,等多篇文章,请大家持续关注

 




你可能感兴趣的:(移动,3D,GIS,桌面,ArcGIS,Runtime)