该方法用来更新弧段的权值。
命名空间:
SuperMap.Analyst.NetworkAnalyst程序集: SuperMap.Analyst.NetworkAnalyst (in SuperMap.Analyst.NetworkAnalyst)
版本: dll
语法
C# |
---|
public double UpdateEdgeWeight( int edgeID, int fromNodeID, int toNodeID, string weightName, double weight ) |
参数
- edgeID
- Type: System..::.Int32
被更新的弧段的 ID。
- fromNodeID
- Type: System..::.Int32
被更新的弧段的起始结点 ID。
- toNodeID
- Type: System..::.Int32
被更新的弧段的终止结点 ID。
- weightName
- Type: System..::.String
被更新的权值字段所属的权值字段信息对象的名称,即在交通网络分析环境(TransportationAnalystSetting)中指定的 WeightFieldInfos 对象中相应的 WeightFieldInfo 对象的 Name 属性的值。
- weight
- Type: System..::.Double
权值,即用该值更新旧值。单位与 weightName 指定的权值信息字段对象中权值字段的单位相同。
返回值
成功返回更新前的权值,失败返回 Double.MinValue。备注
该方法用于对加载到内存中的网络模型的弧段权值进行修改,并不会修改网络数据集。
该方法可以更新弧段的正向权值或反向权值。正向权重是指从弧段的起始结点到达终止结点的花费,反向权值为从弧段的终止结点到达起始结点的花费。因此,指定 fromNodeID 为网络数据集中被更新弧段的起始结点 ID,toNodeID 为该弧段的终止结点 ID,则更新正向权值,反之,指定 fromNodeID 为网络数据集中该弧段的终止结点 ID,toNodeID 为该弧段的起始结点 ID,则更新反向权值。
注意,权值为负数表示弧段在该方向禁止通行。
示例
以下代码示例如何更新弧段的权值,并将修改前与修改后的权值在控制台输出。
下面函数中操作的网络数据集为安装目录\SampleData\changchun\下的 changchun.udb 数据源中的名为 RoadNet 的网络数据集。
CopyC#
public void UpdateEdgeWeightExample(DatasetVector networkDataset) { //创建交通网络分析对象和交通网络分析参数对象并相应设置属性 TransportationAnalyst transportationAnalyst = new TransportationAnalyst(); TransportationAnalystSetting transportationAnalystSetting = new TransportationAnalystSetting(); transportationAnalystSetting.NetworkDataset = networkDataset; transportationAnalyst.AnalystSetting = transportationAnalystSetting; //加载网络模型 transportationAnalyst.Load(); //构建一个交通网络分析参数对象 TransportationAnalystParameter parameter = new TransportationAnalystParameter(); parameter.Nodes = new Int32[] { 6901, 6783 }; TransportationAnalystResult result1 = transportationAnalyst.FindPath(parameter, true); Console.WriteLine("The weight is {0}", result1.Weights[0].ToString()); //修改更新弧段的权值 transportationAnalyst.UpdateEdgeWeight(10, 6901, 6783, "Length", 200); TransportationAnalystResult result2 = transportationAnalyst.FindPath(parameter, true); Console.WriteLine("The weight is {0}", result2.Weights[0].ToString()); }