计算给定点的耗费矩阵。该矩阵是一个二维 double 数组,存储了任意两点间的最小耗费。

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

语法

C#
public double[,] ComputeWeightMatrix(
	TransportationAnalystParameter parameter
)

参数

parameter
Type: SuperMap.Analyst.NetworkAnalyst..::.TransportationAnalystParameter
指定的交通网络分析参数。

返回值

一个存储任意两点间耗费的二维矩阵。

备注

该方法可以计算指定的结点(或坐标点)间的耗费矩阵。可以通过 TransportationAnalystParameter 对象的 Nodes 属性指定待计算耗费矩阵的结点,通过 Points 属性指定待计算的坐标点,注意二者互斥,如果同时设置,则只有分析前最后的设置有效。例如,先指定了结点集合,又指定了坐标点集合,然后分析,此时只对坐标点进行分析。

该方法将计算两点间的最小耗费,也就是两点间最佳路径的耗费,并且设置障碍点或障碍边有效,与 FindPath 方法的结果耗费一致。

耗费矩阵为一个等长二维数组,元素的索引与指定的被计算点的索引一致,例如,元素 [1,2] 的值为点集合中索引为 1 的点到索引为 2 的点的最小耗费。注意,计算结果包含点自身到自身的耗费,并且为 0。

示例

以下代码示例了根据输入的交通网络分析参数返回一个耗费矩阵。

下面函数中操作的网络数据集为安装目录\SampleData\changchun\下的 changchun.udb 数据源中的名为 RoadNet 的网络数据集。

CopyC#
public void ComputeWeightMatrixExample(DatasetVector networkDataset)
{
    //创建交通网络分析参数对象并相应设置属性
    TransportationAnalystSetting transportationAnalystSetting = new TransportationAnalystSetting();
    transportationAnalystSetting.NetworkDataset = networkDataset;
    transportationAnalystSetting.NodeIDField = "SmNodeID";
    transportationAnalystSetting.EdgeIDField = "SmID";
    transportationAnalystSetting.Tolerance = 89.00;

    //设置权重信息
    WeightFieldInfos weightInfos = new WeightFieldInfos();
    WeightFieldInfo weightInfo = new WeightFieldInfo();
    weightInfo.FTWeightField = "SmLength";
    weightInfo.TFWeightField = "Smlength";
    weightInfo.Name = "Name";
    weightInfos.Add(weightInfo);
    transportationAnalystSetting.WeightFieldInfos = weightInfos;

    //创建交通网络分析对象并设置分析环境对象
    TransportationAnalyst transportationAnalyst = new TransportationAnalyst();
    transportationAnalyst.AnalystSetting = transportationAnalystSetting;

    //加载网络模型
    transportationAnalyst.Load();

    //构造交通网络分析参数设置对象,设置权重名称、设置结点 ID 数组
    TransportationAnalystParameter parameter = new TransportationAnalystParameter();
    parameter.WeightName = weightInfo.Name;
    Int32[] nodes = { 3534, 3000, 3820 };
    parameter.Nodes = nodes;

    //创建耗费矩阵分析,返回二维数组
    Double[,] matrix = transportationAnalyst.ComputeWeightMatrix(parameter);
}

请参见