Arcgis 几何网络分析
ArcGIS:网络分析(转)
|
由于之前对网络分析的理解有很多问题,所以在网上找了一些资料,这是其中一篇我觉得比较好的,所以就整理了一下,发到网上来,留个底吧,呵呵
注:关于几何网络的建立见前面的《空间数据采集组织篇》
理论基础:图论和运筹学
定义:利用运筹学建立模型,再利用其网络本身的空间关系,采用数学的方法来实现这个模型,最终得到结果,来指导现实和应用。
网络分析的基础知识:
1、网络的两个基本成分:线(edges)和交点(junctions)。
边线可以表示街道、管线和河流等信息,交点可以表示路口、电闸及河流的交汇点等信息。边线通过交点连接在一起,组成网络,汽车、电流和水流等均可以从一条边通过交点转移到另一条边。
2、网络模型
①几何网络和逻辑网络
二.网络模型①几何网络和逻辑网络
在ArcInfo中,一个网络可以由多个要素类(Feature class)组成。例如:在电力系统中,可以由电线、开关、保险丝和变压器等构成一个网络。因为要素具有几何形状并且可以显示,所以这种网络被称为几何网络(geometric network)。在一个几何网络中只能包含线要素和点要素。
对于每一个几何网络,均对应一个逻辑网络,它是一个幕后的数据结构,存储边线和交点的连接关系。当一个几何网络被生成时,一个逻辑网络将自动被ArcInfo产生和维护。在我们进行网络流向分析时,将只涉及到逻辑网络。
几何网络的内容:
* 组织所有要素类,构成网络。
* 包括边线和交点要素。
* 在几何网络上进行编辑和显示。
* 包括所有属性、关系和有效性规则。
逻辑网络的内容:
* 存储网络的连通性。
* 包括边线和交点元素。
* 开发网络分析程序将只涉及到逻辑网络。
* 逻辑网络由一些表(Table)组成,不包含几何信息。
* 当几何网络被修改后,逻辑网络自动被维护。
②要素类(Feature class)
要素类在网络中分四大类 :简单边线(Simple edge)、简单交点(Simple junction)、复杂边线(Complex edge)、复杂交点(Complex junction)。此外,在每一个网络中还有一个要素类,用于存储孤立的交点。
(1) 简单边线和简单交点
简单交点在点要素和交点元素之间具有一一对应关系,简单边线在线要素和边线元素之间也有一一对应关系,即几何网络中的要素(Feature)与逻辑网络中的元素(Element)存在一一对应。
例如,在城际路网中,一个城市可以用一个点要素表示,并且对应于逻辑网络中的一个交点元素;一条公路可以用一个线要素表示,并且对应于逻辑网络中的一个边线元素。许多网络可以用简单边线和简单交点很容易地建模。 在一些网络中,几何要素与逻辑元素之间一一对应的关系具有很大限制性。复杂边线和复杂交叉点在网络建模中提供了更有力的手段。
(2) 复杂边线
假设在一条街道上有一条几百米长的自来水管线,沿着这条管线有许多分接头(交点)连接到通往住宅的管线。所有数据查询和维护工作需要将这条管线当作一条单一要素,但是,因为在你的网络分析中需要构建自来水的流向,逻辑网络需要将分接头之间的管线当成一条边。当使用简单边线时,自来水主管线将被分割成许多段(形成许多要素),从而对数据的查询和维护造成很大的困难。
复杂边线可以将交点放置在边线的任何位置上,而不对边线要素进行分割,使用这种方法可以解决线段的破碎问题。一个带有复杂边线的几何网络对于每一个要素可以产生很多边线元素。当你生成一个几何网络时,你必须指定一个线要素类是复杂边线还是简单边线。假如它是复杂边线,当你增加新的交叉点时,边要素将不会被分割。
(3) 复杂交点
理解复杂交点的最好方法是在一个电力网络中假设一个开关柜。开关柜在网络中是一个复杂交点,但实际上是一个缩小了的网络,由简单交点和简单边线组成。
在几何网络中,开关(SW-2)被当作一个复杂的交点要素,有两条电线连入,两条电线连出。在逻辑网络中,开关模型由四条边线和五个交点组成。为实现上述开关对象,需要编写代码,在逻辑网络中增加边线和交点元素。
(4) 孤立交点
孤立交点是在网络建立和编辑过程中产生的,孤立交点维护那些不能由简单交点和复杂交点所标识的边线的端点。网络建立过程总是由边线终点生成孤立交点开始,然后比较孤立交点的位置和任何点要素的位置。假如发现一个匹配(在snapping容差内),则点要素被使用,孤立交点被舍弃。假如没有发现任何匹配,则孤立交点被写入一个孤立交点要素类。
③网络流向
网络分为两种:市政网络和交通网络。在交通网络中,物质在网络中流动,可以有“它们自己的意愿”,例如,汽车司机可以决定他们在网络中的行驶方向。在市政网络中,物质(水、电流、石油)在网络中流动,不能有“自己的意愿”,例如,在上水管线中,自来水不能任意方向流动。
网络通过设置源头、终点和开关决定流向。在市政网络的应用中,物质沿着边线的流动方向是确定的,而不是在需要时临时计算产生的。举例说明,在一个进行决策支持的几何网络中,决定是否关闭一个开关或者打开一个阀门之前,你必须知道当前的流向,以产生正确的决策,并且你还必须知道决策是否产生正确的流向。网络设施的状态影响流向,因此,你需要知道网络中的源头、终点的位置及开关和阀门等设施的状态。
几何网络有一个建立流向的方法。这种方法是根据当前设置的源头、终点的位置和每个要素的Enabled/Disabled状态,决定物质在网络中的流向。流向可以是沿着线段数字化的方向,也可以是逆着线段数字化方向。
(1) 源头(Sources)和终点(Sinks)
在一个市政网络中,设置源头和终点的位置,可以用来指定流向。任何交点要素均能够作为源头或终点。源头是物质流出的起点,例如,一个发电厂。终点是物质流入的尽头,例如,一个污水处理厂。当你构建和编辑一个几何网络时,你可以指定一个点要素是否是源头或终点。
(2) Enabled/Disabled要素
所有网络中的要素都有一个Enabled/Disabled状态。具有Disabled状态的要素不参与网络流向分析,没有任何物质流入或流出该要素。在打开电闸开关或关闭阀门的应用中,要素的Disabled状态非常重要。
源头、终点和要素的Enabled/Disable状态均对建立网络流向产生影响。
(3) 不明确的流向
当源头、终点和要素的Enabled/Disabled 状态信息不足或有误时,可能无法确定一条边的流向,则该条边的流向称为不明确的流向。
(4) 未初始化流向
当一些边与其它有流向的边没有连接,并且在这些边上也没有源头和终点时,则这些边的流向不能确定,称为未初始化的流向。
④权值
边线和交点可以包含任意数量的权值。权值主要用于存储穿过一条边或者通过一个交点时所需要的开销。一种典型的权值就是边线的长度。权值存储在边线和交点的属性字段上。
权值存储在逻辑网络中,分析程序可以很有效地存取它们。当要素属性表中的一个权值被修改后,逻辑网络中的权值被自动被修改。任何数字字段都可以成为权值。确定哪些字段作为权值完全依赖于你打算执行何种分析。Bitgate是一种特殊类型的权值,主要用于数据具有多种类型,例如一条街道上允许通过哪种类型的车辆。
⑤有方向的权值
边线的权值可以和线段的数字化方向相关。你可以用一个边线的权值代表沿着线段数字化方向(from-to)行进时的开销,另一个权值代表逆着线段数字化方向(to-from)行进时的开销。
具有方向的权值主要用于运输网络中,道路两边均有交通流向。使用有方向权值的情况如下:
* 每天往返上班时间,早晨进城道路交通堵塞,离城道路交通畅通。
* 单行线,某一个流向的权值是负值,意味着该方向不允许通过(权值为负值,意味开销无限大)。
* 山区,某些交通工具(卡车、自行车)上山时速度较慢。 ⑥连通性规则
在很多网络中,不是所有类型的边线可以连接到所有类型的交点上。同样,不是所有类型的边线通过交点能够和其它类型的边线相接。例如,在一个自来水网中,一个消防支线可以连接到一个消防栓,但不能连接到一个维修支线上。同样地,在相同的自来水网中,一个10英寸的主管可以通过一个减压器连接到一个8英寸的主管上。
网络连通性规则能够设置相互连接的网络要素类型及可以与另一种要素连接的任一特定要素的数量。通过建立网络连通性规则及其它规则(例如,属性域),你可以维护数据库中网络数据的完整性。在任何时候,你都能够有选择地验证数据库中的要素,产生报告,指出网络中哪些要素违反连通性规则或者其它规则。
(1) 边线-交点规则(Edge-junction rule)
类型A的边线能够与类型B的交点相连接的关系。
(2) 边线-边线规则(Edge-edge rule)
类型A的边线能够通过类型C的交点与类型B的边线相连通的关系。边线-边线规则中总是包含一个交点类型。
(3) 缺省的交点类型(Default junction type)
两种类型的边线可以通过多种类型的交点相连通。你能够确定哪种类型的交点为上述边线相接时的缺省交点。这种交点类型为缺省的交点类型。
(4) 边线-交点基数(Edge-junction cardinality)
可以存在一种规则,允许类型A的边线连接到类型B的交点上。缺省情况下,类型A任何数量的边线可以连接到同一类型B的交点上。你可能需要限制这种情况。你能够指定2至5条类型 A的边线能够连接到类型B的交点上,但是如果少于两条边线或者多于5条边线与该交点相接,将违反连通性规则。同样地,你能够限制与任一个类型D的边线相连的类型C的交点的数量。这种可允许的连接范围被称为边线-交点基数。
三.网络分析
在ArcInfo中,网络分析通过程序,利用网络的连通性产生一些有意思的结果,例如,由网络中的一个点追溯到其上游的所有元素,或者寻找两点之间的最短路径。当然,还有一些其它的分析工具,例如,你可以在ArcMap中使用基本的选择工具选择边线要素,然后统计各种类型边线的总长度。这种方式当然也可以对网络进行有效的分析,但是因为没有用到网络的连通性,所以不是我们现在所论述的网络分析。
①解算程序(Solvers)
解算程序即执行网络分析的程序。例如,为了使一条上水管线断流,应关闭哪些阀门?在上例中,解算程序需要对一个逻辑网络进行分析,包括由管线组成的边线(Edge),和阀门组成的交点(Junction)。输出结果为所有被关闭的阀门。
对于各种各样的网络分析,有各种各样的解算程序。ArcInfo的策略是,对于一些通用问题提供丰富的解算程序,方便用户直接使用;对于一些少见的网络分析问题,开发者可以通过ArcInfo的组件,使用任何程序开发语言,很容易地创建解算程序。
②网络标识(NetFlags)
网络标识用于标识网络中的一个位置。解算程序使用网络标识代表许多现实世界中的对象,例如,最短路径的终点,网络追踪的起点,阀门的位置及设施的位置等。网络标识不是逻辑网络的一个部分,它们只是用来描述网络中的任一位置。
有两种类型的网络标识:边线标识(Edgeflags)和交点标识(Junctionflags)。网络标识的属性包括元素的要素类名称、要素ID和要素的子ID。交点标识包括上述三个属性。边线标识除上述三个属性外,还包括该位置在边线中的相对位置(边线标识点和边线起点的距离与边线长度的百分比)。这意味着边线标识点可以在边线的任何位置,从0%(起始点)到100%(终点)。
3.障碍(Barriers)
在解算程序中,障碍代表逻辑网络中元素的Disabled状态。设置障碍与设置网络元素Enabled/Disabled状态为Disabled的作用相同,只不过障碍不存储在逻辑网络中,障碍只能被解算程序所识别。
障碍只是将网络元素的状态临时设为Disabled,它既不是边线要素也不是交点要素。在解算程序中有四种方法设置障碍:简单障碍、被选择的要素、要素类和权值过滤器。
(1) 简单障碍(Simple barriers)
简单障碍是一些边线和交点元素的集合。ArcInfo允许你使用一个障碍工具交互地生成简单的障碍 。你可以使用该工具,在屏幕上点击你想设为障碍的要素。
(2) 被选择的要素(Selected features)
ArcMap中有很多选择要素的工具(图形选择或属性选择工具),用来生成一个选择集。一个解算程序可以将该选择集设为屏蔽或设为非屏蔽。
(3)要素类(Feature class)
整个要素类可以被用来设为屏蔽或非屏蔽。
(4)权值过滤器(Weight Filters)
你可以设定一个权值或一个权值范围内的要素为障碍或非障碍。
④追踪(Tracing)
追踪是指在网络中沿着或者逆着流向前进,直到一种情况发生为止。例如,逆着电流方向找到一个变压器,或者向上追踪发现所有阀门。障碍能够影响追踪结果,例如:向上追踪时,遇到障碍该方向的追踪将停止。因此,在给水网络中,你可以用障碍代表阀门,确定关闭这些阀门后哪些管线将停水。
(1) 逆向追踪
从一个网络标识(Netflag)开始,逆着网络流向进行追踪。当遇到障碍、终点及Disabled状态的网络元素时,追踪停止。
(2) 顺流追踪
从一个网络标识(Netflag)开始,沿着网络流向进行追踪。当遇到障碍、终点及Disabled状态的网络元素时,追踪停止。
(3) 寻找公共源头
从所有网络标识开始,逆流追踪,寻找它们的公共源头。
5.其它网络分析
(1) 寻找相通要素
寻找所有与网络标识相通的边线和交点。
(2) 最佳路径