根据指定的参数进行最近设施查找分析,事件点为结点 ID。

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

语法

C#
public TransportationAnalystResult FindClosestFacility(
	TransportationAnalystParameter parameter,
	int eventID,
	int facilityCount,
	bool isFromEvent,
	double maxWeight
)

参数

parameter
Type: SuperMap.Analyst.NetworkAnalyst..::.TransportationAnalystParameter
交通网络分析参数对象。
eventID
Type: System..::.Int32
事件点 ID。
facilityCount
Type: System..::.Int32
要查找的设施点数量。
isFromEvent
Type: System..::.Boolean
是否从事件点到设施点进行查找。
maxWeight
Type: System..::.Double
查找半径。单位同网络分析环境中设置的阻力字段,如果要查找整个网络,该值设为0。

返回值

分析结果对象。

备注

最近设施查找分析是指在网络上给定一个事件点和一组设施点,为事件点查找以最小耗费能到达的一个或几个设施点,结果为从事件点到设施点(或从设施点到事件点)的最佳路径。

有关最近设施查找分析的详细介绍,请参见另一重载方法 FindClosestFacility 方法。这两个方法的区别在于,该方法通过坐标点指定事件点,而本方法通过结点 ID 指定事件点。

Note:

事件点和设施点必须为相同的类型,即都以坐标点形式指定,或都以结点 ID 形式指定。本方法要求设施点与事件点均为结点 ID,即需要通过 TransportationAnalystParameter 对象的 Nodes 属性来设置设施点。

示例

以下代码示例了如何根据指定的参数进行最近设施查找分析。

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

CopyC#
public void FindClosesetFacilityExample(DatasetVector networkDataset, DatasetVector pointDataset)
{
    //创建交通网络分析参数对象并相应设置属性
    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();

    //从设施点数据集中直接得到记录集
    Recordset recordset = pointDataset.GetRecordset(false, CursorType.Dynamic);

    //获取医院的 ID 赋值给途径结点 ID
    Int32[] nodes = new Int32[recordset.RecordCount];
    for (Int32 i = 0; i < recordset.RecordCount; i++)
    {
        nodes[i] = i;
    }

    //构造交通网络分析参数对象,设置其属性
    TransportationAnalystParameter parameter = new TransportationAnalystParameter();
    parameter.Nodes = nodes;
    parameter.WeightName = weightInfo.Name;
    parameter.IsEdgesReturn = true;
    parameter.IsNodesReturn = true;
    parameter.IsRoutesReturn = true;

    //进行最近设施分析
    Int32 eventPoint = 100;
    Int32 facilityCount = 3;
    Double maxWeight = 0;
    TransportationAnalystResult result = transportationAnalyst.FindClosestFacility(parameter, eventPoint, facilityCount, true, maxWeight);

    //释放资源
    recordset.Dispose();
}

请参见