Research Article

The Method of Dynamic Identification of the Maximum Speed Limit of Expressway Based on Electronic Toll Collection Data

Algorithm 1

Algorithm of speed data construction in road section.
 Input: trajectory data of a car D, expressway road network data G
 Output: speed data of the road section
(1)fuction Sections(D)//The vehicle trajectory data is divided into the data of each section of the vehicle
(2)D = {D1, D2, …, DE}, Di = {Ni, Ti}
(3)for i = 0 to E-1 do
(4) Nodei, Nodei+1Di.N, Di+1.N//Extracting the node information of two adjacent data points
(5) Timei, Timei+1Di.T, Di+1.T//Extracting the time information of two adjacent data points
(6) delta = Timei+1-Timei//Calculating the time difference between two adjacent data points
(7)Ri.Q←(Nodei, Nodei+1)//Reconstitute the front and back node information of the vehicle passing section
(8)Ri.T←(Timei, Timei+1)//The front and back time information of the vehicle passing section
(9)Ri←(roadi.Q, roadi.T, delta)
(10)  Sec←{ R0, R1 ,…, RE-1}//Encapsulating into Sec
(11) end for
(12)return Sec
(13)end fuction
(14)Sec = { R1, R2, …, Rm}←Sections (D)
(15)for each Rj in Sec(j = 0,1,2, …, m) do//Extracting road information from the data, which Rj = (Qj, Tj, deltaj)
(16) if Qj in G then
(17)  DistancekGk.Distance//Getting road section distance from expressway network, which k = Qj
(18)  t = Secj.delta//Extracting the time required for vehicles to pass through the road section
(19)   = Distancek/t//Speed of vehicle passing through road section
(20)  Rj.V//Adding speed attribute
(21) if Qj not in G then//The road information cannot be found in the expressway network, and there is uncollected node information between two nodes of the road section
(22) {N1, N2, …, NZ}←shortest_path(G, Nj)//Searching the shortest path between two nodes, getting the path node data set, which Qj=(N1,NZ)
(23)A = {A1, A2,…,AZ-1}←{N1,N2,…, NZ}//Converting path node data set to road section data set
(24) path = { }
(25) for Ai in A then
(26) path = {path1, path2, …, pathZ-1}←Gk.Distance//Getting road section distance from expressway network, and add to path, which k = Ai
(27) end for
(28) A.Distance←Sum(path)
(28)VA←A.Distance/Rj.delta
(29) if VA ≥ Vmin and VA ≤ Vmax then
(30)  for Ai in A then
(31)  ti/VA//Calculating time difference
(32)  t1, t2Rj.T//Extracting the time passing through the two nodes separately
(33)  if i = 1 then
(34)   Ai.tqt1//The time when the vehicle enters the entrance Ai
(35)   Ai.tht1+ti//The time when the vehicle leaves the entrance Ai
(36)   Ai.deltati//Time difference
(37)  else
(38)   Ai.tqt1+ti-1//The time when the vehicle enters the entrance Ai
(39)   Ai.tht1+ti//The time when the vehicle leaves the entrance Ai
(40)   Ai.delta←ti-ti-1//Time of passing through the road section
(41)   Ai.T←(Ai.tq, Ai.th)
(42)   Ai.VVA
(43)  end for
(44)  A←{Q,T,delta,V}//Getting the corrected section information, including road section node, time and road section speed attributes
(45)Rj←A//A replaces the original Rj, and to generate a new Rj
(46)  end if
(47) end if
(48)end for
(49)speed_data←{R0, R1, …, Rc}//Generating speed data of road section