根据指定的参数进行服务区分析。

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

语法

C#
public ServiceAreaResult FindServiceArea(
	TransportationAnalystParameter parameter,
	double[] weights,
	bool isFromCenter,
	bool isCenterMutuallyExclusive
)

参数

parameter
Type: SuperMap.Analyst.NetworkAnalyst..::.TransportationAnalystParameter
交通网络分析参数对象。
weights
Type: array< System..::.Double >[]()[]
服务区半径数组。数组长度应与给定的服务中心点的数量一致,且数组元素按照顺序与中心点一一对应。服务区半径的单位与指定的权值信息中的正向、反向阻力字段的单位一致。
isFromCenter
Type: System..::.Boolean
是否从中心点开始分析。
isCenterMutuallyExclusive
Type: System..::.Boolean
是否进行服务区互斥处理。如果设置为 true,则进行互斥处理,设置为 false,则不进行互斥处理。

返回值

服务区分析结果对象。

备注

服务区是以指定点为中心,在一定阻力范围内,包含所有可通达边、通达点的一个区域。服务区分析就是依据给定的阻力值(即服务半径)为网络上提供某种特定服务的位置(即中心点)查找其服务的范围(即服务区)的过程。阻力可以是到达的时间、距离或其他任何花费。例如:为网络上某点计算其 30 分钟的服务区,则结果服务区内,任意点出发到该点的时间都不会超过 30 分钟。

服务区分析的结果包含了每个服务中心点所能服务到的路由和区域。路由是指从服务中心点出发,按照阻力值不大于所指定的服务半径的原则,沿网络弧段延伸出的路径;服务区则是按照一定算法将路由包围起来所形成的面状区域。如下图所示,红色圆点代表提供服务或资源的服务中心点,各种颜色的面状区域就是以相应的服务中心点为中心,在给定的阻力范围内的服务区,每个服务中心点所服务到的路由也以对应的颜色标示。

调用本方法时,需要通过 parameter 参数指定一个交通分析参数设置(TransportationAnalystParameter)对象,通过该对象的方法指定服务区分析的有关参数,包括服务区的位置、权值(即阻力)信息、障碍信息,以及分析结果中是否返回行驶导引、路由对象、经过的弧段和结点的集合等。

服务中心点

通过 TransportationAnalystParameter 对象有两种方式可以指定服务中心点的位置:

  1. 设置 Nodes 属性,以网络数据集中结点 ID 数组的形式指定服务中心点,因此分析过程中使用到的服务中心点就是相应的网络结点。
  2. 设置 Points 属性,以服务中心点的坐标点串的形式指定服务中心点,因此分析过程中使用到的服务中心点就是相应的坐标点集合。

是否从中心点分析

是否从中心点开始分析,体现了服务中心和需要该服务的需求地的关系模式。从中心点开始分析,表示服务中心向服务需求地提供服务;而不从中心点开始分析,则代表服务需求地主动到服务中心获得服务。例如:某个奶站向各个居民点送牛奶,如果要对这个奶站进行服务区分析,查看这个奶站在允许的条件下所能服务的范围,那么在实际分析过程中应当使用从中心点开始分析的模式;另一个例子,如果想分析一个区域的某个学校在允许的条件下所能服务的区域时,由于在现实中都是学生主动来到学校学习,接受学校提供的服务,那么在实际分析过程中就应当使用不从中心点开始分析的模式。

服务区互斥

若两个或多个相邻的服务区有交集,可将它们进行互斥处理。互斥处理后,这些服务区不会有交叠。如下图所示,左图未进行互斥处理,右图进行了互斥处理。

示例

以下代码示范了如何进行服务区分析。

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

CopyC#
public void FindServiceArea(DatasetVector networkDataset)
{
    //创建交通网络分析对象和交通网络分析参数对象并相应设置属性
    TransportationAnalystSetting setting = new TransportationAnalystSetting();
    setting.NetworkDataset = networkDataset;
    TransportationAnalyst transportationAnalyst = new TransportationAnalyst();
    transportationAnalyst.AnalystSetting = setting;

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

    //构建并设置交通网络分析参数对象
    TransportationAnalystParameter parameter = new TransportationAnalystParameter();
    parameter.Nodes = new Int32[] { 3, 40 };
    parameter.IsRoutesReturn = true;

    //进行网络分析,查找服务区
    ServiceAreaResult serviceAreaResult = transportationAnalyst.FindServiceArea(parameter, new Double[] { 28, 50 }, false, false);
}

请参见