数据库专题训练大作业 互联网出行

问题描述

给定10w辆出租车的经纬度和车厢乘客终点,并给定一个乘客的起止位置,找出绕路不超过10km且距离乘客不超过10km的最多五辆车。

方法

实现分成三步:

  1. 预处理阶段:预处理出一辆车上任意两人距离,以及每辆车将乘客依次送达目的地的路程D1;
  2. 遍历出租车,筛去离乘客距离超过10km的出租车;
  3. 剩下的出租车,计算接乘客路程D2,、接到乘客后依次送达的距离D3、待接乘客离自己目的地的最短距离D4。然后计算绕路距离,不超过10km的留下。

在实现中,使用metis库计算路网中的数据,包括建树和计算两点间最短距离。

完成功能

  1. 输入一个乘客位置,在可以忍受的时间内返回不超过5个有空位的出租车。所有返回的出租车与乘客距离不超过10km,若没有合适的出租车,则返回空列表;
  2. 返回的所有出租车的绕路距离不超过10km;
  3. 提供UI界面方便输入输出的交互;
  4. 使用路网数据完成大作业;
  5. (加分项) 给出建议路线。

运行方式

使用的第三方库为metis和Qt。请使用qmake或Qt Creator运行程序。程序界面如下:


image.png

图中右侧输入乘客起止坐标,点击search按钮即可获得最近的满足条件的(最多)五辆出租车。下面列出了五辆车的ID和距离乘客的距离,以及给该出租车规划的路线。点击show按钮即可查看规划路线,其中绿点表示乘客的起始坐标,红点表示乘客的终止坐标;深橙色的点表示出租车的位置,浅橙色的点为车上所有乘客的下车坐标。蓝色为路线。

你可能感兴趣的:(数据库专题训练大作业 互联网出行)