程序集: 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 对象有两种方式可以指定服务中心点的位置:
- 设置 Nodes 属性,以网络数据集中结点 ID 数组的形式指定服务中心点,因此分析过程中使用到的服务中心点就是相应的网络结点。
- 设置 Points 属性,以服务中心点的坐标点串的形式指定服务中心点,因此分析过程中使用到的服务中心点就是相应的坐标点集合。
是否从中心点分析
是否从中心点开始分析,体现了服务中心和需要该服务的需求地的关系模式。从中心点开始分析,表示服务中心向服务需求地提供服务;而不从中心点开始分析,则代表服务需求地主动到服务中心获得服务。例如:某个奶站向各个居民点送牛奶,如果要对这个奶站进行服务区分析,查看这个奶站在允许的条件下所能服务的范围,那么在实际分析过程中应当使用从中心点开始分析的模式;另一个例子,如果想分析一个区域的某个学校在允许的条件下所能服务的区域时,由于在现实中都是学生主动来到学校学习,接受学校提供的服务,那么在实际分析过程中就应当使用不从中心点开始分析的模式。
服务区分析种类
若两个或多个相邻的服务区有交集,可将它们进行互斥处理。互斥处理后,这些服务区不会有交叠。如下图所示,左图未进行互斥处理,右图进行了互斥处理。
服务区种类
服务区分析有两种。有简单服务区分析和详细服务区分析。选择简单服务区,将构造能覆盖结果路由的凸面作为结果服务区面。选择详细服务区,生成的分析结果会严格按照结果路由生成面轮廓结果。相较于简单服务区,详细服务区更能准确的对服务区进行建模。
示例
以下代码示范了如何进行服务区分析。
下面函数中操作的网络数据集为安装目录\SampleData\changchun\下的 changchun.udb 数据源中的名为 RoadNet 的网络数据集。
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); }