根据给定的结点 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); }