SuperMap iMobile for Android 知识库
设施网络分析  

6     设施网络分析方法实现

利用FacilityAnalyst类中提供的方法实现相应的设施网络分析功能,下面对FacilityAnalyst类所提供的所有设施网络分析功能一一进行详细介绍,包括相关概念的介绍。

6.1     检查网络环路

检查网络环路的方法为:

语法:

public int[] FacilityAnalyst.checkLoops()

返回值:

返回网络中为环路的网络弧段ID数组。

6.2     查找连接的环路

查找连接的环路有两个方法:

方法一:基于给定的网络结点ID数组,查找与这些结点相连接的环路。

语法:

public int[] FacilityAnalyst.findLoopsFromNodes(int[]  nodeIDs)

参数说明:

nodeIDs:给定的网络结点ID数组。

返回值说明:

返回与给定的网络结点相连接的环路对应的网络弧段ID数组。

方法二:基于给定的网络弧段ID数组,查找与这些弧段相连接的环路。

语法:

public int[] FacilityAnalyst.findLoopsFromEdges(int[]  edgeIDs)

参数说明:

edgeIDs:给定的网络弧段ID数组。

返回值说明:

返回与给定的网络弧段相连接的环路对应的网络弧段ID数组。

6.3     查找不相连通的弧段

查找不相连通的弧段的方法为:

方法一:根据给定的网络结点ID数组,查找与这些结点不相连通的弧段。

语法:

public int[] FacilityAnalyst.findUnconnectedEdgesFromNodes(int[] nodeIDs)

参数说明:

nodeIDs:给定的网络结点ID数组。

返回值:

返回与给定的网络结点不相连通的网络弧段。

方法二:根据给定的网络弧段ID数组,查找与这些结点不相连通的弧段。

语法:

public int[] FacilityAnalyst.findUnconnectedEdgesFromEdges(int[] edgeIDs)

参数说明:

edgeIDs:给定的网络弧段ID数组。

返回值:

返回与给定的网络弧段不相连通的网络弧段。

6.4     查找相连通的弧段

查找相连通的弧段的方法为:

方法一:根据给定的网络结点ID数组,查找与这些结点相连通的弧段。

语法:

public int[] FacilityAnalyst. findConnectedEdgesFromNodes (int[] nodeIDs)

参数说明:

nodeIDs:给定的网络结点ID数组。

返回值:

返回与给定的网络结点相连通的网络弧段。

方法二:根据给定的网络弧段ID数组,查找与这些结点相连通的弧段。

语法:

public int[] FacilityAnalyst. findConnectedEdgesFromEdges (int[] edgeIDs)

参数说明:

edgeIDs:给定的网络弧段ID数组。

返回值:

返回与给定的网络弧段相连通的网络弧段。

6.5     查找到汇的弧段

查找到汇的弧段根据起始点或起始弧段的不同有两种方法:

方法一:根据给定的参与分析的某条弧段,查找这条弧段到汇之间的弧段,返回弧段ID数组。

语法:

public int[] FacilityAnalyst. findSinkFromEdge (int[] edgeID, String weightName, boolean isLoopValid)

参数说明:

edgeID:给定的参与分析的弧段ID

weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.Name

isLoopValid:环路是否有效,当该参数为true, 环路有效。而当参数为false时, 环路无效。

返回值:

返回弧段ID数组。

方法二:根据给定的参与分析的某个结点,查找这个结点到汇之间的弧段,返回弧段ID数组。

语法:

public int[] FacilityAnalyst. findSinkFromNode (int[] nodeID, String weightName, boolean isLoopValid)

参数说明:

nodeID:给定的参与分析的结点ID

weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.Name

isLoopValid:环路是否有效,当该参数为true, 环路有效。而当参数为false时, 环路无效。

返回值:

返回弧段ID数组。

6.6     查找到源的弧段

查找到源的弧段根据起始点或起始弧段的不同有两种方法:

方法一:根据给定的参与分析的某条弧段,查找这条弧段到源之间的弧段,返回弧段ID数组。

语法:

public int[] FacilityAnalyst. findSourceFromEdge (int[] edgeID,String weightName,boolean isLoopValid)

参数说明:

edgeID:给定的参与分析的弧段ID

weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.Name

isLoopValid:环路是否有效,当该参数为true, 环路有效。而当参数为false时, 环路无效。

返回值:

返回弧段ID数组。

方法二:根据给定的参与分析的某个结点,查找这个结点到源之间的弧段,返回弧段ID数组。

语法:

public int[] FacilityAnalyst. findSourceFromNode (int[] nodeID, String weightName, boolean isLoopValid)

参数说明:

nodeID:给定的参与分析的结点ID

weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.getName()

isLoopValid:环路是否有效,当该参数为true, 环路有效。而当参数为false时, 环路无效。

返回值:

返回弧段ID数组。

6.7     上游追踪

概念——上游:

如图 6‑1所示:假设以水流代表设施网络中流动的物质,Q点是一个汇点,那么Q点将接收水流的输入,流向如图中的箭头所示的方向,那么,图中的ABCLEFG结点都是Q点的上游结点,也称为Q点的上游,因为从这些结点流出的水最后都流入了Q点;而弧段ABBCCLLQEBFGGLQ点的上游弧段,也称为Q点的上游。

另外,相对于弧段LQ来说,ABCLEFG结点也是弧段LQ的上游结点,也称为弧段LQ的上游;而弧段ABBCCLEBFGGL是弧段LQ的上游弧段,也称为弧段LQ的上游。

61 上游示意图

方法一:获取从给定的分析结点上游追踪所流经的弧段,返回弧段ID数组。

语法:

public int[] FacilityAnalyst.traceUpFromNode(int nodeID, String weightName,boolean isLoopValid)

参数说明:

nodeID:给定的参与分析的网络结点ID值。

weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.getName()

isLoopValid:环路是否有效,当该参数为true, 环路有效。而当参数为false时, 环路无效。

返回值:

返回给定分析结点的上游弧段ID数组。

例子:如图 6‑1示,如果以给定的Q结点为分析点,上游追踪所流经的弧段,那么结果将返回弧段ABBCCLLQEBFGGLID数组。

 

 

 

 

方法二:取从给定的分析弧段上游追踪所流经的弧段,返回弧段ID数组。

语法:

public int[] FacilityAnalyst.traceUpFromEdge(int edgeID, String weightName,boolean isLoopValid)

参数说明:

edgeID:给定的参与分析的网络弧段ID值。

weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.getName()

isLoopValid:环路是否有效,当该参数为true, 环路有效。而当参数为false时, 环路无效。

返回值:

返回给定分析弧段的上游弧段ID数组。

如图 6‑1所示,如果以给定的弧段LQ为分析弧段,上游追踪所流经的弧段,那么结果将返回弧段ABBCCLEBFGGLID数组。

6.8     下游追踪

概念——下游:

如图 6‑2所示:假设以水流代表设施网络中流动的物质,Q点是一个源点,水流将从Q点流出,流向如图中的箭头所示的方向,那么,图中的ABCLEFG结点都是Q点的下游结点,也称为Q点的下游,因为从这些结点接收了Q点流出的水;而弧段BACBLCQLBEGFLGQ点的下游弧段,也称为Q点的下游。

另外,相对于弧段QL来说,ABCLEFG结点也是弧段QL的下游结点,也称为弧段QL的下游;而弧段BACBLCBEGFLG是弧段QL的下游弧段,也称为弧段QL的下游。

62 下游示意图

方法一,获取从给定的分析结点下游追踪所流经的弧段,返回弧段ID数组。

语法:

public int[] FacilityAnalyst.traceDownFromNode(int nodeID,String weightName,boolean isLoopValid)

参数说明:

nodeID:给定的参与分析的网络结点ID值。

weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.getName()

isLoopValid:环路是否有效,当该参数为true, 环路有效。而当参数为false时, 环路无效。

返回值:

返回给定分析结点的下游弧段ID数组。

如图 6‑2所示,如果以给定的Q结点为分析点,下游追踪所流经的弧段,那么结果将返回弧段BACBLCQLBEGFLGID数组。

方法二,获取从给定的分析弧段下游追踪所流经的弧段,返回弧段ID数组。

语法:

public int[] FacilityAnalyst.traceDownFromEdge(int edgeID, String weightName,boolean isLoopValid)

参数说明:

edgeID:给定的参与分析的网络弧段ID值。

weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.getName()

isLoopValid:环路是否有效,当该参数为true, 环路有效。而当参数为false时, 环路无效。

返回值:

返回给定分析弧段的下游弧段ID数组。

如图 6‑2所示,以给定的弧段QL为分析弧段,下游追踪所流经的弧段,那么结果将返回弧段BACBLCBEGFLGID数组。

8.9     共同上游

方法一:根据给定的结点ID数组,获取这些结点的共同上游弧段。

语法:

public int[]FacilityAnalyst.findCommonAncestorsFromNodes

(int[]  nodeIDs,String weightName,boolean isLoopValid)

参数说明:

nodeIDs:给定的结点ID数组。

weightName:给定的权值字段信息对象的名称,WeightFieldInfo.getName()

isLoopValid:环路是否有效,当该参数为true, 环路有效。而当参数为false时, 环路无效。

返回值:

返回给定结点的共同上游弧段ID数组。

如图 6‑3所示,流向如图中的箭头所示的方向,如果查找QP点的共同上游弧段,则返回结果会返回弧段ABBCCLEBGLFGID数组。

63 共同上游概念示意图

方法二:根据给定的弧段ID数组,获取这些弧段的共同上游弧段。

语法:

public int[]FacilityAnalyst.findCommonAncestorsFromEdges

(int[]  edgeIDs,String weightName,boolean isLoopValid)

参数说明:

nodeIDs:给定的弧段ID数组。

weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.getName()

isLoopValid:环路是否有效,当该参数为true, 环路有效。而当参数为false时, 环路无效。

返回值:

返回给定弧段的共同上游弧段ID数组。

如图 6‑3所示,流向如图中的箭头所示的方向,如果查找弧段LQMP的共同上游弧段,则返回结果会返回弧段ABBCCLEBGLFGID数组。

 

6.10  共同下游

方法一:根据给定的结点ID数组,获取这些结点的共同下游弧段。

语法:

public int[] FacilityAnalyst.findCommonCatchementsFromNodes(int[]  nodeIDs,String weightName,boolean isLoopValid)

参数说明:

nodeIDs:给定的结点ID数组。

weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.getName()

isLoopValid:环路是否有效,当该参数为true, 环路有效。而当参数为false时, 环路无效。

返回值:

返回给定结点的共同下游弧段ID数组。

如图 6‑4所示,流向如图中的箭头所示的方向,如果查找QP点的共同下游弧段,则返回结果会返回弧段BACBLCBELGGFID数组。

64 共同下游概念示意图

 

方法二:根据给定的弧段ID数组,获取这些弧段的共同下游弧段。

语法:

public int[] FacilityAnalyst.findCommonCatchmentsFromEdges(int[]  edgeIDs,String weightName,boolean isLoopValid)

参数说明:

nodeIDs:给定的弧段ID数组。

weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.getName()

isLoopValid:环路是否有效,当该参数为true, 环路有效。而当参数为false时, 环路无效。

返回值:

返回给定弧段的共同下游弧段ID数组。

如图 6‑4所示,流向如图中的箭头所示的方向,如果查找弧段QLPM的共同下游弧段,则返回结果会返回弧段BACBLCBELGGFID数组。

6.11  上游路径分析

方法一:根据给定的参与分析的结点ID,查询该结点上游最短路径或弧段数最少的路径。

语法:

public FacilityPathResult FacilityAnalyst.findPathUpFromNode(int nodeID,String weightName)

参数说明:

nodeID:给定的参与分析的结点ID

weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.getName()

返回值:

结果保存在FacilityPathResult类中。

6.1 FacilityPathResult类方法

方法

描述

getNodes

返回设施路径分析得到的路径所经过的结点ID数组。

语法:int[] getNodes

getEdges

返回设施路径分析得到的路径所经过的弧段ID数组。

语法:int[] getEdges

如图 6‑5所示,如果利用本方法,以Q点为给定的参与分析的结点,那么进行上游最短路径分析,这里假设查找长度最短的上游路径。那么,首先找出Q点的所有上游路径,然后从其中找出长度最短的一条返回。

Q点的上游路径是指从Q点进行上游追踪直到追踪到它的最上游的结点位置,也就是追踪到如图 6‑5所示的AEF结点,那么构成Q点的上游路径有三条,一条是ABCLQ,一条是EBCLQ,还有一条是FGLQ,很明显FGLQ这条上游路径长度最短。

65 上游路径分析概念示意图

方法二:根据给定的参与分析的弧段ID,查询该弧段上游最短路径或弧段数最少的路径。

语法:public FacilityPathResult FacilityAnalyst.findPathUpFromEdge(int edgeID,String weightName)

参数说明:

edgeID:给定的参与分析的弧段ID

weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.getName()

返回值:

结果保存在FacilityPathResult类中。

如图 6‑5所示,如果利用本方法,以弧段LQ为给定的参与分析的弧段,那么进行上游最短路径分析,这里假设查找长度最短的上游路径。那么,首先找出弧段LQ的所有上游路径,然后从其中找出长度最短的一条返回。

弧段LQ的上游路径是指从弧段LQ进行上游追踪直到追踪到它的最上游的结点位置,也就是追踪到如图 6‑5所示的AEF结点,那么构成弧段LQ的上游路径有三条,一条是ABCL,一条是EBCL,还有一条是FGL,很明显FGL这条上游路径长度最短。

6.12  下游路径分析

方法一:根据给定的参与分析的结点ID,查询该结点下游最短路径或弧段数最少的路径。

语法:

public FacilityPathResult FacilityAnalyst.findPathDownFromNode(int nodeID,String weightName)

参数说明:

nodeID:给定的参与分析的结点ID

weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.getName()

返回值:

结果保存在FacilityPathResult类中。

如图 6‑6所示,如果利用本方法,以Q点为给定的参与分析的结点,那么进行下游最短路径分析,这里假设查找长度最短的下游路径。那么,首先找出Q点的所有下游路径,然后从其中找出长度最短的一条返回。

Q点的下游路径是指从Q点进行下游追踪直到追踪到它的最下游的结点位置,也就是追踪到如图 6‑6所示的AEF结点,那么构成Q点的下游路径有三条,一条是QLCBA,一条是QLCBE,还有一条是QLGF,很明显QLGF这条下游路径长度最短。

66 下游路径分析概念示意图

方法二:根据给定的参与分析的弧段ID,查询该弧段下游最短路径或弧段数最少的路径。

语法:

public FacilityPathResult FacilityAnalyst.findPathDownFromEdge(int edgeID,String weightName)

参数说明:

edgeID:给定的参与分析的弧段ID

weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.getName()

返回值:

结果保存在FacilityPathResult类中。

如图 6‑6所示,如果利用本方法,以弧段QL为给定的参与分析的弧段,那么进行下游最短路径分析,这里假设查找长度最短的下游路径。那么,首先找出弧段QL的所有下游路径,然后从其中找出长度最短的一条返回。

弧段QL的下游路径是指从弧段QL进行下游追踪直到追踪到它的最下游的结点位置,也就是追踪到如图 6‑6所示的AEF结点,那么构成弧段QL的下游路径有三条,一条是LCBA,一条是LCBE,还有一条是LGF,很明显LGF这条下游路径长度最短。

6.13  设施网络路径分析

方法一:根据给定的参与分析的起始和终止结点ID,查找其间最短路径或弧段数最少的路径。

语法:

public FacilityPathResult FacilityAnalyst.findPathFromNodes(int startNodeID,int endNodeID,String weightName)

参数说明:

startNodeID:起始结点ID

endNodeID:终止结点ID

weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.getName()

返回值:

结果保存在FacilityPathResult类中。

方法二:根据给定的参与分析的起始和终止弧段ID,查找其间最短路径或弧段数最少的路径。

语法:

public FacilityPathResult FacilityAnalyst.findPathFromEdges(int startEdgeID,int endEdgeID,String weightName)

参数说明:

startEdgeID:起始弧段ID

endEdgeID:终止弧段ID

weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.getName()

返回值:

结果保存在FacilityPathResult类中。

 


版权所有© 2005-2021 北京超图软件股份有限公司。保留所有权利。