试题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的数据,编程实现以下算法,在计算中,不考虑高程变化的影响。
- 将时间转换为简化儒略日格式(15分)。
由公历的年(Y)、月(M)、日(D)、时(h,世界时的小时数)、分(N)、秒(S)计算简化儒略日的计算方法为:
(1)
- 计算每个时段的速度,计算结果以公里/小时(km/h)为单位(15分)。
- 计算每个时段的方位角,计算结果以度(°)为单位,取值为0°至360°(15分)。
已知A( )、B(
),其方位角的计算公式为:
(2)
坐标方位角取值如表2所示。
表2 坐标方位角取值方式
△yAB | △xAB | 方位角 |
+ 或 – | – | 180°+ αAB |
+ 或 – | + | αAB |
>0 | 0 | 90° |
<0 | 0 | 270° |
- 计算累积距离、开始点和终止点之间的直线距离,计算结果以公里(km)为单位(15分)。
三、计算结果报告(20分)
针对车辆标识为T2的数据,依次计算每个时段的速度、方位角,输出以下格式的计算结果。
时段序号, 时段开始时间(儒略历格式,保留5位小数)-时段结束时间(儒略历格式,保留5位小数),速度(km/h,保留3位小数),方位角(°,保留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小时,许多同学掉到这个陷阱里了。