最短路径求解

【如果看到此博客还没有网络数据集的,请参考第一章的内容,点击我,看目录】

最短路径,是什么最短?时间最短?距离最短?什么距离?路程距离?

考虑到拥堵问题,限速问题,换乘问题,在现实的最短路径远远比计算机中的最短路径要复杂,因为要考虑的因素太多了。

这些因素就叫作最短路径求解过程中的“阻抗”,和电阻阻碍电流类似。

最短路径是后面几个分析类型的基础,只有求得了最短路径,才知道能覆盖多大地方(服务区)、事故点与最近设施的路径怎么走(最近设施)等。

在上一章,就已经有了最简单的路径分析:单一的道路网,阻抗仅仅为公路网的长度。

在这里不讨论最短路径的内部算法,似乎有大佛说过,ESRI是用的Dijkstra算法的变种算法。

最短路径中有什么元素呢?换句话说,最短路径要什么东西才能分析?

途径点、障碍。

最短路径输出了什么?

当然就是最短路径的那条线啊!

输入元素 输出元素

途径点

障碍

最短路径

换成图的形式,就是这样子。

输入必选参数[途径点],可选参数:充当障碍的[点线面],基于连通策略和阻抗,就能计算出最短路径。

什么是障碍呢?例如,某条路正在封闭施工,那施工的那个地方就是障碍,这里是不能通行的,就代表最短路径是不会走过障碍的。

路径分析常用设置

在这里打开网络分析图层的属性窗口

找到分析设置选项卡,就会有如下图:

经常会使用到的设置是:阻抗、限制、方向、交汇点的U形转弯、这几个。

阻抗

很简单,分析的时候经过这条路的花费成本,可以这么简单的理解。可以是时间、平均消耗体力、道路长度等。

限制

限制主要有两种:转弯限制和单行线限制。

有的十字路口会有禁止转向左边或者右边,或者十字路口等红绿灯的时间比较长的情况,这个就是转弯限制。转弯限制怎么来的呢?

当网络数据集中加入了转弯要素类的时候,这个复选列表就可以选择了。有关如何制作转弯要素类,请跳到第四章。

单行线,有的道路只能一个方向走,不能来回走,这也是很常见的。

方向

这个是导航设置。主要设置导航的显示单位和导航的属性(长度或者时间成本)。

交汇点的U形转弯

交汇点,就是线与线相交并且连通的地方。什么是连通?就是这个点的所有道路都能畅通无阻通过这个点。

交汇点可以是线的折点,也可以是两条线的公共交点。

这个点能否U形转弯,换句话,这个交汇点是否能掉头,在这里就有4种选项:

[允许]:在任何交汇点处均允许调头。

[仅在交点和死角处允许]:当两条相邻边恰好相交于交汇点时,禁止掉头。

[仅在死角处允许]:除仅有一条相邻边的交汇点(死角)外,其他交汇点均禁止掉头。

[不允许]

什么地方都不允许掉头。

ps:这里仅仅对交汇点所言,要是在道路上,一般也可以掉头的,除非有中央路障。那这个怎么设置呢?只需设置以下属性:

如果设置了最后一个禁止U形转弯,那么在非交汇点也不能掉头了。

输出Shape类型

有的时候为了节约显示资源,提高显示速度,可以设置为点与点之间的直线:

不过一般最短路径都是看效果的,除非只看导航,否则这个设置一般都默认。

分析示例

如上图,阻抗用的是道路的长度,其余均为默认设置。

在以后,通过添加各种限制条件,如转弯、掉头策略,复杂的阻抗策略,连通性组策略,产生的结果就不同。

ArcGIS 网络分析[2.1] 最短路径的更多相关文章

  1. ArcGIS 网络分析[0] 介绍与博文目录【更新中】

    网络分析是个热点,理论上是属于计算机图形学和数据结构的,GIS以此为基础做出应用. 以下列举本人在学习中遇到的网络分析问题与经验总结. 1. 软件平台及数据准备 平台:Windows 10 操作系统, ...

  2. ArcGIS网络分析之Silverlight客户端最近设施点分析(四)

    原文:ArcGIS网络分析之Silverlight客户端最近设施点分析(四) 在上一篇中说了如何实现最近路径分析,本篇将讨论如何实现最近设施点分析. 最近设施点分析实际上和路径分析有些相识,实现的过程 ...

  3. ArcGIS网络分析之Silverlight客户端路径分析(三)

    原文:ArcGIS网络分析之Silverlight客户端路径分析(三) 首先贴上最终的效果图: a.路径查询 2.最近设施点查询 3.服务区分析 说明: 1.以上的示例使用的数据是随意在ArcMap中 ...

  4. ArcGIS 网络分析[1] 介绍与博文目录【更新中】

    网络分析是个热点,理论上是属于计算机图形学和数据结构的,GIS以此为基础做出应用. 以下列举本人在学习中遇到的网络分析问题与经验总结. 平台:Windows 10操作系统,ArcGIS for Des ...

  5. ArcGIS 网络分析[2] 在ArcMap中使用网络数据集进行五大网络分析[最短路径/服务区/最近设施点/OD成本矩阵/车辆分配]

    上一章花了大篇幅介绍网络数据集的创建,也简单说了下点线的连通性问题. 那么可以试试刀锋不锋利啦! 网络分析呢,ArcGIS提供了5个基本分析类型: 最短路径求解 服务区(服务覆盖范围) 事故突发地的最 ...

  6. ArcGIS 网络分析[2] 利用自定义基础数据创建网络数据集

    前言 似乎除了官方介绍的例子,我还没有在网上见过一篇介绍如何"使用自己的数据"创建"网络数据集"的文章. 有介绍几何网络的,有介绍如何用官方SanFrancis ...

  7. ArcGIS 网络分析[1.2] 利用1.1的线shp创建网络数据集/并简单试验最佳路径

    上篇已经创建好了线数据(shp文件格式)链接:点我 这篇将基于此shp线数据创建网络数据集. 在此说明:shp数据的网络数据集仅支持单一线数据,也就是说基于shp文件的网络数据集,只能有一个shp线文 ...

  8. ArcGIS 网络分析[3] 发布NAServer到ArcGIS for Server(以Server 10.4为例)

    前阵子对ArcGIS API For JavaScript的网络分析有兴趣,但是不知道其数据是如何获取的. 查阅API知道,AJS的网络分析只有三个功能:最短路径(RouteTask).最近设施点(C ...

  9. ArcGIS 网络分析[2.5] VRP(车辆配送)

    什么是VRP? VRP就是车辆配送. 大家有没有想象过一个城市的某个快递营业点,是怎么让各个快递员配送快递的? 每个快递员针对那片区域的客户,如何走路线才最省时间? 也许你会说,最短路径分析可以做到— ...

随机推荐

  1. 【正则表达式】--python(表示字符)

    [前修知识] match :匹配    span:范围 match 是从头往后开始匹配,search不按照顺序,直接获取自己想要的,有就显示,没有就None r 代表反转义,前面也提到过这个知识,如果 ...

  2. ionic3中 ion-datetime 全屏可点击问题解决方案

    废话不多说,能进来的都应该知道是个什么情况.我也是在网上找了一段时间,才在git上ionic官方团队的Issues中找到了问题解决方法. 第一,给外围包上一层ion-item,但是这有个问题,就是会让 ...

  3. C#Winform设计的通用标签设计器

    技术看点 PropertyGrid的使用 自定义控件的使用 对象序列化成XML GDI+Windows驱动打印 前言 是的,一不小心把公司名称透露了.索性帮公司打一下广告.公司(上海易溯信息科技)是中 ...

  4. 浅谈使用git进行版本控制

    小编在学习可视化的时候,接触到git,所以这里写一下关于GitHub的有关知识,写这个的目的还是巩固自己的学习,一方面可以提高自己,另一方面回头看一下,有什么更深层次的东西还可以再记录. 首先说一下版 ...

  5. HDU1075-What Are You Talking About

    What Are You Talking About Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 102400/204800 K ...

  6. 数据库服务器---Tps

    事务处理系统:Transactionprocessingsystems(TPS) 提高事务处理效率与保证其正确性 在数据(信息)发生处将它们记录下来 通过OLTP产生新的信息 将信息保存到数据库中供其 ...

  7. phython编写图形界面

    Python支持多种图形界面的第三方库,包括: Tk wxWidgets Qt GTK 等等. 但是Python自带的库是支持Tk的Tkinter,使用Tkinter,无需安装任何包,就可以直接使用. ...

  8. indexOf 和 lastIndexOf的区别

    indexOf 和  lastIndexOf 是什么? indexOf 和 lastIndexOf 都是索引文件 indexOf 是查某个指定的字符串在字符串首次出现的位置(索引值) (也就是从前往后 ...

  9. JavaScript实现AOP(面向切面编程)

    什么是AOP? AOP(面向切面编程)的主要作用是把一些跟核心业务逻辑模块无关的功能抽离出来,这些跟业务逻辑无关的功能通常包括日志统计.安全控制.异常处理等.把这些功能抽离出来之后, 再通过" ...

  10. C++ IO操作API及注意事项(包含一个日志类的实现)

    C++是一个抽象程度比C高很多的语言,在使用C++时,编译器做了很多工作,如果我们不对C++的某些特性的实现机制进行了解,那么编程时也许会有很多疑惑,我们也许知道怎样做才是正确的,但不知道为什么要这样 ...