该方法用来更新弧段的权值。

命名空间:  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());
}

版本信息

SuperMap iObjects .NET


请参见