计算给定点的耗费矩阵。该矩阵是一个二维 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); }