根据给定的结点 ID 数组,查找这些结点的共同上游弧段,返回弧段 ID 数组。

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

语法

C#
public int[] FindCommonAncestorsFromNodes(
	int[] nodeIDs,
	bool isUncertainDirectionValid
)

参数

nodeIDs
Type: array< System..::.Int32 >[]()[]
指定的结点 ID 数组。
isUncertainDirectionValid
Type: System..::.Boolean
指定不确定流向是否有效。指定为 true,表示不确定流向有效,遇到不确定流向时分析继续进行;指定为 false,表示不确定流向无效,遇到不确定流向将停止在该方向上继续查找。流向字段的值为 2 时代表该弧段的流向为不确定流向。详细介绍请参阅 BuildFacilityNetworkDirections 方法的介绍。

返回值

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

备注

有关“上游”的介绍,请参阅 TraceUpFromNode 方法。

共同上游是指多个结点(或弧段)的公共上游网络。该方法用于查找多个结点的共同上游弧段,即取这些结点的各自上游弧段的交集部分,结果返回这些弧段的弧段 ID。

如下图所示,流向如图中的箭头所示的方向,前两幅图分别是对结点 1 和结点 2 进行上游追踪的结果,查找出各自的上游弧段(绿色),第三幅图则是对结点 1 和结点 2 查找共同上游弧段(橙色),容易看出,结点 1 和结点 2 的共同上游弧段,就是它们各自的上游弧段的交集。

示例

以下代码示范了如何查找给定弧段或结点的共同上游或共同下游。

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

CopyC#
public void FindCommonAncestorsandCatchementsEdges(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[] commonAncestorsofEdges = facilityAnalyst.FindCommonAncestorsFromEdges(edgeIDs, false);
    Int32[] commonCatchmentsofEdges = facilityAnalyst.FindCommonCatchmentsFromEdges(edgeIDs, false);

    //查找给定结点的共同上游弧段和共同上游弧段
    Int32[] commonAncestorsofNodes = facilityAnalyst.FindCommonAncestorsFromNodes(nodeIDs, false);
    Int32[] commonCatchementsofNodes = facilityAnalyst.FindCommonCatchementsFromNodes(nodeIDs, false);
}

版本信息

SuperMap iObjects .NET


请参见