拓展篇—出租车轨迹数据计算
拓展篇—出租车轨迹数据计算

拓展篇—出租车轨迹数据计算

试题1 出租车轨迹数据计算

出租车轨迹数据隐含着出行信息,可进行交通状况、人们活动方式等分析。本题针对出租车数据,实现时间转换、速度计算、方位角计算、距离计算等功能。

一、数据文件读取(20分)

编写程序读取“出租车数据.txt”,数据内容如表1所示。数据以ASCII文本格式表示,以逗号为分隔符,以回车换行符为结尾。数据项及顺序为:车辆标识(2个字符)、运营状态(0=空车,1=载客,2=驻车,3=停运,4=其他),北京时间(YYYYMMDDHHNNSS,YYYY表示年,MM表示月,DD表示日,HH表示小时,NN表示分,SS表示秒),x(x坐标分量,以米为单位), y(y坐标分量,以米为单位)。

表1 数据内容

车辆标识,运营状态,北京时间,x,y

T2,0,20170706123247,4406023.008,522527.941

T2,0,20170706123340,4404760.859,522966.967

T2,0,20170706123434,4404320.939,524120.696

T2,0,20170706123525,4404971.927,525174.235

T2,0,20170706123620,4405145.897,526401.122

T2,0,20170706123715,4404969.163,527571.039

T2,0,20170706123901,4404771.901,530189.557

T2,0,20170706123951,4404468.483,531314.392

T2,0,20170706124041,4403225.367,531629.348

T2,0,20170706124135,4402593.718,532410.002

T2,0,20170706124229,4402988.916,533694.337

T2,0,20170706124322,4403398.169,534947.760

T2,0,20170706124417,4404306.169,535751.572

T2,0,20170706124510,4405337.935,536109.508

T2,0,20170706124603,4406129.248,536932.496

T2,0,20170706124703,4406242.241,538293.890

T2,0,20170706124753,4406677.312,539311.147

T2,0,20170706124846,4407692.609,540050.815

T2,0,20170706124941,4408659.552,541003.526

T2,0,20170706125035,4409203.573,542126.209

T2,0,20170706125129,4409666.365,543085.879

T2,0,20170706125224,4410234.755,543827.316

T2,0,20170706125317,4410778.461,544387.861

T2,0,20170706125413,4410884.696,544882.323

T2,0,20170706125620,4410505.548,545519.426

T2,0,20170706125710,4410209.126,545958.178

T2,0,20170706125803,4409691.593,546250.667

T2,0,20170706125914,4409150.848,546555.092

T2,0,20170706130009,4408685.795,547114.556

T2,0,20170706130103,4408244.312,547709.867

T2,0,20170706130158,4407708.146,548264.032

T2,0,20170706130251,4407685.017,548490.912

T2,0,20170706130345,4407689.771,549105.089

T2,0,20170706130438,4407686.207,549209.007

T2,0,20170706130533,4407685.363,549209.013

T2,0,20170706130626,4407695.307,548977.641

T2,0,20170706130721,4407696.404,548750.899

T2,0,20170706130815,4407782.937,548233.509

T2,0,20170706205550,4409506.693,546353.033

二、算法实现(60分)

对车辆标识为T2的数据,编程实现以下算法,在计算中,不考虑高程变化的影响。

  1. 将时间转换为简化儒略日格式(15分)。

由公历的年(Y)、月(M)、日(D)、时(h,世界时的小时数)、分(N)、秒(S)计算简化儒略日的计算方法为:

(1)

  1. 计算每个时段的速度,计算结果以公里/小时(km/h)为单位(15分)。
  2. 计算每个时段的方位角,计算结果以度(°)为单位,取值为0°至360°(15分)。

已知A( )、B( ),其方位角的计算公式为:

(2)

坐标方位角取值如表2所示。

表2 坐标方位角取值方式

△yAB △xAB 方位角
+ 或 – 180°+ αAB
+ 或 – + αAB
>0 0 90°
<0 0 270°

  1. 计算累积距离、开始点和终止点之间的直线距离,计算结果以公里(km)为单位(15分)。

三、计算结果报告(20分)

针对车辆标识为T2的数据,依次计算每个时段的速度、方位角,输出以下格式的计算结果。

————速度和方位角计算结果———-

时段序号, 时段开始时间(儒略历格式,保留5位小数)-时段结束时间(儒略历格式,保留5位小数),速度(km/h,保留3位小数),方位角(°,保留3位小数)

………

————距离计算结果—————–

累积距离: 以km为单位,保留3位小数

首尾直线距离: 以km为单位,保留3位小数

四、参考答案

4.1 测试数据计算结果

————速度和方位角计算结果———-

00, 57940.18943-57940.19005, 90.769, 340.820

01, 57940.19005-57940.19067, 82.317, 290.872

02, 57940.19067-57940.19126, 87.419, 58.288

03, 57940.19126-57940.19190, 81.109, 81.929

04, 57940.19190-57940.19253, 77.445, 278.590

05, 57940.19253-57940.19376, 89.183, 274.308

06, 57940.19376-57940.19434, 83.883, 285.096

07, 57940.19434-57940.19492, 92.332, 345.783

08, 57940.19492-57940.19554, 66.946, 308.977

09, 57940.19554-57940.19617, 89.584, 72.897

10, 57940.19617-57940.19678, 89.561, 71.918

11, 57940.19678-57940.19742, 79.375, 41.517

12, 57940.19742-57940.19803, 74.180, 19.132

13, 57940.19803-57940.19865, 77.550, 46.124

14, 57940.19865-57940.19934, 81.965, 85.255

15, 57940.19934-57940.19992, 79.660, 66.844

16, 57940.19992-57940.20053, 85.324, 36.074

17, 57940.20053-57940.20117, 88.850, 44.575

18, 57940.20117-57940.20179, 83.170, 64.146

19, 57940.20179-57940.20242, 71.029, 64.255

20, 57940.20242-57940.20306, 61.150, 52.526

21, 57940.20306-57940.20367, 53.043, 45.874

22, 57940.20367-57940.20432, 32.512, 77.874

23, 57940.20432-57940.20579, 21.016, 300.757

24, 57940.20579-57940.20637, 38.124, 304.043

25, 57940.20637-57940.20698, 40.379, 330.527

26, 57940.20698-57940.20780, 31.464, 330.622

27, 57940.20780-57940.20844, 47.619, 309.735

28, 57940.20844-57940.20906, 49.410, 306.561

29, 57940.20906-57940.20970, 50.471, 314.054

30, 57940.20970-57940.21031, 15.491, 275.821

31, 57940.21031-57940.21094, 40.946, 89.557

32, 57940.21094-57940.21155, 7.063, 271.964

33, 57940.21155-57940.21219, 0.055, 359.593

34, 57940.21219-57940.21280, 15.730, 272.461

35, 57940.21280-57940.21344, 14.841, 270.277

36, 57940.21344-57940.21406, 34.972, 279.495

37, 57940.21406-57940.53877, 0.327, 312.510

————距离计算结果—————–

累积距离:37.245 (km)

首尾直线距离: 24.078 (km)

图1 是用户界面示例,用以显示打开文件的内容、计算成果和保存相关内容。

图1 用户界面示例

4.2 试题说明

本题源于2017年武汉大学测绘学院夏令营编程测试。共144名同学参加测试,1名同学弃考,1名同学提交计算成果无效,考试成绩统计如图2所示。

图2 成绩统计图

特别提示

在数据文件中,时间是北京时间,而公式(1)给出的是世界时,二者相差8小时,许多同学掉到这个陷阱里了。

五、源代码下载

下载地址