SuperMap公交换乘分析过程全解析

作者:xinxin

最近遇到好几个客户用SuperMap产品做公交换乘的项目,在支持的过程中发现客户遇到的问题主要在数据的制作和公交换乘分析。下面我将结合项目支持中遇到的问题对公交换乘功能从数据制作到最后分析出结果做一个简单的解析。
在解析前大家要知道公交换乘分析的流程:
这里写图片描述
1. 数据制作
从流程中我们知道首先准备公交数据,公交数据主要包括5种:公交站点数据、公交路线数据、公交站点与路线关系数据、站点与出入口关系数据和网络数据集,其中公交站点与路线关系数据是用来存储每条路线上有哪些站点的对应关系。下面将详细介绍各数据的制作方法和需要注意的地方:
(1)公交站点数据:是一种点数据集,其中每一个对象表示一个公交站台。
该数据必设字段说明如下表:

在公交站点环境设置类StopSetting中需要使用这两个字段。
站点数据截图:

(2)公交线路数据:是一个线数据集,其中每一个线对象代表一条有向公交线路,即从 A 到 B 与 从 B 到 A 为两个线不同的对象。
该数据必设字段说明如下表:

在公交线路环境设置类LineSetting中需要使用这两个字段。
该数据的重要字段说明如下表,这些信息可以为公交分析尤其是公交换乘分析的换乘方案的优先选择、出行花费等提供依据:
SuperMap公交换乘分析过程全解析_第1张图片
路线数据截图:

(3)公交站点与线路关系数据:是一个属性数据集,存储了每条路线经过哪些站点的对应关系。
该数据必设字段说明如下表:
SuperMap公交换乘分析过程全解析_第2张图片
在公交关系设置类RelationSetting中需要使用这两个字段。
在该数据中还可以设置一个表示路线上各站点的序号的字段(StationID),在一条路线中序号值要递增,不要设置成往返值。
关系表数据截图:

(4)站点与出入口关系数据:该数据为一个二维线数据集,其中每一个线对象代表从某站点(或出入口)到某出入口(或站点)的路径。该数据中必备字段和说明如下表:

如果项目中用到这个数据需要在公交关系设置类RelationSetting中设置对应的参数。
举例:
首先获得站点P,然后通过百度或者其他软件找到该站点的各个出入口A、B、C,图1所示;然后手动绘制出站点P分别到A、B、C出入口的线路,图2所示;最后在属性中添加上表中4个字段的相关内容,图3所示。

图1

图2
SuperMap公交换乘分析过程全解析_第3张图片
图3
(5)网络数据集:是公交分析区域道路的网络数据集,可以有分析区域的道路线生成网络数据集,该数据集中有节点标识(NodeID)、弧度标识(EdgeID)弧度起始点标识(FNodeID)和弧度终止点标识(TNodeID),如果在分析中用到这个网络数据集在公交关系设置类RelationSetting需要设置对应的参数。添加这个数据集在换乘分析时系统会根据网络数据集中的弧段、结点及两者间的空间拓扑关系信息,给出与实际一致的行走路线。相反,如果没有设置网络数据集,则一段步行的起点和终点间是以直线连接的。
小编经验之谈:在项目中常用的是前3种数据,站点和出入口关系数据在涉及到地铁时会用到。而其中关系表数据是使用者容易出错的地方,我认为有2种比较好的方法来制作:(1)根据路线ID来做,即每一条路线依次经过哪些站点,这样不容易丢数据;(2)可以在点数据集中把每个站点对应的路线信息也添加到属性表中,这个点数据集的属性表就可以作为关系表数据。
2. 公交分析环境设置
数据制作初步完成了,接下来需要设置公交分析环境,包括公交站点环境设置、公交路线环境设置、公交关系设置、站点与出入口的关系设置、公交站点扑捉容限、公交站点归并容限、步行阈值等,这些设置直接影响到最终的分析结果。下面是部分代码片段:

小编经验之谈:这里将站点捕捉容限设置了50米,需要注意的是站点捕捉容限不要设置过大了,一般站点位置到线路最多也就几十米,设置太大了可能会出现不符合实际情况的线路。
3. 数据检查
分析的环境设置好了,我们还需要检查数据(网络数据除外)是否符合公交分析数据的规范,如果数据本身就有问题,不规范对后面的公交分析有致命的影响。下面小编带大家看一下数据检查中常见的问题和相应的解决方法。
既然是数据检查肯定会有对应的检查接口,如下:

SuperMap公交换乘分析过程全解析_第4张图片
从上面表中可以看出数据检查时对应数据集生成的字段(Sm_ErrorInfo)可能出现的错误信息,如线数据集中可能出现这个错误信息:
这里写图片描述
然后在站点线路关系表中查找线路会发现下图:
SuperMap公交换乘分析过程全解析_第5张图片
从截图中可以看出点线关系表中很多站点ID不在点数据集中,所以修改方案为:首先将该线路的站点加入到站点数据集中,或者修改ID值,其次在关系表中将关系对应填写正确。
其它的错误也是按照这个思路来检查和解决,即首先通过调用检查接口检查,查看数据是否有字段错误信息,如果有根据错误信息在数据集中通过编辑修改。
小编经验之谈:使用者需要应反复检查反复修改直至没有错误被检查出来,之后才能通过 load法加载公交数据。
4. 数据加载
数据检查无误后加载公交数据:
Boolean isLoad = transferAnalyst.load(transferAnalystSetting);
5. 换乘分析
数据加载后做最后的换乘分析,首先设置公交换乘分析参数类(TransferAnalystParameter),包括分析的起始点(或起始站点 ID)和终止点(或终止站点 ID)、最大换乘导引次数、步行与公交的权重比、换乘策略与偏好,以及优先和避让的站点、线路集合等;然后通过方法TransferAnalyst.findTransferSolutions(TransferAnalystParameter parameter)得到分析的最后结果如图:

小编经验之谈:上面的效果图是在SuperMap iObjects Java 7.2版本上面运行的,建议客户使用高版本,得到效果更好。

你可能感兴趣的:(数据,supermap)