#基于出租车GPS数据分析深圳交通拥堵情况
- 格式:doc
- 大小:1.31 MB
- 文档页数:15
基于出租车GPS数据分析深圳交通拥堵情况解放军信息工程大学谷继亮、王龙、赵宸立
摘要:本文基于出租车GPS数据,从区域交通量OD分布角度出发,结合深圳市交通地图,研究深圳市交通小区的划分,建立载客出租车和人们出行的OD 时空分布,分析筛选出拥堵的路段时段以及拥堵的路口时段。
本文特点在于把经过处理的数据显示在地里信息系统软件上,并结合马克威分析系统完成小区的划分以及交通拥堵模型的检验。
首先,采用随机抽样的方法获取数据样本,并利用C++编程对数据进行优化处理,得到出租车载客起讫点时刻的GPS数据,基于聚类和交通小区划分的相似性原理,利用马克威分析系统中的快速聚类方法进行交通小区的划分,共求得200个小区以及各小区的坐标。
其次,利用合理假设,建立交通量OD分布概率模型,采用Bayes方法对模型的参数进行估计、对模型的整体拟合效果进行了检验,利用马克威分析系统处理数据得出小区交通量,进而求解出交通量的OD分布。
再次,根据各区域总体居民出行时耗(出行距离)和出行比例的总体分布,将交通小区发生量离散为不同出行时耗(出行距离)区间上的出行量,并将相应区间内的出行量按区间所包含的交通吸引小区的面积及吸引量大小进行分配,得到了人们出行时耗特征图。
最后,根据出租车载客后的行驶数据,编写程序筛选出有用的数据,并且把这些数据显示在GIS上,查找车辆比较拥堵的路段以及拥堵的路口时段。
通过马克威分析系统软件处理GPS数据,得到各个路段的车辆数据。
关键字:交通小区、OD分布概率模型、聚类分析、马克威分析系统
一、问题的提出
近年来,随着国民经济的快速增长,人流、物流、信息流以前所未有的密度涌向大中城市并向周边辐射,城市化进程明显加快,城市规模不断扩大,人口不断集中。
此种状态在带动城市交通需求高速增长,机动车辆快速增加的同时,也促使城市道路负荷加重,交通拥堵现象日益加剧。
交通拥堵使交通延误增大,行车速度降低、时间损失、燃料费用增加、排污量增大、城市环境恶化、并诱发交通事故,直接影响人们的工作效率和身体健康。
出租车是城市客运交通的重要组成部分,是常规公共交通的重要补充。
随着出租车数量的不断增长,出租车交通量已成为城市道路交通总量中的重要组成部分,成为影响城市道路交通分布及分配预测准确性的重要因素之一。
由于出租车运行的随机性,没有固定的起讫点和运行线路,给定量分析带来一定的困难。
各大城市越来越多的出租车的安装了GPS终端,这些终端能够每隔1分钟向出租车管理中心发送本车的位置、速度和方向等信息,是车辆GPS实时数据。
原始数据主要保存出租车上装配的GPS终端所采集的数据,这些数据包括序号,车牌号码,GPS时间,经度,纬度,车辆状态(空车、重车),车辆速度,车辆方向(8个方向)等信息。
这些GPS数据为我们研究出租车交通情况题共了参考和依据。
现阶段在交通拥堵方面主要集中在研究某个路口的情况,并且用缓冲区方法,而没有对整个区域有个整体的描述,而对于整个区域的研究则是基于交通需求建立模型,数据采集的精度不高。
本文基于出租车GPS数据建立深圳整个区域的交通拥堵模型。
二、数据的采集和预处理
我们从网络(什么网)上下载了深圳市出租车的GPS数据,由于数据量较大,硬件设备无法对这些数据全部进行处理,我们采取了随机抽样的方式,从一万多辆出租车中随机抽取了100辆出租车的GPS数据进行建模分析。
然而,原有的GPS数据中有很多错误数据(一些数据的经纬度超出深圳市范围,还有些车辆的状态明显错误),我们用C++语言编程对数据进行了筛选处理,得到了有效的GPS 数据。
利用这些数据我们进行了下面的数学建模分析。
数据格式见表1。
表格 1 数据格式
字段示例备注
车牌号日期时间经度纬度运营状态速度方位角
粤B00G70
2011/04/18
08:44:27
114.044617
22.537268
1
53
0为空载;1为重载
该点车辆的瞬时速度
行车方向三、问题的分析和模型的建立
3.1 划分小区
3.1.1 处理数据
根据出租车载客的起讫点,结合深圳市的交通地图,恰当的划分交通小区,并选择小区中的某一点,用其经纬数值作为该小区的坐标。
GPS数据中,出租车的状态为0表示载人,为1表示空车。
在间隔几分钟后得到的下一数据多和上一数据的状态相同。
要得到出租车载客的起讫点,我们需要对数据进行处理,使得到的数据中相邻的出租车运营状态不相同。
当运营状态由0变为1时表示出租车由空车到有客人上车,当运营状态由1变为0时表示出租车由载客到客人下车。
处理前后的数据见表2、表3:
表格 2 原始数据
name time jd wd status v angle
粤BA3G24 2011/04/24
18:27:32
114.113602 22.600800 1 0 4
粤BA3G24 2011/04/24
18:28:27
114.112396 22.601151 1 6 0
粤BA3G24 2011/04/24
18:29:19
114.112617 22.606899 1 37 7
粤BA3G24 2011/04/24
18:29:58
114.112617 22.609301 0 23 0
粤BA3G24 2011/04/24
18:30:53
114.112564 22.609150 0 0 4
粤BA3G24 2011/04/24
18:31:48
114.112617 22.607683 0 8 3
粤BA3G24 2011/04/24
18:32:44
114.112984 22.604616 0 17 3
粤BA3G24 2011/04/24 18:33:38 114.112282
22.601667 1 22 4 粤BA3G24 2011/04/24 18:34:33 114.112686
22.599667
1
12
4
表格 3 优化后的数据
name
time
jd
wd status v angle 粤BA3G24 2011/04/24 18:29:19 114.112617
22.606899 1 37 7 粤BA3G24 2011/04/24 18:29:58 114.112617
22.609301 0 23 0 粤BA3G24 2011/04/24 18:33:38
114.112282
22.601667
1
22
4
经过上一步的数据优化,即可得到由起讫点数据组成的数据集。
现在需要对这些数据进行聚类运算:一段时间内的起点或者讫点被划分为若干个区域,每个区域中的点分布紧凑,区域和区域之间自然分开 本文采用了K-Means 聚类算法。
K-Means 聚类算法是一种分割式聚类方法,它是数据挖掘技术中一种经典的基于划分的聚类算法。
其目的在于从大量数据点中找出具有代表性的数据点,即中心点,然后再根据这些中心点进行后续的处理。
K-Means 算法采用了迭代更新的运算思想,聚类过程如下: 首先从n 个数据点随机选择k 个点作为初始聚类中心;通过运算其它点和这些聚类中心点的相似度(距离),将其分别分配给和其相似度最高(距离最近)的中心点所在的聚类;然后对划分好后的聚类重新运算聚类中心这一过程不断重复直到标准测度函数开始收敛。
设X={n x x x ,,,21 }R ⊂为待聚类样本的全体(称为论域),即道路网络,
s T ks k k k R x x x x ∈=},,,{21 为观测样本k x (各个路段)的特征矢量或模式矢量,对应特征空间中的一个对象,kj x 为特征矢量k x 的第j 维特征取值。
设c 为聚类数,为样本数,聚类中心点集s n R p p p p ⊂=},,,{21 ,且
cxn ik u U X P ][,=⊂为硬划分矩阵。
若按照最近距离进行样本划分,则样本硬划分
矩阵计算如下:
{}
c i n k
d d d d u k
p k p k p k p ik i i ,,2,1;,,2,10,,,min 121 ==⎪⎩⎪⎨⎧==,其它
,
式中,k p i d 表示样本k x 和中心点i p 之间的欧氏距离。
若以类内平方误差和最小化为聚类目标函数,则聚类目标函数表示为:
⎪⎭
⎫ ⎝⎛=∑∑==n 1k c 1i 2)(min ),(k p ik i d u P U f 3.1.3 利用马克威分析系统聚类分析
利用马克威分析系统,通过聚类分析得到了200个交通小区的坐标,如图表1,各个小区内的交通量和各小区之间的欧氏距离。
在GIS 上根据各个小区坐标附近点的绘制下图小区大致范围。
如图表2。
图表 1 交通小区坐标分布图
交通小区坐标分布图
22.4
22.522.622.722.822.9
2323.123.2113.7
113.8113.9114114.1114.2114.3114.4114.5
wd
图表 2 小区的大致区域
3.2 根据小区划分和出租车GPS 数据,给出载客出租车的OD 时空分布。
如:
某时刻从坐标(,)i j 到(,)i j ''、(,)i j ''''的出租车有多少辆。
3.2.1 区域交通量OD 分布概率模型
假设某一小区交通发生量分布到不同小区的OD 量和这些小区的吸引量成正比。
这是许多分布模型的基础,不再解释。
整个深圳区域共划分为m 个小区,则区域交通量OD 分布矩阵为:
⎥
⎥⎥⎥
⎥⎦
⎤
⎢⎢⎢⎢⎢
⎣⎡=mm m m m m Q Q Q Q Q Q Q Q Q Q ...
............
21
2222111211 Q ij 表示从小区 i 到小区 j 的交通量。
设区域交通为 Q 总 , 则有:
∑==
m
j i ij
Q
Q 1
,总
并记:总
Q Q P ij ij =
i,j=1,2,…,m
式中 P ij 表示从 i 小区到 j 小区的交通量和整个研究区域的交通量之比。
取随机变量 x 、y 分别表示个交通的起点、终点,利用参数P ij 可构造 ( x 、y ) 的联合分布。
表格 4 Pij 的联合分布
{}ij p j y i x P ===, 0=ij P i=1,2,…,m
上式为 ( x , y) de 概率分布。
3.2.2 模型求解
把条件概率 {}i x j y P ==| 简记为P( j / I )用来表示区域i 的交通生成量和分布到其它各小区之间的关系。
由于 {}{}{}i x j y P i x P j y i x P P ij ==∙=====|, 即: ()i j P P P i ij /∙=
i j i ij p p p /∙=
要求解 pij 就得先求出 P {x=i} 和 p j/i 。
为讨论方便, 将 p j/I 记为P , 取得小区 i 的交通生成量为Q i ,进行全样本抽样, 设 X i 为小区i 的交通生成量 , 则 X i 显然是随机变量, 且服从二项分布 B i ( X i , Q i , P ) , P =P( j/ i) i , j = 1 , 2 , … … , . 若仅仅考虑机会均等, P 的估计量为 p=X/ Q , 这仅是一个均值,而对j 区城和其它各小区的区别未能反映,过去的信息和运行状况未起作用, 通过对 P 采用 Bayes 估计, 就能克服上述缺点。
Bayes 方法认为参数 P 不是一个确定的常t , 而被看作是
x y 1 , 2 , … , … , m x=i 1 2 … m y=j
p 11 , p 12 , …, p 1m p 21 , p 22 , … ,p 2m
… … p m1 , p m2 , …,p mm p1 , p2 , … ,pm
p 1 p 2 … p m
一个随机变量 P 的一个值, 因而符合客观实际。
3.2.3 模型检验
根据已获得的关于 P 的信息, 可建立准确程度不同的 P 先验分布, 作为对 P 进行修正的后脸分布的依据。
如果所研究的各个小区的社会经济地理特点没什么大的区别, 各区的相对位置近似。
基于这样的情况, 如果对各区间的交通分布情况了解不多, 可假设 P 的先验分布为均匀分布的, 密度函数为:
⎩
⎨⎧≤≤=其他当,010,1)(p p f
P 为交通量,f(p) 为密度函数。
由概率和前述可知, x 的概率函数也服从二项式分布,则有:
X
Q x x i i p p C p x f --∙∙=)1()/(……
式中: X 是随机变量 ( X=0,1,2,…,Q i );Q i 是小区 I 的交通生成量。
所以 X , P 的联合分布为:
1)1()/()(),(--∙∙=∙=i i
q x
x Q i p C p x f p f p x f X 的边缘分布为:dp p p C dp p x f x g x Q x
x Q m
m
i i
-+--==⎰⎰
)1(),()(1
P 的后验分布为:
⎪⎭⎫ ⎝⎛x p f =
()
()
⎰
---=-1
11)
(),(dp
p p p p x g p x f x
Qi x
Q x x
i
而 P 的 Bayes 估计量就是后验分布的均值:
()()dp x p pf dp x p pf P ⎰⎰==+∞∞
-1
()
()
2
1
111
1++=
--=⎰⎰--+Qi x dp
p p dp
p p x
Qi x
x
Qi x
上式中的P _
交通量后验分布均值;x为变量;x为交通生成量 。
3.2.4 利用马克威分析系统处理数据
根据第一题有关划分小区的情况,以及出租车GPS 数据,利用马克威分析系统软件可以得出区域交通分布情况。
如图表4、5、6。
表格 5 部分小区交通量以及所占的交通比例
小区 小区1 小区2 小区3 小区4 小区5 小区6 交通量 270 31 18 42 10 6
交通比例 0.00795 0.000913 0.00053 0.001237
0.000294 0.000177
图表 3部分小区交通量
表格 6 小区交通分布情况
j i 1 , 2 ,… , … , m 总量 1 2 … m
a 11 , a 12 , … , a 1m a 21 , a 22 , …, a 2m
……
a m1 , a m2 , … , a mm
b 11 b 22 …… b mm
对于某一固定小区来说,设 μ0 为 p ij 的平均值, δ02为 p ij 的方差, 参数 P 显然服从正态分布N (μ0 , δ02 ) , 故 P 的先验概率密度函数为:
()⎪⎪⎭
⎫
⎝⎛--∙=202002exp 21
)(δμδπp p f 这样可做到综合考虑交通分布情况, 避免随机因素的影响。
最后转化为具体的交通量 OD 分布, 由 P = Q ij / Q 总 得 Q ij = PQ 总,从而求得整个区域的交通量OD 分布。
如表格7。
表格 7 部分小区交通量 OD 分布表
小区1 小区2 小区3 小区4 小区5 小区6 小区7 小区1 137.1187 15.74326 9.141246 21.32957 5.07847 3.047082 1.015694 小区2 15.74326 1.807559 1.04955 2.448951 0.583084 0.34985 0.116617 小区3 9.141246 1.04955 0.609416 1.421972 0.338565 0.203139 0.067713 小区4 21.32957 2.448951 1.421972 3.317934 0.789984 0.473991 0.157997 小区5 5.07847 0.583084 0.338565 0.789984 0.188091 0.112855 0.037618 小区6 3.047082 0.34985 0.203139 0.473991 0.112855 0.067713 0.022571
小区7 1.015694 0.116617 0.067713 0.157997 0.037618 0.022571 0.007524
3.3在合理的假设条件下,推断人们出行的OD 时空分布。
3.3.1 模型假设
本文提出的出行OD 矩阵估算方法中假定:城市一定区域内交通小区的出行时耗(出行距离)特征具有相似性,区域总体出行特征可近似代表各小区征,并将城市区域划分为中心区、过渡区、外围区等(视城市规模和空间布局可进一步细化为多个区域,区域划分越多,计算精度越高,但计算量也越大)。
就假定条件而言,城市不同的区域其出行特征存在一定差异,但具有相同区位和特征的区域内的居民出行特征具有一定相似性,而且区域总体的出行特征正是各交通小区出性特征的综合,图7为深圳市调查结果,从图中可以看出各小区的出行比例和出行时耗关系曲线和区域总体关系曲线基本一致,并以2x 检验证明了假设条件的成立。
3.2.2 模型算法
本方法的基本思路:根据各区域总体居民出行时耗(出行距离)和出行比例的总体分布,将交通小区发生量离散为不同出行时耗(出行距离)区间上的出行量,并将相应区间内的出行量按区间所包含的交通吸引小区的面积及吸引量大小进行分配。
具体计算思路如下图4、5所示,图4中曲线f(x)为小区i 所在区域的总体
出行时耗特征曲线,小区i 在出行时耗距离区间[]
L k U
k
d d k ,上的出行比例为图5阴影面积()dx x f P U
k
L k
d d k ⎰=,设小区i 总出行量i P ,则对应的区间[]
L k U
k
d d k ,上出行量k i P P ⨯;图4为城市规划小区的空间分布,阴影为空间上小区f 出行时耗距离区
间[]
L k U
k d d k ,所覆盖的区域,然后根据阴影区域内各吸引小区的大致面积和吸引量
将区间出行量k i P P ⨯按比例进行分配。
图表 4 小区i 时耗分布图
图表 5 时耗覆盖区域示例
按照上述思路,主要计算公式如下:
∑∑∑==j
ij k
j ij k
j k
k
i k
k
ij j i A A P P q q σ
σ (1)
式中,j i q 为交通小区i 到交通小区j 的出行量;k
ij q 为第k 个时耗(距离)区间交
通小区i 到交通小区j 的出行量;i P 为交通小区i 发生量;Aj 为交通小区j 吸引量;k P 交通发生区i 所在区域出行分布特征中第k 个时耗(距离)区间的出行比例,且1=∑k
k p ;ij k σ为交通小区j 隶属于交通小区i 的第k 个出行区间的隶
属系数,可由下式计算。
⎪⎪⎩
⎪⎪⎨⎧⎪⎪⎭⎫ ⎝⎛
--⎪⎪⎭⎫ ⎝⎛+=0,2max ,2min j
U k j j i U k j j i ij k L d L R d L R σ []其它∅≠⋂⎥⎦⎤⎢⎣
⎡+-U k L k j j i j j i d d L R L R ,2,2 (2) 其中,ij R 为交通小区i 到交通小区j 的出行时耗(距离);
j L 交通小区j 的自身时耗(距离);
L k d ,d U k 为时耗(距离)区间k 的上、下限。
式(2)实际反映了交通小区j 在交通小区i 出行时耗(距离)轴上覆盖区间的情况,由图4示例可以理解,图中交通小区j 相对于交通小区i 在出行时耗(距离)区间[15,20]、[20,25]、[25,30]、[30,35]上的隶属系数ij k σ分别为:0.3、0.5、0.2、0,易知式(2)能保证1=∑k
ij k σ。
由计算过程可知,根据式(1)计算得到的 OD 矩阵能够满足矩阵发生总量约束i k j j ij
k
j ij k
j k i j
ij k
j ij k j j
j
k
k
i ij P A A p P A A P P q =⎪⎪⎪
⎭
⎫
⎝⎛==∑∑∑∑∑∑∑σσσ
σ
,但不一定能够满足吸引总量约束∑=i
j ij P q 。
因此上述结果还需要进行修正,可根据交通小区吸引量
进行OD 矩阵的再分配,其公式类同式(1),如下:
∑∑=k j
ij
k
i ij k
i k
j ij P P p A q σσ (3) 式中,k p 交通吸引区j 所在区域出行分布特征中第k 各时耗(距离)区间的出行比例;ij k σ为交通发生区i 隶属交通吸引区j 的第k 个出行时耗区间的隶属系数,其它符号意义同上。
公式(2)变为:
⎪⎪⎩⎪⎪⎨
⎧⎪⎭⎫ ⎝⎛--⎪⎭⎫ ⎝⎛+=0
,2max ,2min i
U k i j i U k i j i ij k L d L R d L R σ []
其它
∅≠⋂⎥⎦⎤⎢⎣⎡+-U
k L k i j i i j i d d L R L R ,2,2 (4)其中,Li 交通发生区i 的自身时耗(距离)直径;其它符号意义同上。
按照式(1)和式(3)计算,分别得到满足出行总量约束和吸引总量约束的OD
矩阵,设其元素分别为多P
ij q 和A ij q ,则最终计算OD 矩阵元素为:
()2÷+=A ij P
ij ij q q q (5)
3.2.3 模型修正 实例分析验证,利用上式(5)得到的OD 矩阵,基本能满足约束条件的精度要求,如果仍不能满足,利用下式(6)进行迭代运算,逐步修正结果:
⎪⎪⎭
⎫
⎝⎛÷⎪⎪⎭⎫ ⎝⎛+
-=---22)1()()1()()1()(k j k j k i k i k ij
k ij
P P A A q
q
(6) 式中,()k ij q 为第k 次迭代要求的OD 矩阵元素;()
1-k ij q 为已求得的第k-1次OD
矩阵元素,当k=1时0
ij q 为式(5)所求得OD 矩阵;()k i A 为已求得的第k-1次OD 矩
阵所对应的交通
小区i 的出行发生量,即()k i A =()
1-∑k ij j
q ,
)0(i A 且为预测交通小区i 的出行发生量;()k j P 为 j 已求得的第k-1次OD 矩阵所对应的交通小区j 的出行吸引量,即
()k j P =()
1-∑k ij
i
q ,且()0j P 为预测交通小区j 的出行吸引量。
根据式(6)进行迭代运
算,直到满足精度要求)1()(-k i
k i A A 和)1()(-k j k j P P 趋近于1为止。
图表 6 计算公式图解
图表 7 出行时耗特征
由图7可以看出人们出行的交通量随出行距离的增加先增长然后呈下降趋势,这和实际情况基本吻合。
3.4 根据出租车载客后的行驶数据,筛选出拥堵的路段时段以及拥堵的路口时段。
3.4.1 交通拥堵分析
交通拥堵既是一个经济问题,又是一个社会问题,已经成为现代城市经济发展过程中的瓶颈,备受人们的广泛关注。
交通拥堵程度的判断,广大市民往往是凭经验和直觉进行的,如,“人车挤成一团”、“前看不到头,后看不到尾”等等,缺乏量化手段,具有一定的主观性和片面性。
因此,对交通拥堵程度的量化及评价的研究具有重要意义和理论价值。
3.4.2 交通拥堵的定义
交通拥堵的定义:某路段在某个时段平均行驶速度小于15公里/小时为拥堵。
根据出租车载客后的行驶数据,编写程序筛选出有用的数据,并且把这些数据显示在GIS 上,查找车辆比较拥堵的路段以及拥堵的路口时段。
图表
8
红色表示拥堵的路段
通过马克威分析系统软件处理GPS 数据,得到各个路段的车辆数据。
表格 8 深圳拥堵路段
拥堵路段 1
布吉关 2
沙湾关 3
南头关(瓶颈路段) 4
华强北 5
东门中路 6
清水河 7
深南路华侨城路段 8
深盐路盐田港区 9
盐坝高速入口 10
布吉路路段 11
深惠路路段 12
坂田五和大道 13
罗沙路路段 14
107国道 i ∑==n j j i v
n V 11
n 表示i 路段某时段的车辆数
vj 表示车辆每个GPS 数据中的速度
根据V i 和交通拥堵速度的比较得到深圳比较拥堵的路段。
四、模型的评价和推广
模型的优缺点
优点
(1)本文建模思路清晰,面向一般化的问题,建立了严密的一般方程,具
有良好的使用性。
(2)建立模型时,紧贴实际,利用实验数据对模型进行验证、修正,模型的可靠性以及结果的精度都很高。
(3)求解模型的方法灵活简化,模型的可操作性很强。
缺点
(1)小区划分范围没有得到精确量化
(2)条件假设“某一小区交通发生量分布到不同小区的OD量和这些小区的吸引量成正比”,此假设精度不高,对于数据用一定的影响。
五、参考文献
[1]傅莉萍.区域交通量OD分布推断方法,广东轻工职业技术学院学报,2004,3(1).
[2]吕玉强,秦勇,贾利民,董宏辉,贾献博,孙智源.基于出租车GPS 数据聚类分析的交通小区动态划分方法研究,物流技术,2010,216.
[3] 王昊,王炜,陈峻,徐任婷.城市出租车交通分布预测模型,公路交通科技,2006,23(6).
[4]胡小文,冯均佳.基于 GPS数据采集的出租汽车交通运行特点研究,2007,5(2).
[5]朱敏清.居民出行0D矩阵估箅新方法,交通和物流·第六届(2006)交通运输领域围际学术会议论文集,2006.
附录:
程序1(起讫点的筛选程序代码):
#include <iostream.h>
#include <fstream.h>
void main()
{
ifstream inf("e:\\100GPS处理.txt");
ofstream ouf("e:\\100GPS处理2.txt");
char name[40]=" ";
char time1[40]=" ";
char time2[40]=" ";
char wd[40]=" ";
char jd[40]=" ";
// char i=' ';
// char jd[40]=" ";
// double wd=0,jd=0;
int status=0,v=0,angle=0,i=0;
inf>>name>>time1>>time2>>jd>>wd>>status>>v>>angle;
ouf<<name<<" "<<time1<<" "<<time2<<" "<<jd<<" "<<wd<<" "<<status<<" "<<v<<" "<<angle<<endl;;//<<jd<<wd<<status<<v<<angle
i=status;
while (!inf.eof())
{
inf>>name>>time1>>time2>>jd>>wd>>status>>v>>angle;
if (i!=status)
{
ouf<<name<<" "<<time1<<" "<<time2<<" "<<jd<<" "<<wd<<" "<<status<<" "<<v<<" "<<angle<<endl;;
i=status;
}
}
}
程序2(筛选有效的起讫点数据):
#include <iostream.h>
#include <fstream.h>
void main()
{
ifstream inf("e:\\gps.txt");
ofstream ouf("e:\\gps1.txt");
char name[40]=" ";
char time1[40]=" ";
char time2[40]=" ";
char wd[40]=" ";
double jd=0.0;
// char i=' ';
// char jd[40]=" ";
// double wd=0,jd=0;
int status=0,v=0,angle=0,i=0;
inf>>name>>time1>>time2>>jd>>wd>>status>>v>>angle;
ouf<<name<<" "<<time1<<" "<<time2<<" "<<jd<<" "<<wd<<" "<<status<<" "<<v<<" "<<angle<<endl;//<<jd<<wd<<status<<v<<angle
i=status;
while (!inf.eof())
{
inf>>name>>time1>>time2>>jd>>wd>>status>>v>>angle;
if
(i!=status&&(status==1||status==0)&&(jd>=113.75&&jd<=114.66)) {
ouf<<name<<" "<<time1<<" "<<time2<<" "<<jd<<" "<<wd<<" "<<status<<" "<<v<<" "<<angle<<endl;
i=status;
}
}
}
程序3(重车筛选):
#include <iostream.h>
#include <fstream.h>
void main()
{
ifstream inf("e:\\gps.txt");
ofstream ouf("e:\\gps1.txt");
char name[40]=" ";
char time1[40]=" ";
char time2[40]=" ";
char wd[40]=" ";
double jd=0.0;
// char i=' ';
// char jd[40]=" ";
// double wd=0,jd=0;
int status=0,v=0,angle=0,i=0;
inf>>name>>time1>>time2>>jd>>wd>>status>>v>>angle;
ouf<<name<<" "<<time1<<" "<<time2<<" "<<jd<<" "<<wd<<" "<<status<<" "<<v<<" "<<angle<<endl;//<<jd<<wd<<status<<v<<angle
i=status;
while (!inf.eof())
{
inf>>name>>time1>>time2>>jd>>wd>>status>>v>>angle;
if (status==1&&(jd>=113.75&&jd<=114.66))
{
ouf<<name<<" "<<time1<<" "<<time2<<" "<<jd<<" "<<wd<<" "<<status<<" "<<v<<" "<<angle<<endl;
// i=status;
}
}
}。