河北工业大学2015届毕业论文
察获取的二进制状态值可知最长字符串长度为16位,故补充后的状态值字符串长度至少为16位,本文中将其补为17位,具体数据处理流程如图2-4所示。
开始 将总共数据记录条数赋值给 rownum,并定义循环变量i=2 将第i行STATE值赋值给变量b 用b除以2,将余数赋值给字符 串变量a,将商重新赋值给b b=0 N 用b除以2,将余数添加到 a的左侧,将商重新赋值给b b=0 Y 输出a,a即转换后的十进制 数字,i=i+1 i>rownum Y 结束 N N Y 图2-4 数据长度统一流程图
(3)在字符长度统一的二进制状态值中选出自右向左第10位,也就是自左向右第8位,便是出租车的空重载状态值,其中1表示车上有乘客,0表示车上没有乘客。
12
河北工业大学2015届毕业论文
(4)对出租车空重载状态值做差,自除表头以外的第二行数据开始,依次用下一行的空重载状态值减去上一行空重载状态值,若差值为1表示空重载状态值由0变为1,即出租车由空载变为重载,说明此时有乘客上车,出租车所在位置为乘客出发地,若差值为-1表示空重载状态值由1变为0,即出租车由重载变为空载,说明此时有乘客下车,出租车所在位置为乘客目的地。
(5)为了便于之后对数据的操作与处理,需要对数据进行精简,去掉其中空重载状态值差值为0的数据记录,因为这一部分对于OD矩阵的获取不是必要的,只要保留空重载状态值差值为1和-1的数据记录即可,由于在excel中利用VBA处理数据进行整行数据的删除时数据处理速度较慢,耗费时间较长,因此在这里采用筛选的方法,选出空重载状态值差值为1或者-1的数据放入另一个表格中。 2.2.3 对数据进行异常值处理
这一步目的在于剔除得到的数据中不可用的数据,具体操作流程如图2-5所示。 首先如果表格内第一条数据的状态值差值为-1则应删除,因为如果表格内第一条数据的状态值差值为-1说明此辆出租车在这一天内发生的第一个状态转换为由重载变为空载,造成这种情况的原因可能为三种,首先可能是当时时间临近午夜,乘客上车动作发生在前一天;其次可能是在前面剔除数据时将乘客上车动作发生的数据剔掉了;最后可能是数据存在错误,以上三种情况均不能获取完整的一个OD对,所以应该删除;其次,除了第一条数据以外,还可能有不能进行OD配对的数据,可能会出现1或者是-1连续出现的情况,原因如上面所说可能是之前对经纬度越界的数据剔除时将其对应的乘客上车动作或者是乘客下车动作发生的数据记录剔除掉了,也可能是数据出现了问题,但是不论原因如何,都应该对其进行处理,通过分析可知对于连续重复的1或者-1都是只保留最后一个数值是最合理的,将其之前的都予以删除。
13
河北工业大学2015届毕业论文
开始 第一行数据上下车 字符段数值为1 Y 上下车字符段中是否有连续重复的数字 N 结束 删除重复数据中除第一条外其他的重复数据 Y N 删除第一行数据 图2-5 数据异常值处理流程
通过以上步骤便可以获取乘客上下车地点,即O点和D点,数据处理结果见附录A图1。将各个上下车点大致分布如图2-6和图2-7、图2-8所示,其中图2-9是选取的哈尔滨市中央大街附近区域,由于本文只选取了1%的数据作为样本,故上下车点实际的密度要远大于图中所示。本章中利用VB进行数据处理所需代码请参看附录A。
14
河北工业大学2015届毕业论文
图2-6 上车点分布
图2-7 下车点分布
15
河北工业大学2015届毕业论文
图2-8 上下车点分布
2.3 本章小结
在本章中主要以出租车初始数据的处理为例对浮动车初始数据的处理过程进行了说
明。首先分析了数据处理的思路;然后是利用oracle作为中间媒介,将dmp格式的文件转化为excel可以处理的格式;最后,利用VBA对数据进行处理,得到了各个O、D点的信息。
16