设施网络分析 |
利用FacilityAnalyst类中提供的方法实现相应的设施网络分析功能,下面对FacilityAnalyst类所提供的所有设施网络分析功能一一进行详细介绍,包括相关概念的介绍。
检查网络环路的方法为:
语法:
public int[] FacilityAnalyst.checkLoops()
返回值:
返回网络中为环路的网络弧段ID数组。
查找连接的环路有两个方法:
方法一:基于给定的网络结点ID数组,查找与这些结点相连接的环路。
语法:
public int[] FacilityAnalyst.findLoopsFromNodes(int[] nodeIDs)
参数说明:
nodeIDs:给定的网络结点ID数组。
返回值说明:
返回与给定的网络结点相连接的环路对应的网络弧段ID数组。
方法二:基于给定的网络弧段ID数组,查找与这些弧段相连接的环路。
语法:
public int[] FacilityAnalyst.findLoopsFromEdges(int[] edgeIDs)
参数说明:
edgeIDs:给定的网络弧段ID数组。
返回值说明:
返回与给定的网络弧段相连接的环路对应的网络弧段ID数组。
查找不相连通的弧段的方法为:
方法一:根据给定的网络结点ID数组,查找与这些结点不相连通的弧段。
语法:
public int[] FacilityAnalyst.findUnconnectedEdgesFromNodes(int[] nodeIDs)
参数说明:
nodeIDs:给定的网络结点ID数组。
返回值:
返回与给定的网络结点不相连通的网络弧段。
方法二:根据给定的网络弧段ID数组,查找与这些结点不相连通的弧段。
语法:
public int[] FacilityAnalyst.findUnconnectedEdgesFromEdges(int[] edgeIDs)
参数说明:
edgeIDs:给定的网络弧段ID数组。
返回值:
返回与给定的网络弧段不相连通的网络弧段。
查找相连通的弧段的方法为:
方法一:根据给定的网络结点ID数组,查找与这些结点相连通的弧段。
语法:
public int[] FacilityAnalyst. findConnectedEdgesFromNodes (int[] nodeIDs)
参数说明:
nodeIDs:给定的网络结点ID数组。
返回值:
返回与给定的网络结点相连通的网络弧段。
方法二:根据给定的网络弧段ID数组,查找与这些结点相连通的弧段。
语法:
public int[] FacilityAnalyst. findConnectedEdgesFromEdges (int[] edgeIDs)
参数说明:
edgeIDs:给定的网络弧段ID数组。
返回值:
返回与给定的网络弧段相连通的网络弧段。
查找到汇的弧段根据起始点或起始弧段的不同有两种方法:
方法一:根据给定的参与分析的某条弧段,查找这条弧段到汇之间的弧段,返回弧段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数组。
查找到源的弧段根据起始点或起始弧段的不同有两种方法:
方法一:根据给定的参与分析的某条弧段,查找这条弧段到源之间的弧段,返回弧段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‑1所示:假设以水流代表设施网络中流动的物质,Q点是一个汇点,那么Q点将接收水流的输入,流向如图中的箭头所示的方向,那么,图中的A、B、C、L、E、F、G结点都是Q点的上游结点,也称为Q点的上游,因为从这些结点流出的水最后都流入了Q点;而弧段AB、BC、CL、LQ、EB、FG、GL是Q点的上游弧段,也称为Q点的上游。
另外,相对于弧段LQ来说,A、B、C、L、E、F、G结点也是弧段LQ的上游结点,也称为弧段LQ的上游;而弧段AB、BC、CL、EB、FG、GL是弧段LQ的上游弧段,也称为弧段LQ的上游。
|
|
图 6‑1 上游示意图 |
方法一:获取从给定的分析结点上游追踪所流经的弧段,返回弧段ID数组。
语法:
public int[] FacilityAnalyst.traceUpFromNode(int nodeID, String weightName,boolean isLoopValid)
参数说明:
nodeID:给定的参与分析的网络结点ID值。
weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.getName()。
isLoopValid:环路是否有效,当该参数为true时, 环路有效。而当参数为false时, 环路无效。
返回值:
返回给定分析结点的上游弧段ID数组。
例子:如图 6‑1示,如果以给定的Q结点为分析点,上游追踪所流经的弧段,那么结果将返回弧段AB、BC、CL、LQ、EB、FG和GL的ID数组。
方法二:获取从给定的分析弧段上游追踪所流经的弧段,返回弧段ID数组。
语法:
public int[] FacilityAnalyst.traceUpFromEdge(int edgeID, String weightName,boolean isLoopValid)
参数说明:
edgeID:给定的参与分析的网络弧段ID值。
weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.getName()。
isLoopValid:环路是否有效,当该参数为true时, 环路有效。而当参数为false时, 环路无效。
返回值:
返回给定分析弧段的上游弧段ID数组。
如图 6‑1所示,如果以给定的弧段LQ为分析弧段,上游追踪所流经的弧段,那么结果将返回弧段AB、BC、CL、EB、FG、GL的ID数组。
概念——下游:
如图 6‑2所示:假设以水流代表设施网络中流动的物质,Q点是一个源点,水流将从Q点流出,流向如图中的箭头所示的方向,那么,图中的A、B、C、L、E、F、G结点都是Q点的下游结点,也称为Q点的下游,因为从这些结点接收了Q点流出的水;而弧段BA、CB、LC、QL、BE、GF、LG是Q点的下游弧段,也称为Q点的下游。
另外,相对于弧段QL来说,A、B、C、L、E、F、G结点也是弧段QL的下游结点,也称为弧段QL的下游;而弧段BA、CB、LC、BE、GF、LG是弧段QL的下游弧段,也称为弧段QL的下游。
|
|
图 6‑2 下游示意图 |
方法一,获取从给定的分析结点下游追踪所流经的弧段,返回弧段ID数组。
语法:
public int[] FacilityAnalyst.traceDownFromNode(int nodeID,String weightName,boolean isLoopValid)
参数说明:
nodeID:给定的参与分析的网络结点ID值。
weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.getName()。
isLoopValid:环路是否有效,当该参数为true时, 环路有效。而当参数为false时, 环路无效。
返回值:
返回给定分析结点的下游弧段ID数组。
如图 6‑2所示,如果以给定的Q结点为分析点,下游追踪所流经的弧段,那么结果将返回弧段BA、CB、LC、QL、BE、GF、LG的ID数组。
方法二,获取从给定的分析弧段下游追踪所流经的弧段,返回弧段ID数组。
语法:
public int[] FacilityAnalyst.traceDownFromEdge(int edgeID, String weightName,boolean isLoopValid)
参数说明:
edgeID:给定的参与分析的网络弧段ID值。
weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.getName()。
isLoopValid:环路是否有效,当该参数为true时, 环路有效。而当参数为false时, 环路无效。
返回值:
返回给定分析弧段的下游弧段ID数组。
如图 6‑2所示,以给定的弧段QL为分析弧段,下游追踪所流经的弧段,那么结果将返回弧段BA、CB、LC、BE、GF、LG的ID数组。
方法一:根据给定的结点ID数组,获取这些结点的共同上游弧段。
语法:
public int[]FacilityAnalyst.findCommonAncestorsFromNodes
(int[] nodeIDs,String weightName,boolean isLoopValid)
参数说明:
nodeIDs:给定的结点ID数组。
weightName:给定的权值字段信息对象的名称,WeightFieldInfo.getName()。
isLoopValid:环路是否有效,当该参数为true时, 环路有效。而当参数为false时, 环路无效。
返回值:
返回给定结点的共同上游弧段ID数组。
如图 6‑3所示,流向如图中的箭头所示的方向,如果查找Q和P点的共同上游弧段,则返回结果会返回弧段AB、BC、CL、EB、GL和FG的ID数组。
|
|
图 6‑3 共同上游概念示意图 |
方法二:根据给定的弧段ID数组,获取这些弧段的共同上游弧段。
语法:
public int[]FacilityAnalyst.findCommonAncestorsFromEdges
(int[] edgeIDs,String weightName,boolean isLoopValid)
参数说明:
nodeIDs:给定的弧段ID数组。
weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.getName()。
isLoopValid:环路是否有效,当该参数为true时, 环路有效。而当参数为false时, 环路无效。
返回值:
返回给定弧段的共同上游弧段ID数组。
如图 6‑3所示,流向如图中的箭头所示的方向,如果查找弧段LQ和MP的共同上游弧段,则返回结果会返回弧段AB、BC、CL、EB、GL和FG的ID数组。
方法一:根据给定的结点ID数组,获取这些结点的共同下游弧段。
语法:
public int[] FacilityAnalyst.findCommonCatchementsFromNodes(int[] nodeIDs,String weightName,boolean isLoopValid)
参数说明:
nodeIDs:给定的结点ID数组。
weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.getName()。
isLoopValid:环路是否有效,当该参数为true时, 环路有效。而当参数为false时, 环路无效。
返回值:
返回给定结点的共同下游弧段ID数组。
如图 6‑4所示,流向如图中的箭头所示的方向,如果查找Q和P点的共同下游弧段,则返回结果会返回弧段BA、CB、LC、BE、LG和GF的ID数组。
|
|
图 6‑4 共同下游概念示意图 |
方法二:根据给定的弧段ID数组,获取这些弧段的共同下游弧段。
语法:
public int[] FacilityAnalyst.findCommonCatchmentsFromEdges(int[] edgeIDs,String weightName,boolean isLoopValid)
参数说明:
nodeIDs:给定的弧段ID数组。
weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.getName()。
isLoopValid:环路是否有效,当该参数为true时, 环路有效。而当参数为false时, 环路无效。
返回值:
返回给定弧段的共同下游弧段ID数组。
如图 6‑4所示,流向如图中的箭头所示的方向,如果查找弧段QL和PM的共同下游弧段,则返回结果会返回弧段BA、CB、LC、BE、LG和GF的ID数组。
方法一:根据给定的参与分析的结点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所示的A、E、F结点,那么构成Q点的上游路径有三条,一条是ABCLQ,一条是EBCLQ,还有一条是FGLQ,很明显FGLQ这条上游路径长度最短。
|
|
图 6‑5 上游路径分析概念示意图 |
方法二:根据给定的参与分析的弧段ID,查询该弧段上游最短路径或弧段数最少的路径。
语法:public FacilityPathResult FacilityAnalyst.findPathUpFromEdge(int edgeID,String weightName)
参数说明:
edgeID:给定的参与分析的弧段ID。
weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.getName()。
返回值:
结果保存在FacilityPathResult类中。
如图 6‑5所示,如果利用本方法,以弧段LQ为给定的参与分析的弧段,那么进行上游最短路径分析,这里假设查找长度最短的上游路径。那么,首先找出弧段LQ的所有上游路径,然后从其中找出长度最短的一条返回。
弧段LQ的上游路径是指从弧段LQ进行上游追踪直到追踪到它的最上游的结点位置,也就是追踪到如图 6‑5所示的A、E、F结点,那么构成弧段LQ的上游路径有三条,一条是ABCL,一条是EBCL,还有一条是FGL,很明显FGL这条上游路径长度最短。
方法一:根据给定的参与分析的结点ID,查询该结点下游最短路径或弧段数最少的路径。
语法:
public FacilityPathResult FacilityAnalyst.findPathDownFromNode(int nodeID,String weightName)
参数说明:
nodeID:给定的参与分析的结点ID。
weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.getName()。
返回值:
结果保存在FacilityPathResult类中。
如图 6‑6所示,如果利用本方法,以Q点为给定的参与分析的结点,那么进行下游最短路径分析,这里假设查找长度最短的下游路径。那么,首先找出Q点的所有下游路径,然后从其中找出长度最短的一条返回。
Q点的下游路径是指从Q点进行下游追踪直到追踪到它的最下游的结点位置,也就是追踪到如图 6‑6所示的A、E、F结点,那么构成Q点的下游路径有三条,一条是QLCBA,一条是QLCBE,还有一条是QLGF,很明显QLGF这条下游路径长度最短。
|
|
图 6‑6 下游路径分析概念示意图 |
方法二:根据给定的参与分析的弧段ID,查询该弧段下游最短路径或弧段数最少的路径。
语法:
public FacilityPathResult FacilityAnalyst.findPathDownFromEdge(int edgeID,String weightName)
参数说明:
edgeID:给定的参与分析的弧段ID。
weightName:给定的权值字段信息对象的名称,即WeightFieldInfo.getName()。
返回值:
结果保存在FacilityPathResult类中。
如图 6‑6所示,如果利用本方法,以弧段QL为给定的参与分析的弧段,那么进行下游最短路径分析,这里假设查找长度最短的下游路径。那么,首先找出弧段QL的所有下游路径,然后从其中找出长度最短的一条返回。
弧段QL的下游路径是指从弧段QL进行下游追踪直到追踪到它的最下游的结点位置,也就是追踪到如图 6‑6所示的A、E、F结点,那么构成弧段QL的下游路径有三条,一条是LCBA,一条是LCBE,还有一条是LGF,很明显LGF这条下游路径长度最短。
方法一:根据给定的参与分析的起始和终止结点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类中。