服务器端功能组件交互设计本文的上一节中对公交实时查询系统服务端进行了功能组件划分,并介绍了各功能组件的作用,接下来选择两个典型的应用场景对功能组件间的交互方式进行阐述。1、用户实时位置采集和聚类分析场景系统进行用户实时位置采集和聚类分析时,服务器端对应组件的交互过程如图4-3所示。图4-3用户实时位置采集和聚类分析场景组件交互图1解析数据,解析后的数据存入数据库中对应的数据表中。2)服务器端的用户位置数据聚类组件按照约定的时间周期,定期从数据库中抽取最新的用户位置数据,然后使用聚类算法获得公交车所在的公交线路和当前位置,将此结果永久保存到数据库中。3)公交实时数据统计组件按照约定的周期,定期从数据库中读取最新的聚类计算结果,再对聚类分析输出数据进一步统计分析,得到当前各个路段的路况,将路况数据永久保存到数据库中。4)公交历史数据统计组件根据系统需要,按月或按周从数据库中获取这段周期时间内公交车的运行数据,计算出各路段各周期同时段内的道路拥堵情况变化数据,并根据统计结果修正公交历史统计数据,永久存入到数据库中。2、用户查询实时公交出行方案场景在用户查询实时公交出行方案场景中,服务器端对应组件的交互过程如图4-4所示。图4-4用户查询实时公交出行方案场景组建交互图1)用户从客户端输入出发地点、目的地点等参数,向服务器端提交请求,查询实时的公交出行方案。服务器端出行方案查询接口接收查询请求并转发查询参数至出行方案计算组件。2)用户的查询参数输入到出行方案计算组件后,出行方案计算组件后根据内部的换乘逻辑算法,从数据库中抽取所需数据进行计算,输出一系列可选的公交出行方案,反馈给出行方案查询接口。3)出行方案查询接口接收出行方案计算组件发送来的乘车方案数据后,再根据乘车方案中的公交车次向公交运行状态查询接口发送查询公交实时运行状态信息的请求,此接口接收到请求信息,通过使用公交运行状态计算组件抽取数据库中对应的公交车实时状态数据,并将实时状态数据反馈给出行方案查询接口。4)出行方案查询接口将可选的公交出行换乘方案数据与公交车实时状态数据进行叠加,结合用户设定的偏好设置,按照用户的偏好计算各个出行方案的权值,根据权值排序,将排好序的实时公交出行路线以XML文件的方式反馈给客户端供用户查看。服务器端功能实现服务端的主要功能模块包括:用户汇报GPS信息计算、到站时间计算、公交换乘方案推荐、公交路线查询。其中到站计算功能是在用户汇报GPS信息计算功能的计算结果基础上,进一步分析得到的,本文着重对用户汇报GPS信息计算、公交换乘方案推荐两个功能模块的实现进行阐述。用户汇报GPS信息计算用户汇报GPS信息计算功能收集用户汇报的离散GPS位置信息数据,使用类聚算法间进行数据类聚分析,在同一辆公交车上的用户可以聚类到一起,不同公交车上的用户的以区分,实现聚类簇状态跟踪,通过获得聚类簇经过的站点和路段来判定公交车的路线,同时实时抓取聚类簇经过站点的时间,进一步计算车辆在对应路段的运行时间和运行状态。主要有用户位置数据采集组件和用户位置数据采集组件共同实现。用户使用客户端来上报GPS位置数据,服务端GPS信息计算功能在eclipse中实现,采用语言是java开发语言,本系统通过调用百度地都来实现GPS的定位,下面是代码内容:uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>