根据给定的结点 ID 数组,查找与这些结点相连通弧段,返回弧段 ID 数组。

命名空间:  SuperMap.Analyst.NetworkAnalyst
程序集:  SuperMap.Analyst.NetworkAnalyst (in SuperMap.Analyst.NetworkAnalyst)
版本: dll

语法

C#
public int[] FindConnectedEdgesFromNodes(
	int[] nodeIDs
)

参数

nodeIDs
Type: array< System..::.Int32 >[]()[]
指定的结点 ID 数组。

返回值

弧段 ID 数组。

备注

在现实生活中,点与点之间并不总是连通的,如果我们想要知道哪些点之间是连通的,哪些点之间不连通,就可以使用连通性分析功能。连通性分析的最大特点是不需要考虑网络阻力值的大小(禁止通行除外),网络上的结点和弧段只有连通和不连通之分。禁止通行可以通过设置障碍点和障碍边实现。

如下图所示,绿色部分是与分析结点相连通的弧段与结点,它们中的每一个都通过其他结点或弧段连接到分析结点;灰色部分的网络中的弧段与结点,无法连接到分析结点,因此与分析结点是不连通的。

该方法用于查找与给定结点相连通的弧段,查找出连通弧段后,可根据网络拓扑关系,即弧段的起始结点、终止结点查询出相应的连通结点。

应用实例

在进行污染源调查的事件中,经过分析和判断之后发现可疑污染源的位置,可以通过查找连通弧段功能找出与可疑的污染源点相连的水路,以方便监测船沿路监测污染物含量。

示例

以下代码示范了如何查找与给定结点或弧段相连通或不相连通的弧段。

假设下面函数操作的网络数据集为安装目录\SampleData\changchun\下的 changchun.udb 数据源中的名为 RoadNet 的网络数据集,并且已经为该网络数据集建立了流向以及等级。 有关建立网络数据集的流向及等级,请参见 NetworkBuilder.BuildFacilityNetworkDirections 方法。

CopyC#
public void FindConnectedandUnconnectedEdges(DatasetVector networkDataset)
{
    //设置用于设施网络分析的环境
    FacilityAnalystSetting facilityAnalystSetting = new FacilityAnalystSetting();
    facilityAnalystSetting.NetworkDataset = networkDataset;
    facilityAnalystSetting.DirectionField = "Direction";
    facilityAnalystSetting.EdgeIDField = "SmID";
    facilityAnalystSetting.NodeIDField = "SmNodeID";
    facilityAnalystSetting.FNodeIDField = "SmFNode";
    facilityAnalystSetting.TNodeIDField = "SmTNode";
    facilityAnalystSetting.Tolerance = 0.0015;
    WeightFieldInfo weightFieldInfo = new WeightFieldInfo();
    weightFieldInfo.Name = "Length";
    weightFieldInfo.FTWeightField = "SmLength";
    weightFieldInfo.TFWeightField = "SmLength";
    WeightFieldInfos weightFieldInfos = new WeightFieldInfos();
    weightFieldInfos.Add(weightFieldInfo);
    facilityAnalystSetting.WeightFieldInfos = weightFieldInfos;
    FacilityAnalyst facilityAnalyst = new FacilityAnalyst();
    facilityAnalyst.AnalystSetting = facilityAnalystSetting;
    facilityAnalyst.Load();

    //获取参与分析的弧段或结点
    Int32[] edgeIDs = new Int32[] { 3855, 9073 };
    Int32[] nodeIDs = new Int32[] { 2996, 2682 };

    //查找与给定弧段相连通和不相连通的弧段
    Int32[] connectEdges = facilityAnalyst.FindConnectedEdgesFromEdges(edgeIDs);
    Int32[] unconnectEdges = facilityAnalyst.FindUnconnectedEdgesFromEdges(edgeIDs);

    //查找与给定的结点相连通和不相连通的弧段
    Int32[] connectNodes = facilityAnalyst.FindConnectedEdgesFromNodes(nodeIDs);
    Int32[] unconnectNodes = facilityAnalyst.FindUnconnectedEdgesFromNodes(nodeIDs);
}

请参见