根据指定的参数进行最近设施查找分析,事件点为结点 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(); }