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+1←Di.N, Di+1.N//Extracting the node information of two adjacent data points
(5)
Timei, Timei+1←Di.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)
Distancek←Gk.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, t2←Rj.T//Extracting the time passing through the two nodes separately
(33)
if i = 1 then
(34)
Ai.tq←t1//The time when the vehicle enters the entrance Ai
(35)
Ai.th←t1+ti//The time when the vehicle leaves the entrance Ai
(36)
Ai.delta←ti//Time difference
(37)
else
(38)
Ai.tq←t1+ti-1//The time when the vehicle enters the entrance Ai
(39)
Ai.th←t1+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.V←VA
(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