Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
T
traffic-signal-platform
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
signal
traffic-signal-platform
Commits
aae93b9c
Commit
aae93b9c
authored
Mar 12, 2023
by
duanruiming
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[update] 持久化操作
parent
5ae01ef4
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
288 additions
and
25 deletions
+288
-25
pom.xml
signal-datacenter-service/pom.xml
+3
-3
CrossBaseLaneInfoMapper.java
.../net/wanji/datacenter/mapper/CrossBaseLaneInfoMapper.java
+4
-1
CrossDataRealTimeMapper.java
.../net/wanji/datacenter/mapper/CrossDataRealTimeMapper.java
+8
-1
CrossDirDataRealTimeMapper.java
...t/wanji/datacenter/mapper/CrossDirDataRealTimeMapper.java
+8
-1
CrossLaneDataRealTimeMapper.java
.../wanji/datacenter/mapper/CrossLaneDataRealTimeMapper.java
+8
-1
CrossTurnDataRealTimeMapper.java
.../wanji/datacenter/mapper/CrossTurnDataRealTimeMapper.java
+8
-1
LanePeriodicDataEventListConvert.java
...center/pojo/convert/LanePeriodicDataEventListConvert.java
+5
-3
CrossDirDataRealTimePO.java
.../net/wanji/datacenter/pojo/po/CrossDirDataRealTimePO.java
+2
-0
LanePeriodicDataProcessServiceImpl.java
...nter/service/impl/LanePeriodicDataProcessServiceImpl.java
+23
-11
DataProcessTask.java
.../main/java/net/wanji/datacenter/task/DataProcessTask.java
+61
-2
application.yml
signal-datacenter-service/src/main/resources/application.yml
+1
-1
CrossDataRealTimeMapper.xml
...ice/src/main/resources/mapper/CrossDataRealTimeMapper.xml
+45
-0
CrossDirDataRealTimeMapper.xml
.../src/main/resources/mapper/CrossDirDataRealTimeMapper.xml
+38
-0
CrossLaneDataRealTimeMapper.xml
...src/main/resources/mapper/CrossLaneDataRealTimeMapper.xml
+35
-0
CrossTurnDataRealTimeMapper.xml
...src/main/resources/mapper/CrossTurnDataRealTimeMapper.xml
+39
-0
No files found.
signal-datacenter-service/pom.xml
View file @
aae93b9c
...
@@ -13,8 +13,8 @@
...
@@ -13,8 +13,8 @@
<groupId>
net.wanji
</groupId>
<groupId>
net.wanji
</groupId>
<artifactId>
signal-datacenter-service
</artifactId>
<artifactId>
signal-datacenter-service
</artifactId>
<version>
0.2.1
</version>
<version>
0.2.1
</version>
<name>
signal-data
C
enter-service
</name>
<name>
signal-data
c
enter-service
</name>
<description>
signal-data
C
enter-service
</description>
<description>
signal-data
c
enter-service
</description>
<properties>
<properties>
<java.version>
1.8
</java.version>
<java.version>
1.8
</java.version>
...
@@ -178,7 +178,7 @@
...
@@ -178,7 +178,7 @@
<plugin>
<plugin>
<artifactId>
maven-assembly-plugin
</artifactId>
<artifactId>
maven-assembly-plugin
</artifactId>
<configuration>
<configuration>
<finalName>
signal-data
C
enter-service
</finalName>
<finalName>
signal-data
c
enter-service
</finalName>
<descriptors>
<descriptors>
<descriptor>
src/main/assembly/package.xml
</descriptor>
<descriptor>
src/main/assembly/package.xml
</descriptor>
</descriptors>
</descriptors>
...
...
signal-datacenter-service/src/main/java/net/wanji/datacenter/mapper/CrossBaseLaneInfoMapper.java
View file @
aae93b9c
package
net
.
wanji
.
datacenter
.
mapper
;
package
net
.
wanji
.
datacenter
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
net.wanji.datacenter.pojo.po.CrossBaseLaneInfoPO
;
import
org.apache.ibatis.annotations.Mapper
;
/**
/**
* @author duanruiming
* @author duanruiming
* @date 2023/03/10 20:32
* @date 2023/03/10 20:32
*/
*/
public
interface
CrossBaseLaneInfoMapper
extends
BaseMapper
{
@Mapper
public
interface
CrossBaseLaneInfoMapper
extends
BaseMapper
<
CrossBaseLaneInfoPO
>
{
}
}
signal-datacenter-service/src/main/java/net/wanji/datacenter/mapper/CrossDataRealTimeMapper.java
View file @
aae93b9c
package
net
.
wanji
.
datacenter
.
mapper
;
package
net
.
wanji
.
datacenter
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
net.wanji.datacenter.pojo.po.CrossDataRealTimePO
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
/**
* @author duanruiming
* @author duanruiming
* @date 2023/03/10 20:06
* @date 2023/03/10 20:06
*/
*/
public
interface
CrossDataRealTimeMapper
extends
BaseMapper
{
@Mapper
public
interface
CrossDataRealTimeMapper
extends
BaseMapper
<
CrossDataRealTimePO
>
{
void
insertBatch
(
@Param
(
"list"
)
List
<
CrossDataRealTimePO
>
list
);
}
}
signal-datacenter-service/src/main/java/net/wanji/datacenter/mapper/CrossDirDataRealTimeMapper.java
View file @
aae93b9c
package
net
.
wanji
.
datacenter
.
mapper
;
package
net
.
wanji
.
datacenter
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
net.wanji.datacenter.pojo.po.CrossDirDataRealTimePO
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
/**
* @author duanruiming
* @author duanruiming
* @date 2023/03/10 21:09
* @date 2023/03/10 21:09
*/
*/
public
interface
CrossDirDataRealTimeMapper
extends
BaseMapper
{
@Mapper
public
interface
CrossDirDataRealTimeMapper
extends
BaseMapper
<
CrossDirDataRealTimePO
>
{
void
insertBatch
(
@Param
(
"list"
)
List
<
CrossDirDataRealTimePO
>
list
);
}
}
signal-datacenter-service/src/main/java/net/wanji/datacenter/mapper/CrossLaneDataRealTimeMapper.java
View file @
aae93b9c
package
net
.
wanji
.
datacenter
.
mapper
;
package
net
.
wanji
.
datacenter
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
net.wanji.datacenter.pojo.po.CrossLaneDataRealTimePO
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
/**
* @author duanruiming
* @author duanruiming
* @date 2023/03/10 21:11
* @date 2023/03/10 21:11
*/
*/
public
interface
CrossLaneDataRealTimeMapper
extends
BaseMapper
{
@Mapper
public
interface
CrossLaneDataRealTimeMapper
extends
BaseMapper
<
CrossLaneDataRealTimePO
>
{
void
insertBatch
(
@Param
(
"list"
)
List
<
CrossLaneDataRealTimePO
>
list
);
}
}
signal-datacenter-service/src/main/java/net/wanji/datacenter/mapper/CrossTurnDataRealTimeMapper.java
View file @
aae93b9c
package
net
.
wanji
.
datacenter
.
mapper
;
package
net
.
wanji
.
datacenter
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
net.wanji.datacenter.pojo.po.CrossTurnDataRealtimePO
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
/**
/**
* @author duanruiming
* @author duanruiming
* @date 2023/03/10 21:11
* @date 2023/03/10 21:11
*/
*/
public
interface
CrossTurnDataRealTimeMapper
extends
BaseMapper
{
@Mapper
public
interface
CrossTurnDataRealTimeMapper
extends
BaseMapper
<
CrossTurnDataRealtimePO
>
{
void
insertBatch
(
@Param
(
"list"
)
List
<
CrossTurnDataRealtimePO
>
list
);
}
}
signal-datacenter-service/src/main/java/net/wanji/datacenter/pojo/convert/LanePeriodicDataEventListConvert.java
View file @
aae93b9c
package
net
.
wanji
.
datacenter
.
pojo
.
convert
;
package
net
.
wanji
.
datacenter
.
pojo
.
convert
;
import
net.wanji.common.framework.Constants
;
import
net.wanji.datacenter.pojo.dto.LanePeriodicDataDTO
;
import
net.wanji.datacenter.pojo.dto.LanePeriodicDataDTO
;
import
net.wanji.datacenter.pojo.po.*
;
import
net.wanji.datacenter.pojo.po.*
;
import
org.springframework.stereotype.Component
;
import
java.util.Date
;
import
java.util.Date
;
...
@@ -11,6 +11,7 @@ import java.util.Date;
...
@@ -11,6 +11,7 @@ import java.util.Date;
* @date 2023/03/11 14:04
* @date 2023/03/11 14:04
*/
*/
@SuppressWarnings
(
"all"
)
@SuppressWarnings
(
"all"
)
@Component
public
class
LanePeriodicDataEventListConvert
{
public
class
LanePeriodicDataEventListConvert
{
public
CrossDataRealTimePO
convert2CrossDataRealTimePO
(
LanePeriodicDataDTO
.
EventList
eventList
,
CrossBaseLaneInfoPO
laneInfoPO
)
{
public
CrossDataRealTimePO
convert2CrossDataRealTimePO
(
LanePeriodicDataDTO
.
EventList
eventList
,
CrossBaseLaneInfoPO
laneInfoPO
)
{
...
@@ -76,7 +77,7 @@ public class LanePeriodicDataEventListConvert {
...
@@ -76,7 +77,7 @@ public class LanePeriodicDataEventListConvert {
CrossDirDataRealTimePO
crossDirDataRealTimePO
=
new
CrossDirDataRealTimePO
();
CrossDirDataRealTimePO
crossDirDataRealTimePO
=
new
CrossDirDataRealTimePO
();
// 路口方向ID(路口ID_方向_进出口_主辅路序号)
// 路口方向ID(路口ID_方向_进出口_主辅路序号)
crossDirDataRealTimePO
.
setId
(
String
.
join
(
Constants
.
SystemParam
.
SEPARATOR_UNDER_LINE
,
String
.
valueOf
(
dir
),
String
.
valueOf
(
type
)));
crossDirDataRealTimePO
.
setId
(
String
.
valueOf
(
dir
).
concat
(
String
.
valueOf
(
type
)));
crossDirDataRealTimePO
.
setDirType
(
dir
);
crossDirDataRealTimePO
.
setDirType
(
dir
);
crossDirDataRealTimePO
.
setInOutType
(
type
);
crossDirDataRealTimePO
.
setInOutType
(
type
);
crossDirDataRealTimePO
.
setCrossId
(
crossId
);
crossDirDataRealTimePO
.
setCrossId
(
crossId
);
...
@@ -84,6 +85,7 @@ public class LanePeriodicDataEventListConvert {
...
@@ -84,6 +85,7 @@ public class LanePeriodicDataEventListConvert {
crossDirDataRealTimePO
.
setStatus
(
0000
);
crossDirDataRealTimePO
.
setStatus
(
0000
);
crossDirDataRealTimePO
.
setTrafficIndex
(
0000.00
);
crossDirDataRealTimePO
.
setTrafficIndex
(
0000.00
);
crossDirDataRealTimePO
.
setStartTime
(
now
);
crossDirDataRealTimePO
.
setStartTime
(
now
);
crossDirDataRealTimePO
.
setCapacity
(
trafficFlow
);
crossDirDataRealTimePO
.
setDuration
(
0000
);
crossDirDataRealTimePO
.
setDuration
(
0000
);
crossDirDataRealTimePO
.
setFlow
(
trafficFlow
);
crossDirDataRealTimePO
.
setFlow
(
trafficFlow
);
crossDirDataRealTimePO
.
setSpeed
(
meanV
);
crossDirDataRealTimePO
.
setSpeed
(
meanV
);
...
@@ -115,7 +117,7 @@ public class LanePeriodicDataEventListConvert {
...
@@ -115,7 +117,7 @@ public class LanePeriodicDataEventListConvert {
Integer
turn
=
laneInfoPO
.
getTurn
();
Integer
turn
=
laneInfoPO
.
getTurn
();
CrossTurnDataRealtimePO
crossTurnDataRealtimePO
=
new
CrossTurnDataRealtimePO
();
CrossTurnDataRealtimePO
crossTurnDataRealtimePO
=
new
CrossTurnDataRealtimePO
();
crossTurnDataRealtimePO
.
setId
(
String
.
join
(
Constants
.
SystemParam
.
SEPARATOR_UNDER_LINE
,
crossId
,
null
,
String
.
valueOf
(
turn
)));
crossTurnDataRealtimePO
.
setId
(
crossId
.
concat
(
""
).
concat
(
String
.
valueOf
(
turn
)));
crossTurnDataRealtimePO
.
setTurnType
(
""
);
crossTurnDataRealtimePO
.
setTurnType
(
""
);
crossTurnDataRealtimePO
.
setInDir
(
0000
);
crossTurnDataRealtimePO
.
setInDir
(
0000
);
crossTurnDataRealtimePO
.
setOutDir
(
0000
);
crossTurnDataRealtimePO
.
setOutDir
(
0000
);
...
...
signal-datacenter-service/src/main/java/net/wanji/datacenter/pojo/po/CrossDirDataRealTimePO.java
View file @
aae93b9c
...
@@ -31,6 +31,8 @@ public class CrossDirDataRealTimePO {
...
@@ -31,6 +31,8 @@ public class CrossDirDataRealTimePO {
private
Double
trafficIndex
;
private
Double
trafficIndex
;
@ApiModelProperty
(
name
=
"开始时间"
,
notes
=
""
)
@ApiModelProperty
(
name
=
"开始时间"
,
notes
=
""
)
private
Date
startTime
;
private
Date
startTime
;
@ApiModelProperty
(
name
=
"通行能力"
,
notes
=
""
)
private
Integer
capacity
;
@ApiModelProperty
(
name
=
"持续时间"
,
notes
=
""
)
@ApiModelProperty
(
name
=
"持续时间"
,
notes
=
""
)
private
Integer
duration
;
private
Integer
duration
;
@ApiModelProperty
(
name
=
"交通流量(辆)"
,
notes
=
""
)
@ApiModelProperty
(
name
=
"交通流量(辆)"
,
notes
=
""
)
...
...
signal-datacenter-service/src/main/java/net/wanji/datacenter/service/impl/LanePeriodicDataProcessServiceImpl.java
View file @
aae93b9c
package
net
.
wanji
.
datacenter
.
service
.
impl
;
package
net
.
wanji
.
datacenter
.
service
.
impl
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
net.wanji.datacenter.kafka.ConsumerHandler
;
import
net.wanji.datacenter.kafka.ConsumerHandler
;
...
@@ -10,12 +11,13 @@ import net.wanji.datacenter.pojo.dto.LanePeriodicDataDTO;
...
@@ -10,12 +11,13 @@ import net.wanji.datacenter.pojo.dto.LanePeriodicDataDTO;
import
net.wanji.datacenter.pojo.po.*
;
import
net.wanji.datacenter.pojo.po.*
;
import
net.wanji.datacenter.service.DataProcessService
;
import
net.wanji.datacenter.service.DataProcessService
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.StringUtils
;
import
org.springframework.util.StringUtils
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.List
;
import
java.util.stream.Collectors
;
/**
/**
* @author duanruiming
* @author duanruiming
...
@@ -58,14 +60,15 @@ public class LanePeriodicDataProcessServiceImpl implements DataProcessService {
...
@@ -58,14 +60,15 @@ public class LanePeriodicDataProcessServiceImpl implements DataProcessService {
}
}
@Override
@Override
@Transactional
public
void
save
(
Object
convertData
)
throws
Exception
{
public
void
save
(
Object
convertData
)
throws
Exception
{
LanePeriodicDataDTO
lanePeriodicDataDTO
=
(
LanePeriodicDataDTO
)
convertData
;
LanePeriodicDataDTO
lanePeriodicDataDTO
=
(
LanePeriodicDataDTO
)
convertData
;
int
laneNum
=
lanePeriodicDataDTO
.
getLaneNum
();
int
laneNum
=
lanePeriodicDataDTO
.
getLaneNum
();
List
<
CrossDataRealTimePO
>
crossDataRealTimePOS
=
new
ArrayList
<>(
laneNum
);
List
<
CrossDataRealTimePO
>
crossDataRealTimePOS
=
new
ArrayList
<>(
laneNum
);
List
<
CrossDirDataRealTimePO
>
crossDirDataRealTimePOS
=
new
ArrayList
<>();
List
<
CrossDirDataRealTimePO
>
crossDirDataRealTimePOS
=
new
ArrayList
<>(
laneNum
);
List
<
CrossTurnDataRealtimePO
>
crossTurnDataRealtimePOS
=
new
ArrayList
<>();
List
<
CrossTurnDataRealtimePO
>
crossTurnDataRealtimePOS
=
new
ArrayList
<>(
laneNum
);
List
<
CrossLaneDataRealTimePO
>
crossLaneDataRealTimePOS
=
new
ArrayList
<>();
List
<
CrossLaneDataRealTimePO
>
crossLaneDataRealTimePOS
=
new
ArrayList
<>(
laneNum
);
List
<
LanePeriodicDataDTO
.
EventList
>
eventLists
=
lanePeriodicDataDTO
.
getEventList
();
List
<
LanePeriodicDataDTO
.
EventList
>
eventLists
=
lanePeriodicDataDTO
.
getEventList
();
if
(
CollectionUtils
.
isEmpty
(
eventLists
))
{
if
(
CollectionUtils
.
isEmpty
(
eventLists
))
{
...
@@ -73,7 +76,9 @@ public class LanePeriodicDataProcessServiceImpl implements DataProcessService {
...
@@ -73,7 +76,9 @@ public class LanePeriodicDataProcessServiceImpl implements DataProcessService {
throw
new
Exception
(
"当前车道周期实时数据车道列表为空"
);
throw
new
Exception
(
"当前车道周期实时数据车道列表为空"
);
}
}
// 通过车道编号获取车道信息
// 通过车道编号获取车道信息
List
<
String
>
LaneIdList
=
eventLists
.
stream
().
map
(
LanePeriodicDataDTO
.
EventList
::
getLaneId
).
collect
(
Collectors
.
toList
());
// List<String> LaneIdList = eventLists.stream().map(LanePeriodicDataDTO.EventList::getLaneId).collect(Collectors.toList());
// "14PU609IQA014PUG09IRA0010012"
List
<
String
>
LaneIdList
=
Arrays
.
asList
(
"14PU609IQA014PUG09IRA0010011"
);
List
<
CrossBaseLaneInfoPO
>
crossBaseLaneInfoPOS
=
crossBaseLaneInfoMapper
.
selectBatchIds
(
LaneIdList
);
List
<
CrossBaseLaneInfoPO
>
crossBaseLaneInfoPOS
=
crossBaseLaneInfoMapper
.
selectBatchIds
(
LaneIdList
);
for
(
LanePeriodicDataDTO
.
EventList
laneRealTimeItem
:
eventLists
)
{
for
(
LanePeriodicDataDTO
.
EventList
laneRealTimeItem
:
eventLists
)
{
...
@@ -90,14 +95,21 @@ public class LanePeriodicDataProcessServiceImpl implements DataProcessService {
...
@@ -90,14 +95,21 @@ public class LanePeriodicDataProcessServiceImpl implements DataProcessService {
crossLaneDataRealTimePOS
.
add
(
lanePeriodicDataEventListConvert
.
convert2CrossLaneDataRealTimePO
(
laneRealTimeItem
,
laneInfoPO
));
crossLaneDataRealTimePOS
.
add
(
lanePeriodicDataEventListConvert
.
convert2CrossLaneDataRealTimePO
(
laneRealTimeItem
,
laneInfoPO
));
String
crossId
=
laneInfoPO
.
getCrossId
();
crossDataRealTimeMapper
.
delete
(
new
LambdaQueryWrapper
<
CrossDataRealTimePO
>().
eq
(
CrossDataRealTimePO:
:
getCrossId
,
crossId
));
crossDirDataRealTimeMapper
.
delete
(
new
LambdaQueryWrapper
<
CrossDirDataRealTimePO
>().
eq
(
CrossDirDataRealTimePO:
:
getCrossId
,
crossId
));
crossTurnDataRealTimeMapper
.
delete
(
new
LambdaQueryWrapper
<
CrossTurnDataRealtimePO
>().
eq
(
CrossTurnDataRealtimePO:
:
getCrossId
,
crossId
));
crossLaneDataRealTimeMapper
.
delete
(
new
LambdaQueryWrapper
<
CrossLaneDataRealTimePO
>().
eq
(
CrossLaneDataRealTimePO:
:
getCrossId
,
crossId
));
}
}
}
}
}
}
crossDataRealTimeMapper
.
insertBatch
(
crossDataRealTimePOS
);
crossDataRealTimeMapper
.
insert
(
crossDataRealTimePOS
);
crossDirDataRealTimeMapper
.
insertBatch
(
crossDirDataRealTimePOS
);
crossDirDataRealTimeMapper
.
insert
(
crossDirDataRealTimePOS
);
crossTurnDataRealTimeMapper
.
insertBatch
(
crossTurnDataRealtimePOS
);
crossTurnDataRealTimeMapper
.
insert
(
crossTurnDataRealtimePOS
);
crossLaneDataRealTimeMapper
.
insertBatch
(
crossLaneDataRealTimePOS
);
crossLaneDataRealTimeMapper
.
insert
(
crossLaneDataRealTimePOS
);
}
}
}
}
signal-datacenter-service/src/main/java/net/wanji/datacenter/task/DataProcessTask.java
View file @
aae93b9c
...
@@ -33,7 +33,66 @@ public class DataProcessTask {
...
@@ -33,7 +33,66 @@ public class DataProcessTask {
String
message
=
bean
.
receive
(
beanName
);
String
message
=
bean
.
receive
(
beanName
);
// 数据转化
// 数据转化
if
(
StringUtils
.
isBlank
(
message
))
{
if
(
StringUtils
.
isBlank
(
message
))
{
message
=
"{\"eventList\":[{\"dynamic_queue_length_max\":40.975341796875,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":48,\"lane_flow_rate\":36.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.75,\"lane_saturation_flow_rate\":48,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.3242078320733432,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":4.335211267605633,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.01257999986410141,\"traffic_flow\":3,\"trolley_equivalent\":3,\"vehicle_length_ratio_mean\":0.012526985547440197,\"vehicle_nums_ratio_mean\":0.020196877121520705},{\"dynamic_queue_length_max\":40.0,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.06967829167842865,\"laneId\":\"\",\"lane_capacity\":276,\"lane_flow_rate\":204.0,\"lane_no_stop_rate\":0.8936170339584351,\"lane_one_stop_rate\":0.10638298094272614,\"lane_saturation\":0.739130437374115,\"lane_saturation_flow_rate\":276,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":17.12477208828104,\"light_green_start_queue_length\":9.938938453279693,\"mean_delay\":5.74468085106383,\"mean_stops_number\":0,\"mean_v\":1.8776506024096384,\"static_queue_length_max\":40.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.7083266377449036,\"traffic_flow\":17,\"trolley_equivalent\":17,\"vehicle_length_ratio_mean\":0.3361885299892225,\"vehicle_nums_ratio_mean\":0.28029531568228105},{\"dynamic_queue_length_max\":68.16592407226563,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":2.1223698196739984,\"light_green_start_queue_length\":0.4052462495606521,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":3.4737642585551347,\"static_queue_length_max\":3.681959867477417,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.006259700711133706,\"vehicle_nums_ratio_mean\":0.018911842165738647},{\"dynamic_queue_length_max\":61.581146240234375,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":72,\"lane_flow_rate\":48.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.6666666865348816,\"lane_saturation_flow_rate\":72,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":1.3318108032489646,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":7.212631578947371,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.008883332833647728,\"traffic_flow\":4,\"trolley_equivalent\":4,\"vehicle_length_ratio_mean\":0.003597769999430241,\"vehicle_nums_ratio_mean\":0.004687550599710195},{\"dynamic_queue_length_max\":63.37282943725586,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":264,\"lane_flow_rate\":252.0,\"lane_no_stop_rate\":0.9696969985961914,\"lane_one_stop_rate\":0.03030303120613098,\"lane_saturation\":0.9545454382896423,\"lane_saturation_flow_rate\":264,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":4.945268778965391,\"light_green_start_queue_length\":2.922568074588118,\"mean_delay\":1.3636363636363635,\"mean_stops_number\":0,\"mean_v\":3.3937572254335286,\"static_queue_length_max\":16.445341110229492,\"static_queue_length_min\":0.0,\"time_occupancy\":0.26542335748672485,\"traffic_flow\":21,\"trolley_equivalent\":21,\"vehicle_length_ratio_mean\":0.03733014619358526,\"vehicle_nums_ratio_mean\":0.029208289426470076},{\"dynamic_queue_length_max\":56.268768310546875,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":96,\"lane_flow_rate\":96.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":96,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":4.970868834133806,\"light_green_start_queue_length\":2.2785396247074523,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":1.8774834437086092,\"static_queue_length_max\":21.169273376464844,\"static_queue_length_min\":0.0,\"time_occupancy\":0.21854667365550995,\"traffic_flow\":8,\"trolley_equivalent\":8,\"vehicle_length_ratio_mean\":0.01890855935545738,\"vehicle_nums_ratio_mean\":0.016454919001741307},{\"dynamic_queue_length_max\":74.82034301757813,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":336,\"lane_flow_rate\":336.0,\"lane_no_stop_rate\":0.9259259104728699,\"lane_one_stop_rate\":0.07407407462596893,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":336,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":10.449663754167227,\"light_green_start_queue_length\":6.243474763015221,\"mean_delay\":3.888888888888889,\"mean_stops_number\":0,\"mean_v\":3.417926565874727,\"static_queue_length_max\":22.74837303161621,\"static_queue_length_min\":0.0,\"time_occupancy\":0.36901333928108215,\"traffic_flow\":24,\"trolley_equivalent\":28,\"vehicle_length_ratio_mean\":0.09141811475446049,\"vehicle_nums_ratio_mean\":0.08030259135657844},{\"dynamic_queue_length_max\":470.63189697265625,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":180,\"lane_flow_rate\":180.0,\"lane_no_stop_rate\":0.9555555582046509,\"lane_one_stop_rate\":0.04444444552063942,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":180,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":16.329852498810865,\"light_green_start_queue_length\":11.722974982754938,\"mean_delay\":2.5,\"mean_stops_number\":0,\"mean_v\":1.8117421602787458,\"static_queue_length_max\":46.890625,\"static_queue_length_min\":0.0,\"time_occupancy\":0.6800199747085571,\"traffic_flow\":11,\"trolley_equivalent\":15,\"vehicle_length_ratio_mean\":0.06779336408589944,\"vehicle_nums_ratio_mean\":0.0582711032875646},{\"dynamic_queue_length_max\":23.018892288208008,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.012964434921741486,\"laneId\":\"\",\"lane_capacity\":72,\"lane_flow_rate\":36.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.5,\"lane_saturation_flow_rate\":72,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.6141861389423239,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":4.541960784313726,\"static_queue_length_max\":17.1435604095459,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0071033332496881485,\"traffic_flow\":3,\"trolley_equivalent\":3,\"vehicle_length_ratio_mean\":0.002242794503171429,\"vehicle_nums_ratio_mean\":0.00287633546288533},{\"dynamic_queue_length_max\":114.65453338623047,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":14.023659467697144,\"light_green_start_queue_length\":0.0992967753574766,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":3.6110457516339856,\"static_queue_length_max\":4.859949588775635,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.0012805742346469846,\"vehicle_nums_ratio_mean\":0.0027028174197727415},{\"dynamic_queue_length_max\":372.0594177246094,\"dynamic_queue_length_min\":2.3399829864501953,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":444,\"lane_flow_rate\":384.0,\"lane_no_stop_rate\":0.9885714054107666,\"lane_one_stop_rate\":0.011428571306169033,\"lane_saturation\":0.8648648858070374,\"lane_saturation_flow_rate\":444,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":154.56714787976495,\"light_green_start_queue_length\":13.386706187807281,\"mean_delay\":0.9428571428571428,\"mean_stops_number\":0,\"mean_v\":4.7758273381294964,\"static_queue_length_max\":43.37940979003906,\"static_queue_length_min\":0.0,\"time_occupancy\":0.036986663937568665,\"traffic_flow\":29,\"trolley_equivalent\":32,\"vehicle_length_ratio_mean\":0.07698311852651615,\"vehicle_nums_ratio_mean\":0.05800237682902805},{\"dynamic_queue_length_max\":371.6435241699219,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":96,\"lane_flow_rate\":72.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.75,\"lane_saturation_flow_rate\":96,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":149.71256256103516,\"light_green_start_queue_length\":12.456866034146014,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":9.356060606060607,\"static_queue_length_max\":368.05401611328125,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0038433328736573458,\"traffic_flow\":6,\"trolley_equivalent\":6,\"vehicle_length_ratio_mean\":0.013071173843431356,\"vehicle_nums_ratio_mean\":0.014736083131637588},{\"dynamic_queue_length_max\":370.0,\"dynamic_queue_length_min\":2.965820550918579,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":492,\"lane_flow_rate\":432.0,\"lane_no_stop_rate\":0.9834254384040833,\"lane_one_stop_rate\":0.016574585810303688,\"lane_saturation\":0.8780487775802612,\"lane_saturation_flow_rate\":492,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":188.10887777394262,\"light_green_start_queue_length\":15.665639088071625,\"mean_delay\":1.2430939226519337,\"mean_stops_number\":0,\"mean_v\":5.717452107279695,\"static_queue_length_max\":85.60419464111328,\"static_queue_length_min\":0.0,\"time_occupancy\":0.4382700026035309,\"traffic_flow\":36,\"trolley_equivalent\":36,\"vehicle_length_ratio_mean\":0.09328616546556728,\"vehicle_nums_ratio_mean\":0.07687118187298883},{\"dynamic_queue_length_max\":370.0,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":408,\"lane_flow_rate\":336.0,\"lane_no_stop_rate\":0.9520000219345093,\"lane_one_stop_rate\":0.04800000041723251,\"lane_saturation\":0.8235294222831726,\"lane_saturation_flow_rate\":408,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":107.36373444261223,\"light_green_start_queue_length\":8.63355828975809,\"mean_delay\":3.36,\"mean_stops_number\":0,\"mean_v\":4.588161925601749,\"static_queue_length_max\":81.62080383300781,\"static_queue_length_min\":0.0,\"time_occupancy\":0.46894001960754395,\"traffic_flow\":28,\"trolley_equivalent\":28,\"vehicle_length_ratio_mean\":0.05922727869761613,\"vehicle_nums_ratio_mean\":0.04411490205599492},{\"dynamic_queue_length_max\":75.41883850097656,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":180,\"lane_flow_rate\":168.0,\"lane_no_stop_rate\":0.7727272510528564,\"lane_one_stop_rate\":0.22727273404598236,\"lane_saturation\":0.9333333373069763,\"lane_saturation_flow_rate\":180,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":22.843779037738667,\"light_green_start_queue_length\":11.869044271008722,\"mean_delay\":16.363636363636363,\"mean_stops_number\":0,\"mean_v\":4.588436830835113,\"static_queue_length_max\":28.49137306213379,\"static_queue_length_min\":0.0,\"time_occupancy\":0.8092133402824402,\"traffic_flow\":12,\"trolley_equivalent\":14,\"vehicle_length_ratio_mean\":0.1949437555578175,\"vehicle_nums_ratio_mean\":0.14591537143096822},{\"dynamic_queue_length_max\":46.60673904418945,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.13525336980819702,\"laneId\":\"\",\"lane_capacity\":204,\"lane_flow_rate\":192.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.9411764740943909,\"lane_saturation_flow_rate\":204,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":15.36799144744873,\"light_green_start_queue_length\":8.714151109967913,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":3.4473863636363635,\"static_queue_length_max\":42.199012756347656,\"static_queue_length_min\":0.0,\"time_occupancy\":0.33947670459747314,\"traffic_flow\":16,\"trolley_equivalent\":16,\"vehicle_length_ratio_mean\":0.049264598236964906,\"vehicle_nums_ratio_mean\":0.04934657162253903},{\"dynamic_queue_length_max\":44.676570892333984,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.060385480523109436,\"laneId\":\"\",\"lane_capacity\":48,\"lane_flow_rate\":48.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":48,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":4.017500000000001,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0068066660314798355,\"traffic_flow\":4,\"trolley_equivalent\":4,\"vehicle_length_ratio_mean\":0.0019217923015497692,\"vehicle_nums_ratio_mean\":0.0013577732518669382},{\"dynamic_queue_length_max\":50.045387268066406,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.14726360142230988,\"laneId\":\"\",\"lane_capacity\":336,\"lane_flow_rate\":336.0,\"lane_no_stop_rate\":0.9534883499145508,\"lane_one_stop_rate\":0.04651162773370743,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":336,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":14.72541080202375,\"light_green_start_queue_length\":6.800526142120361,\"mean_delay\":3.488372093023256,\"mean_stops_number\":0,\"mean_v\":2.981413612565444,\"static_queue_length_max\":50.019309997558594,\"static_queue_length_min\":0.0,\"time_occupancy\":0.5300833582878113,\"traffic_flow\":26,\"trolley_equivalent\":28,\"vehicle_length_ratio_mean\":0.07812055642542715,\"vehicle_nums_ratio_mean\":0.08565286695906603},{\"dynamic_queue_length_max\":29.523109436035156,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":84,\"lane_flow_rate\":72.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.8571428656578064,\"lane_saturation_flow_rate\":84,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":4.469166666666671,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.01454333309084177,\"traffic_flow\":5,\"trolley_equivalent\":6,\"vehicle_length_ratio_mean\":0.002055284612067929,\"vehicle_nums_ratio_mean\":0.0017396469789545145},{\"dynamic_queue_length_max\":48.40139389038086,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.06887155026197433,\"laneId\":\"\",\"lane_capacity\":108,\"lane_flow_rate\":108.0,\"lane_no_stop_rate\":0.9285714030265808,\"lane_one_stop_rate\":0.0714285746216774,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":108,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":17.13508483341762,\"light_green_start_queue_length\":17.13508483341762,\"mean_delay\":2.142857142857143,\"mean_stops_number\":0,\"mean_v\":1.7502366863905314,\"static_queue_length_max\":48.40139389038086,\"static_queue_length_min\":0.0,\"time_occupancy\":0.2147066742181778,\"traffic_flow\":9,\"trolley_equivalent\":9,\"vehicle_length_ratio_mean\":0.08763728947969861,\"vehicle_nums_ratio_mean\":0.08780974202308214},{\"dynamic_queue_length_max\":371.0,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":828,\"lane_flow_rate\":696.0,\"lane_no_stop_rate\":0.9490445852279663,\"lane_one_stop_rate\":0.05095541477203369,\"lane_saturation\":0.8405796885490417,\"lane_saturation_flow_rate\":828,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":101.03698022024972,\"light_green_start_queue_length\":24.407301357814244,\"mean_delay\":4.012738853503185,\"mean_stops_number\":0,\"mean_v\":4.42488933601609,\"static_queue_length_max\":52.10312271118164,\"static_queue_length_min\":0.0,\"time_occupancy\":0.6676632761955261,\"traffic_flow\":56,\"trolley_equivalent\":58,\"vehicle_length_ratio_mean\":0.1073623936127325,\"vehicle_nums_ratio_mean\":0.10431093066103772},{\"dynamic_queue_length_max\":372.4347839355469,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":108,\"lane_flow_rate\":60.0,\"lane_no_stop_rate\":0.9909090995788574,\"lane_one_stop_rate\":0.00909090880304575,\"lane_saturation\":0.5555555820465088,\"lane_saturation_flow_rate\":108,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":183.26575967243738,\"light_green_start_queue_length\":1.7458618027823312,\"mean_delay\":0.5454545454545454,\"mean_stops_number\":0,\"mean_v\":2.369907407407407,\"static_queue_length_max\":15.441865921020508,\"static_queue_length_min\":0.0,\"time_occupancy\":0.260696679353714,\"traffic_flow\":5,\"trolley_equivalent\":5,\"vehicle_length_ratio_mean\":0.03587172349544403,\"vehicle_nums_ratio_mean\":0.03281992581373906},{\"dynamic_queue_length_max\":373.38916015625,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":60,\"lane_flow_rate\":60.0,\"lane_no_stop_rate\":0.9918032884597778,\"lane_one_stop_rate\":0.008196720853447914,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":60,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":208.2078195299421,\"light_green_start_queue_length\":0.4642688206263951,\"mean_delay\":0.6147540983606558,\"mean_stops_number\":0,\"mean_v\":2.714743202416921,\"static_queue_length_max\":7.421406269073486,\"static_queue_length_min\":0.0,\"time_occupancy\":0.22264666855335236,\"traffic_flow\":5,\"trolley_equivalent\":5,\"vehicle_length_ratio_mean\":0.047669618556627505,\"vehicle_nums_ratio_mean\":0.038675322940918314},{\"dynamic_queue_length_max\":51.19540786743164,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.12543940544128418,\"laneId\":\"\",\"lane_capacity\":300,\"lane_flow_rate\":276.0,\"lane_no_stop_rate\":0.9047619104385376,\"lane_one_stop_rate\":0.095238097012043,\"lane_saturation\":0.9200000166893005,\"lane_saturation_flow_rate\":300,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":23.933147975376674,\"light_green_start_queue_length\":18.824801445007324,\"mean_delay\":11.071428571428571,\"mean_stops_number\":0,\"mean_v\":3.4368482490272374,\"static_queue_length_max\":51.19540786743164,\"static_queue_length_min\":0.0,\"time_occupancy\":0.7569065690040588,\"traffic_flow\":19,\"trolley_equivalent\":23,\"vehicle_length_ratio_mean\":0.22347544479637185,\"vehicle_nums_ratio_mean\":0.17155088182698078},{\"dynamic_queue_length_max\":48.06354904174805,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.25814419984817505,\"laneId\":\"\",\"lane_capacity\":456,\"lane_flow_rate\":420.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.9210526347160339,\"lane_saturation_flow_rate\":456,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":6.743759768349784,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":9.33344947735192,\"static_queue_length_max\":21.375097274780273,\"static_queue_length_min\":0.0,\"time_occupancy\":0.08263000845909119,\"traffic_flow\":35,\"trolley_equivalent\":35,\"vehicle_length_ratio_mean\":0.032610454184976226,\"vehicle_nums_ratio_mean\":0.029173267185839763},{\"dynamic_queue_length_max\":52.07501983642578,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.07083287835121155,\"laneId\":\"\",\"lane_capacity\":204,\"lane_flow_rate\":180.0,\"lane_no_stop_rate\":0.8285714387893677,\"lane_one_stop_rate\":0.17142857611179352,\"lane_saturation\":0.8823529481887817,\"lane_saturation_flow_rate\":204,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":28.14895793369838,\"light_green_start_queue_length\":27.185110364641464,\"mean_delay\":12.428571428571429,\"mean_stops_number\":0,\"mean_v\":2.3490223463687148,\"static_queue_length_max\":51.60746765136719,\"static_queue_length_min\":0.0,\"time_occupancy\":0.5188466310501099,\"traffic_flow\":15,\"trolley_equivalent\":15,\"vehicle_length_ratio_mean\":0.23345167850677204,\"vehicle_nums_ratio_mean\":0.16815644997574808},{\"dynamic_queue_length_max\":48.34062576293945,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.08141857385635376,\"laneId\":\"\",\"lane_capacity\":336,\"lane_flow_rate\":180.0,\"lane_no_stop_rate\":0.9117646813392639,\"lane_one_stop_rate\":0.0882352963089943,\"lane_saturation\":0.5357142686843872,\"lane_saturation_flow_rate\":336,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":20.943053245544434,\"light_green_start_queue_length\":15.544171469552177,\"mean_delay\":9.264705882352942,\"mean_stops_number\":0,\"mean_v\":3.3683863080684575,\"static_queue_length_max\":45.82487106323242,\"static_queue_length_min\":0.0,\"time_occupancy\":0.648930013179779,\"traffic_flow\":15,\"trolley_equivalent\":15,\"vehicle_length_ratio_mean\":0.17561335737380096,\"vehicle_nums_ratio_mean\":0.13609791253437337},{\"dynamic_queue_length_max\":42.26611328125,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":4.69802736384528,\"light_green_start_queue_length\":0.11607186283384051,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":7.513181818181817,\"static_queue_length_max\":3.347986936569214,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.0040865438365619644,\"vehicle_nums_ratio_mean\":0.014162329443492052},{\"dynamic_queue_length_max\":48.721282958984375,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.1409478783607483,\"laneId\":\"\",\"lane_capacity\":348,\"lane_flow_rate\":204.0,\"lane_no_stop_rate\":0.875,\"lane_one_stop_rate\":0.125,\"lane_saturation\":0.5862069129943848,\"lane_saturation_flow_rate\":348,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":26.508986609322683,\"light_green_start_queue_length\":16.698043823242188,\"mean_delay\":13.125,\"mean_stops_number\":0,\"mean_v\":2.713824228028499,\"static_queue_length_max\":46.516483306884766,\"static_queue_length_min\":0.0,\"time_occupancy\":0.6088699698448181,\"traffic_flow\":17,\"trolley_equivalent\":17,\"vehicle_length_ratio_mean\":0.23827141966830082,\"vehicle_nums_ratio_mean\":0.15022252876379824},{\"dynamic_queue_length_max\":0.0,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":0.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":0.0,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.0,\"vehicle_nums_ratio_mean\":0.0},{\"dynamic_queue_length_max\":0.0,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":0.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":0.0,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.0,\"vehicle_nums_ratio_mean\":0.0},{\"dynamic_queue_length_max\":59.1076774597168,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":2.1744209017072404,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":0.0,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.006782431415935317,\"vehicle_nums_ratio_mean\":0.005984921610262308},{\"dynamic_queue_length_max\":10.900229454040527,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":24,\"lane_flow_rate\":24.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":24,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":7.6599999999999975,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.003563334234058857,\"traffic_flow\":2,\"trolley_equivalent\":2,\"vehicle_length_ratio_mean\":0.0002124606500817899,\"vehicle_nums_ratio_mean\":0.0002143852518920743},{\"dynamic_queue_length_max\":0.0,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":0.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":0.0,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.0,\"vehicle_nums_ratio_mean\":0.0},{\"dynamic_queue_length_max\":25.074373245239258,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":24,\"lane_flow_rate\":24.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":24,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":7.664999999999999,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0022033341228961945,\"traffic_flow\":2,\"trolley_equivalent\":2,\"vehicle_length_ratio_mean\":0.00029760406802118187,\"vehicle_nums_ratio_mean\":0.0003037124401804386}],\"laneNum\":35,\"orgCode\":\"040001\",\"timeStamp\":\"2023-03-10 17:03:14:710\"}"
;
// message = "{\"eventList\":[{\"dynamic_queue_length_max\":40.975341796875,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":48,\"lane_flow_rate\":36.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.75,\"lane_saturation_flow_rate\":48,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.3242078320733432,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":4.335211267605633,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.01257999986410141,\"traffic_flow\":3,\"trolley_equivalent\":3,\"vehicle_length_ratio_mean\":0.012526985547440197,\"vehicle_nums_ratio_mean\":0.020196877121520705},{\"dynamic_queue_length_max\":40.0,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.06967829167842865,\"laneId\":\"\",\"lane_capacity\":276,\"lane_flow_rate\":204.0,\"lane_no_stop_rate\":0.8936170339584351,\"lane_one_stop_rate\":0.10638298094272614,\"lane_saturation\":0.739130437374115,\"lane_saturation_flow_rate\":276,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":17.12477208828104,\"light_green_start_queue_length\":9.938938453279693,\"mean_delay\":5.74468085106383,\"mean_stops_number\":0,\"mean_v\":1.8776506024096384,\"static_queue_length_max\":40.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.7083266377449036,\"traffic_flow\":17,\"trolley_equivalent\":17,\"vehicle_length_ratio_mean\":0.3361885299892225,\"vehicle_nums_ratio_mean\":0.28029531568228105},{\"dynamic_queue_length_max\":68.16592407226563,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":2.1223698196739984,\"light_green_start_queue_length\":0.4052462495606521,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":3.4737642585551347,\"static_queue_length_max\":3.681959867477417,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.006259700711133706,\"vehicle_nums_ratio_mean\":0.018911842165738647},{\"dynamic_queue_length_max\":61.581146240234375,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":72,\"lane_flow_rate\":48.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.6666666865348816,\"lane_saturation_flow_rate\":72,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":1.3318108032489646,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":7.212631578947371,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.008883332833647728,\"traffic_flow\":4,\"trolley_equivalent\":4,\"vehicle_length_ratio_mean\":0.003597769999430241,\"vehicle_nums_ratio_mean\":0.004687550599710195},{\"dynamic_queue_length_max\":63.37282943725586,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":264,\"lane_flow_rate\":252.0,\"lane_no_stop_rate\":0.9696969985961914,\"lane_one_stop_rate\":0.03030303120613098,\"lane_saturation\":0.9545454382896423,\"lane_saturation_flow_rate\":264,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":4.945268778965391,\"light_green_start_queue_length\":2.922568074588118,\"mean_delay\":1.3636363636363635,\"mean_stops_number\":0,\"mean_v\":3.3937572254335286,\"static_queue_length_max\":16.445341110229492,\"static_queue_length_min\":0.0,\"time_occupancy\":0.26542335748672485,\"traffic_flow\":21,\"trolley_equivalent\":21,\"vehicle_length_ratio_mean\":0.03733014619358526,\"vehicle_nums_ratio_mean\":0.029208289426470076},{\"dynamic_queue_length_max\":56.268768310546875,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":96,\"lane_flow_rate\":96.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":96,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":4.970868834133806,\"light_green_start_queue_length\":2.2785396247074523,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":1.8774834437086092,\"static_queue_length_max\":21.169273376464844,\"static_queue_length_min\":0.0,\"time_occupancy\":0.21854667365550995,\"traffic_flow\":8,\"trolley_equivalent\":8,\"vehicle_length_ratio_mean\":0.01890855935545738,\"vehicle_nums_ratio_mean\":0.016454919001741307},{\"dynamic_queue_length_max\":74.82034301757813,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":336,\"lane_flow_rate\":336.0,\"lane_no_stop_rate\":0.9259259104728699,\"lane_one_stop_rate\":0.07407407462596893,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":336,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":10.449663754167227,\"light_green_start_queue_length\":6.243474763015221,\"mean_delay\":3.888888888888889,\"mean_stops_number\":0,\"mean_v\":3.417926565874727,\"static_queue_length_max\":22.74837303161621,\"static_queue_length_min\":0.0,\"time_occupancy\":0.36901333928108215,\"traffic_flow\":24,\"trolley_equivalent\":28,\"vehicle_length_ratio_mean\":0.09141811475446049,\"vehicle_nums_ratio_mean\":0.08030259135657844},{\"dynamic_queue_length_max\":470.63189697265625,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":180,\"lane_flow_rate\":180.0,\"lane_no_stop_rate\":0.9555555582046509,\"lane_one_stop_rate\":0.04444444552063942,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":180,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":16.329852498810865,\"light_green_start_queue_length\":11.722974982754938,\"mean_delay\":2.5,\"mean_stops_number\":0,\"mean_v\":1.8117421602787458,\"static_queue_length_max\":46.890625,\"static_queue_length_min\":0.0,\"time_occupancy\":0.6800199747085571,\"traffic_flow\":11,\"trolley_equivalent\":15,\"vehicle_length_ratio_mean\":0.06779336408589944,\"vehicle_nums_ratio_mean\":0.0582711032875646},{\"dynamic_queue_length_max\":23.018892288208008,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.012964434921741486,\"laneId\":\"\",\"lane_capacity\":72,\"lane_flow_rate\":36.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.5,\"lane_saturation_flow_rate\":72,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.6141861389423239,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":4.541960784313726,\"static_queue_length_max\":17.1435604095459,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0071033332496881485,\"traffic_flow\":3,\"trolley_equivalent\":3,\"vehicle_length_ratio_mean\":0.002242794503171429,\"vehicle_nums_ratio_mean\":0.00287633546288533},{\"dynamic_queue_length_max\":114.65453338623047,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":14.023659467697144,\"light_green_start_queue_length\":0.0992967753574766,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":3.6110457516339856,\"static_queue_length_max\":4.859949588775635,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.0012805742346469846,\"vehicle_nums_ratio_mean\":0.0027028174197727415},{\"dynamic_queue_length_max\":372.0594177246094,\"dynamic_queue_length_min\":2.3399829864501953,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":444,\"lane_flow_rate\":384.0,\"lane_no_stop_rate\":0.9885714054107666,\"lane_one_stop_rate\":0.011428571306169033,\"lane_saturation\":0.8648648858070374,\"lane_saturation_flow_rate\":444,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":154.56714787976495,\"light_green_start_queue_length\":13.386706187807281,\"mean_delay\":0.9428571428571428,\"mean_stops_number\":0,\"mean_v\":4.7758273381294964,\"static_queue_length_max\":43.37940979003906,\"static_queue_length_min\":0.0,\"time_occupancy\":0.036986663937568665,\"traffic_flow\":29,\"trolley_equivalent\":32,\"vehicle_length_ratio_mean\":0.07698311852651615,\"vehicle_nums_ratio_mean\":0.05800237682902805},{\"dynamic_queue_length_max\":371.6435241699219,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":96,\"lane_flow_rate\":72.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.75,\"lane_saturation_flow_rate\":96,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":149.71256256103516,\"light_green_start_queue_length\":12.456866034146014,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":9.356060606060607,\"static_queue_length_max\":368.05401611328125,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0038433328736573458,\"traffic_flow\":6,\"trolley_equivalent\":6,\"vehicle_length_ratio_mean\":0.013071173843431356,\"vehicle_nums_ratio_mean\":0.014736083131637588},{\"dynamic_queue_length_max\":370.0,\"dynamic_queue_length_min\":2.965820550918579,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":492,\"lane_flow_rate\":432.0,\"lane_no_stop_rate\":0.9834254384040833,\"lane_one_stop_rate\":0.016574585810303688,\"lane_saturation\":0.8780487775802612,\"lane_saturation_flow_rate\":492,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":188.10887777394262,\"light_green_start_queue_length\":15.665639088071625,\"mean_delay\":1.2430939226519337,\"mean_stops_number\":0,\"mean_v\":5.717452107279695,\"static_queue_length_max\":85.60419464111328,\"static_queue_length_min\":0.0,\"time_occupancy\":0.4382700026035309,\"traffic_flow\":36,\"trolley_equivalent\":36,\"vehicle_length_ratio_mean\":0.09328616546556728,\"vehicle_nums_ratio_mean\":0.07687118187298883},{\"dynamic_queue_length_max\":370.0,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":408,\"lane_flow_rate\":336.0,\"lane_no_stop_rate\":0.9520000219345093,\"lane_one_stop_rate\":0.04800000041723251,\"lane_saturation\":0.8235294222831726,\"lane_saturation_flow_rate\":408,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":107.36373444261223,\"light_green_start_queue_length\":8.63355828975809,\"mean_delay\":3.36,\"mean_stops_number\":0,\"mean_v\":4.588161925601749,\"static_queue_length_max\":81.62080383300781,\"static_queue_length_min\":0.0,\"time_occupancy\":0.46894001960754395,\"traffic_flow\":28,\"trolley_equivalent\":28,\"vehicle_length_ratio_mean\":0.05922727869761613,\"vehicle_nums_ratio_mean\":0.04411490205599492},{\"dynamic_queue_length_max\":75.41883850097656,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":180,\"lane_flow_rate\":168.0,\"lane_no_stop_rate\":0.7727272510528564,\"lane_one_stop_rate\":0.22727273404598236,\"lane_saturation\":0.9333333373069763,\"lane_saturation_flow_rate\":180,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":22.843779037738667,\"light_green_start_queue_length\":11.869044271008722,\"mean_delay\":16.363636363636363,\"mean_stops_number\":0,\"mean_v\":4.588436830835113,\"static_queue_length_max\":28.49137306213379,\"static_queue_length_min\":0.0,\"time_occupancy\":0.8092133402824402,\"traffic_flow\":12,\"trolley_equivalent\":14,\"vehicle_length_ratio_mean\":0.1949437555578175,\"vehicle_nums_ratio_mean\":0.14591537143096822},{\"dynamic_queue_length_max\":46.60673904418945,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.13525336980819702,\"laneId\":\"\",\"lane_capacity\":204,\"lane_flow_rate\":192.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.9411764740943909,\"lane_saturation_flow_rate\":204,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":15.36799144744873,\"light_green_start_queue_length\":8.714151109967913,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":3.4473863636363635,\"static_queue_length_max\":42.199012756347656,\"static_queue_length_min\":0.0,\"time_occupancy\":0.33947670459747314,\"traffic_flow\":16,\"trolley_equivalent\":16,\"vehicle_length_ratio_mean\":0.049264598236964906,\"vehicle_nums_ratio_mean\":0.04934657162253903},{\"dynamic_queue_length_max\":44.676570892333984,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.060385480523109436,\"laneId\":\"\",\"lane_capacity\":48,\"lane_flow_rate\":48.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":48,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":4.017500000000001,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0068066660314798355,\"traffic_flow\":4,\"trolley_equivalent\":4,\"vehicle_length_ratio_mean\":0.0019217923015497692,\"vehicle_nums_ratio_mean\":0.0013577732518669382},{\"dynamic_queue_length_max\":50.045387268066406,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.14726360142230988,\"laneId\":\"\",\"lane_capacity\":336,\"lane_flow_rate\":336.0,\"lane_no_stop_rate\":0.9534883499145508,\"lane_one_stop_rate\":0.04651162773370743,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":336,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":14.72541080202375,\"light_green_start_queue_length\":6.800526142120361,\"mean_delay\":3.488372093023256,\"mean_stops_number\":0,\"mean_v\":2.981413612565444,\"static_queue_length_max\":50.019309997558594,\"static_queue_length_min\":0.0,\"time_occupancy\":0.5300833582878113,\"traffic_flow\":26,\"trolley_equivalent\":28,\"vehicle_length_ratio_mean\":0.07812055642542715,\"vehicle_nums_ratio_mean\":0.08565286695906603},{\"dynamic_queue_length_max\":29.523109436035156,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":84,\"lane_flow_rate\":72.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.8571428656578064,\"lane_saturation_flow_rate\":84,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":4.469166666666671,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.01454333309084177,\"traffic_flow\":5,\"trolley_equivalent\":6,\"vehicle_length_ratio_mean\":0.002055284612067929,\"vehicle_nums_ratio_mean\":0.0017396469789545145},{\"dynamic_queue_length_max\":48.40139389038086,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.06887155026197433,\"laneId\":\"\",\"lane_capacity\":108,\"lane_flow_rate\":108.0,\"lane_no_stop_rate\":0.9285714030265808,\"lane_one_stop_rate\":0.0714285746216774,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":108,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":17.13508483341762,\"light_green_start_queue_length\":17.13508483341762,\"mean_delay\":2.142857142857143,\"mean_stops_number\":0,\"mean_v\":1.7502366863905314,\"static_queue_length_max\":48.40139389038086,\"static_queue_length_min\":0.0,\"time_occupancy\":0.2147066742181778,\"traffic_flow\":9,\"trolley_equivalent\":9,\"vehicle_length_ratio_mean\":0.08763728947969861,\"vehicle_nums_ratio_mean\":0.08780974202308214},{\"dynamic_queue_length_max\":371.0,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":828,\"lane_flow_rate\":696.0,\"lane_no_stop_rate\":0.9490445852279663,\"lane_one_stop_rate\":0.05095541477203369,\"lane_saturation\":0.8405796885490417,\"lane_saturation_flow_rate\":828,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":101.03698022024972,\"light_green_start_queue_length\":24.407301357814244,\"mean_delay\":4.012738853503185,\"mean_stops_number\":0,\"mean_v\":4.42488933601609,\"static_queue_length_max\":52.10312271118164,\"static_queue_length_min\":0.0,\"time_occupancy\":0.6676632761955261,\"traffic_flow\":56,\"trolley_equivalent\":58,\"vehicle_length_ratio_mean\":0.1073623936127325,\"vehicle_nums_ratio_mean\":0.10431093066103772},{\"dynamic_queue_length_max\":372.4347839355469,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":108,\"lane_flow_rate\":60.0,\"lane_no_stop_rate\":0.9909090995788574,\"lane_one_stop_rate\":0.00909090880304575,\"lane_saturation\":0.5555555820465088,\"lane_saturation_flow_rate\":108,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":183.26575967243738,\"light_green_start_queue_length\":1.7458618027823312,\"mean_delay\":0.5454545454545454,\"mean_stops_number\":0,\"mean_v\":2.369907407407407,\"static_queue_length_max\":15.441865921020508,\"static_queue_length_min\":0.0,\"time_occupancy\":0.260696679353714,\"traffic_flow\":5,\"trolley_equivalent\":5,\"vehicle_length_ratio_mean\":0.03587172349544403,\"vehicle_nums_ratio_mean\":0.03281992581373906},{\"dynamic_queue_length_max\":373.38916015625,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":60,\"lane_flow_rate\":60.0,\"lane_no_stop_rate\":0.9918032884597778,\"lane_one_stop_rate\":0.008196720853447914,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":60,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":208.2078195299421,\"light_green_start_queue_length\":0.4642688206263951,\"mean_delay\":0.6147540983606558,\"mean_stops_number\":0,\"mean_v\":2.714743202416921,\"static_queue_length_max\":7.421406269073486,\"static_queue_length_min\":0.0,\"time_occupancy\":0.22264666855335236,\"traffic_flow\":5,\"trolley_equivalent\":5,\"vehicle_length_ratio_mean\":0.047669618556627505,\"vehicle_nums_ratio_mean\":0.038675322940918314},{\"dynamic_queue_length_max\":51.19540786743164,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.12543940544128418,\"laneId\":\"\",\"lane_capacity\":300,\"lane_flow_rate\":276.0,\"lane_no_stop_rate\":0.9047619104385376,\"lane_one_stop_rate\":0.095238097012043,\"lane_saturation\":0.9200000166893005,\"lane_saturation_flow_rate\":300,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":23.933147975376674,\"light_green_start_queue_length\":18.824801445007324,\"mean_delay\":11.071428571428571,\"mean_stops_number\":0,\"mean_v\":3.4368482490272374,\"static_queue_length_max\":51.19540786743164,\"static_queue_length_min\":0.0,\"time_occupancy\":0.7569065690040588,\"traffic_flow\":19,\"trolley_equivalent\":23,\"vehicle_length_ratio_mean\":0.22347544479637185,\"vehicle_nums_ratio_mean\":0.17155088182698078},{\"dynamic_queue_length_max\":48.06354904174805,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.25814419984817505,\"laneId\":\"\",\"lane_capacity\":456,\"lane_flow_rate\":420.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.9210526347160339,\"lane_saturation_flow_rate\":456,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":6.743759768349784,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":9.33344947735192,\"static_queue_length_max\":21.375097274780273,\"static_queue_length_min\":0.0,\"time_occupancy\":0.08263000845909119,\"traffic_flow\":35,\"trolley_equivalent\":35,\"vehicle_length_ratio_mean\":0.032610454184976226,\"vehicle_nums_ratio_mean\":0.029173267185839763},{\"dynamic_queue_length_max\":52.07501983642578,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.07083287835121155,\"laneId\":\"\",\"lane_capacity\":204,\"lane_flow_rate\":180.0,\"lane_no_stop_rate\":0.8285714387893677,\"lane_one_stop_rate\":0.17142857611179352,\"lane_saturation\":0.8823529481887817,\"lane_saturation_flow_rate\":204,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":28.14895793369838,\"light_green_start_queue_length\":27.185110364641464,\"mean_delay\":12.428571428571429,\"mean_stops_number\":0,\"mean_v\":2.3490223463687148,\"static_queue_length_max\":51.60746765136719,\"static_queue_length_min\":0.0,\"time_occupancy\":0.5188466310501099,\"traffic_flow\":15,\"trolley_equivalent\":15,\"vehicle_length_ratio_mean\":0.23345167850677204,\"vehicle_nums_ratio_mean\":0.16815644997574808},{\"dynamic_queue_length_max\":48.34062576293945,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.08141857385635376,\"laneId\":\"\",\"lane_capacity\":336,\"lane_flow_rate\":180.0,\"lane_no_stop_rate\":0.9117646813392639,\"lane_one_stop_rate\":0.0882352963089943,\"lane_saturation\":0.5357142686843872,\"lane_saturation_flow_rate\":336,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":20.943053245544434,\"light_green_start_queue_length\":15.544171469552177,\"mean_delay\":9.264705882352942,\"mean_stops_number\":0,\"mean_v\":3.3683863080684575,\"static_queue_length_max\":45.82487106323242,\"static_queue_length_min\":0.0,\"time_occupancy\":0.648930013179779,\"traffic_flow\":15,\"trolley_equivalent\":15,\"vehicle_length_ratio_mean\":0.17561335737380096,\"vehicle_nums_ratio_mean\":0.13609791253437337},{\"dynamic_queue_length_max\":42.26611328125,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":4.69802736384528,\"light_green_start_queue_length\":0.11607186283384051,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":7.513181818181817,\"static_queue_length_max\":3.347986936569214,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.0040865438365619644,\"vehicle_nums_ratio_mean\":0.014162329443492052},{\"dynamic_queue_length_max\":48.721282958984375,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.1409478783607483,\"laneId\":\"\",\"lane_capacity\":348,\"lane_flow_rate\":204.0,\"lane_no_stop_rate\":0.875,\"lane_one_stop_rate\":0.125,\"lane_saturation\":0.5862069129943848,\"lane_saturation_flow_rate\":348,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":26.508986609322683,\"light_green_start_queue_length\":16.698043823242188,\"mean_delay\":13.125,\"mean_stops_number\":0,\"mean_v\":2.713824228028499,\"static_queue_length_max\":46.516483306884766,\"static_queue_length_min\":0.0,\"time_occupancy\":0.6088699698448181,\"traffic_flow\":17,\"trolley_equivalent\":17,\"vehicle_length_ratio_mean\":0.23827141966830082,\"vehicle_nums_ratio_mean\":0.15022252876379824},{\"dynamic_queue_length_max\":0.0,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":0.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":0.0,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.0,\"vehicle_nums_ratio_mean\":0.0},{\"dynamic_queue_length_max\":0.0,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":0.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":0.0,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.0,\"vehicle_nums_ratio_mean\":0.0},{\"dynamic_queue_length_max\":59.1076774597168,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":2.1744209017072404,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":0.0,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.006782431415935317,\"vehicle_nums_ratio_mean\":0.005984921610262308},{\"dynamic_queue_length_max\":10.900229454040527,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":24,\"lane_flow_rate\":24.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":24,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":7.6599999999999975,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.003563334234058857,\"traffic_flow\":2,\"trolley_equivalent\":2,\"vehicle_length_ratio_mean\":0.0002124606500817899,\"vehicle_nums_ratio_mean\":0.0002143852518920743},{\"dynamic_queue_length_max\":0.0,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":0,\"lane_flow_rate\":0.0,\"lane_no_stop_rate\":0.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":0.0,\"lane_saturation_flow_rate\":0,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":0.0,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0,\"traffic_flow\":0,\"trolley_equivalent\":0,\"vehicle_length_ratio_mean\":0.0,\"vehicle_nums_ratio_mean\":0.0},{\"dynamic_queue_length_max\":25.074373245239258,\"dynamic_queue_length_min\":0.0,\"green_light_efficiency\":0.0,\"laneId\":\"\",\"lane_capacity\":24,\"lane_flow_rate\":24.0,\"lane_no_stop_rate\":1.0,\"lane_one_stop_rate\":0.0,\"lane_saturation\":1.0,\"lane_saturation_flow_rate\":24,\"lane_three_stop_rate\":0.0,\"lane_two_stop_rate\":0.0,\"light_green_finish_queue_length\":0.0,\"light_green_start_queue_length\":0.0,\"mean_delay\":0.0,\"mean_stops_number\":0,\"mean_v\":7.664999999999999,\"static_queue_length_max\":0.0,\"static_queue_length_min\":0.0,\"time_occupancy\":0.0022033341228961945,\"traffic_flow\":2,\"trolley_equivalent\":2,\"vehicle_length_ratio_mean\":0.00029760406802118187,\"vehicle_nums_ratio_mean\":0.0003037124401804386}],\"laneNum\":35,\"orgCode\":\"040001\",\"timeStamp\":\"2023-03-10 17:03:14:710\"}";
message
=
"{\n"
+
" \"eventList\": [\n"
+
" {\n"
+
" \"dynamic_queue_length_max\": 40.975341796875,\n"
+
" \"dynamic_queue_length_min\": 0.0,\n"
+
" \"green_light_efficiency\": 0.0,\n"
+
" \"laneId\": \"14PU609IQA014PUG09IRA0010011\",\n"
+
" \"lane_capacity\": 48,\n"
+
" \"lane_flow_rate\": 36.0,\n"
+
" \"lane_no_stop_rate\": 1.0,\n"
+
" \"lane_one_stop_rate\": 0.0,\n"
+
" \"lane_saturation\": 0.75,\n"
+
" \"lane_saturation_flow_rate\": 48,\n"
+
" \"lane_three_stop_rate\": 0.0,\n"
+
" \"lane_two_stop_rate\": 0.0,\n"
+
" \"light_green_finish_queue_length\": 0.3242078320733432,\n"
+
" \"light_green_start_queue_length\": 0.0,\n"
+
" \"mean_delay\": 0.0,\n"
+
" \"mean_stops_number\": 0,\n"
+
" \"mean_v\": 4.335211267605633,\n"
+
" \"static_queue_length_max\": 0.0,\n"
+
" \"static_queue_length_min\": 0.0,\n"
+
" \"time_occupancy\": 0.01257999986410141,\n"
+
" \"traffic_flow\": 3,\n"
+
" \"trolley_equivalent\": 3,\n"
+
" \"vehicle_length_ratio_mean\": 0.012526985547440197,\n"
+
" \"vehicle_nums_ratio_mean\": 0.020196877121520705\n"
+
" },\n"
+
" {\n"
+
" \"dynamic_queue_length_max\": 40.0,\n"
+
" \"dynamic_queue_length_min\": 0.0,\n"
+
" \"green_light_efficiency\": 0.06967829167842865,\n"
+
" \"laneId\": \"14PU609IQA014PUG09IRA0010012\",\n"
+
" \"lane_capacity\": 276,\n"
+
" \"lane_flow_rate\": 204.0,\n"
+
" \"lane_no_stop_rate\": 0.8936170339584351,\n"
+
" \"lane_one_stop_rate\": 0.10638298094272614,\n"
+
" \"lane_saturation\": 0.739130437374115,\n"
+
" \"lane_saturation_flow_rate\": 276,\n"
+
" \"lane_three_stop_rate\": 0.0,\n"
+
" \"lane_two_stop_rate\": 0.0,\n"
+
" \"light_green_finish_queue_length\": 17.12477208828104,\n"
+
" \"light_green_start_queue_length\": 9.938938453279693,\n"
+
" \"mean_delay\": 5.74468085106383,\n"
+
" \"mean_stops_number\": 0,\n"
+
" \"mean_v\": 1.8776506024096384,\n"
+
" \"static_queue_length_max\": 40.0,\n"
+
" \"static_queue_length_min\": 0.0,\n"
+
" \"time_occupancy\": 0.7083266377449036,\n"
+
" \"traffic_flow\": 17,\n"
+
" \"trolley_equivalent\": 17,\n"
+
" \"vehicle_length_ratio_mean\": 0.3361885299892225,\n"
+
" \"vehicle_nums_ratio_mean\": 0.28029531568228105\n"
+
" }\n"
+
" ],\n"
+
" \"laneNum\": 2,\n"
+
" \"orgCode\": \"040001\",\n"
+
" \"timeStamp\": \"2023-03-1017: 03: 14: 710\"\n"
+
"}"
;
}
}
Object
convert
=
bean
.
convert
(
message
);
Object
convert
=
bean
.
convert
(
message
);
// 本地保存
// 本地保存
...
@@ -43,7 +102,7 @@ public class DataProcessTask {
...
@@ -43,7 +102,7 @@ public class DataProcessTask {
}
}
}
}
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"数据加工处理失败"
);
log
.
error
(
"数据加工处理失败"
,
e
);
}
}
}
}
...
...
signal-datacenter-service/src/main/resources/application.yml
View file @
aae93b9c
...
@@ -37,7 +37,7 @@ server:
...
@@ -37,7 +37,7 @@ server:
mybatis-plus
:
mybatis-plus
:
mapper-locations
:
classpath:mapper/*.xml,classpath:mapper/*/*.xml
mapper-locations
:
classpath:mapper/*.xml,classpath:mapper/*/*.xml
typeAliasesPackage
:
net.wanji.datacenter.
entity
typeAliasesPackage
:
net.wanji.datacenter.
pojo.po
check-config-location
:
true
check-config-location
:
true
configuration
:
configuration
:
#是否开启自动驼峰命名规则(camel case)映射
#是否开启自动驼峰命名规则(camel case)映射
...
...
signal-datacenter-service/src/main/resources/mapper/CrossDataRealTimeMapper.xml
View file @
aae93b9c
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"net.wanji.datacenter.mapper.CrossDataRealTimeMapper"
>
<mapper
namespace=
"net.wanji.datacenter.mapper.CrossDataRealTimeMapper"
>
<resultMap
id=
"BaseResultMap"
type=
"net.wanji.datacenter.pojo.po.CrossDataRealTimePO"
>
<result
column=
"cross_id"
property=
"crossId"
></result>
<result
column=
"status"
property=
"status"
></result>
<result
column=
"type"
property=
"type"
></result>
<result
column=
"traffic_index"
property=
"trafficIndex"
></result>
<result
column=
"start_time"
property=
"startTime"
></result>
<result
column=
"duration"
property=
"duration"
></result>
<result
column=
"is_unbalance"
property=
"unbalanceStatus"
></result>
<result
column=
"is_spillover"
property=
"spilloverStatus"
></result>
<result
column=
"is_congestion"
property=
"congestionStatus"
></result>
<result
column=
"unbalance_index"
property=
"unbalanceIndex"
></result>
<result
column=
"spillover_index"
property=
"spilloverIndex"
></result>
<result
column=
"congestion_index"
property=
"congestionIndex"
></result>
<result
column=
"unbalance_dirs"
property=
"unbalanceDirs"
></result>
<result
column=
"spillover_dirs"
property=
"spilloverDirs"
></result>
<result
column=
"congestion_dirs"
property=
"congestionDirs"
></result>
<result
column=
"flow"
property=
"flow"
></result>
<result
column=
"flow_rate"
property=
"flowRate"
></result>
<result
column=
"speed"
property=
"speed"
></result>
<result
column=
"queue_length"
property=
"queueLength"
></result>
<result
column=
"stop_times"
property=
"stopTimes"
></result>
<result
column=
"delay_time"
property=
"delayTime"
></result>
<result
column=
"sturation"
property=
"sturation"
></result>
<result
column=
"batch_time"
property=
"batchTime"
></result>
<result
column=
"gmt_create"
property=
"gmtCreate"
></result>
<result
column=
"gmt_modified"
property=
"gmtModified"
></result>
</resultMap>
<sql
id=
"Base_Column_List"
>
cross_id, status, type, traffic_index, start_time, duration, is_unbalance, is_spillover, is_congestion,
unbalance_index, spillover_index, congestion_index, unbalance_dirs, spillover_dirs, congestion_dirs,
flow, flow_rate, speed, queue_length, stop_times, delay_time, sturation, batch_time, gmt_create, gmt_modified
</sql>
<insert
id=
"insertBatch"
parameterType=
"net.wanji.datacenter.pojo.po.CrossDataRealTimePO"
>
insert into t_cross_data_realtime
(
<include
refid=
"Base_Column_List"
></include>
)
values
<foreach
collection=
"list"
item=
"entity"
separator=
","
>
(#{entity.crossId},#{entity.status},#{entity.type},#{entity.trafficIndex},#{entity.startTime},#{entity.duration},#{entity.unbalanceStatus},#{entity.spilloverStatus},#{entity.congestionIndex},
#{entity.unbalanceIndex},#{entity.spilloverIndex},#{entity.congestionIndex},#{entity.unbalanceDirs},#{entity.spilloverDirs},#{entity.congestionDirs},
#{entity.flow},#{entity.flowRate},#{entity.speed},#{entity.queueLength},#{entity.stopTimes},#{entity.delayTime},#{entity.sturation},#{entity.batchTime},#{entity.gmtCreate},#{entity.gmtModified})
</foreach>
</insert>
</mapper>
</mapper>
\ No newline at end of file
signal-datacenter-service/src/main/resources/mapper/CrossDirDataRealTimeMapper.xml
View file @
aae93b9c
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"net.wanji.datacenter.mapper.CrossDirDataRealTimeMapper"
>
<mapper
namespace=
"net.wanji.datacenter.mapper.CrossDirDataRealTimeMapper"
>
<resultMap
id=
"BaseResultMap"
type=
"net.wanji.datacenter.pojo.po.CrossDirDataRealTimePO"
>
<result
column=
"id"
property=
"id"
></result>
<result
column=
"dir_type"
property=
"dirType"
></result>
<result
column=
"in_out_type"
property=
"inOutType"
></result>
<result
column=
"cross_id"
property=
"crossId"
></result>
<result
column=
"length"
property=
"length"
></result>
<result
column=
"status"
property=
"status"
></result>
<result
column=
"traffic_index"
property=
"trafficIndex"
></result>
<result
column=
"start_time"
property=
"startTime"
></result>
<result
column=
"capacity"
property=
"capacity"
></result>
<result
column=
"duration"
property=
"duration"
></result>
<result
column=
"flow"
property=
"flow"
></result>
<result
column=
"speed"
property=
"speed"
></result>
<result
column=
"queue_length"
property=
"queueLength"
></result>
<result
column=
"stop_times"
property=
"stopTimes"
></result>
<result
column=
"delay_time"
property=
"delayTime"
></result>
<result
column=
"sturation"
property=
"sturation"
></result>
<result
column=
"batch_time"
property=
"batchTime"
></result>
<result
column=
"gmt_create"
property=
"gmtCreate"
></result>
<result
column=
"gmt_modified"
property=
"gmtModified"
></result>
<result
column=
"effusion_time"
property=
"effusionTime"
></result>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, dir_type, in_out_type, cross_id, length, status, traffic_index, start_time, capacity, duration, flow,
speed, queue_length, stop_times, delay_time, sturation, batch_time, gmt_create, gmt_modified, effusion_time
</sql>
<insert
id=
"insertBatch"
parameterType=
"net.wanji.datacenter.pojo.po.CrossDirDataRealTimePO"
>
insert into t_cross_dir_data_realtime
(
<include
refid=
"Base_Column_List"
></include>
)
values
<foreach
collection=
"list"
item=
"entity"
separator=
","
>
(#{entity.id},#{entity.dirType},#{entity.inOutType},#{entity.crossId},#{entity.length},#{entity.status},#{entity.trafficIndex},#{entity.startTime},#{entity.capacity}, #{entity.duration},#{entity.flow},
#{entity.speed},#{entity.queueLength},#{entity.stopTimes},#{entity.delayTime},#{entity.sturation},#{entity.batchTime},#{entity.gmtCreate},#{entity.gmtModified},#{entity.effusionTime})
</foreach>
</insert>
</mapper>
</mapper>
\ No newline at end of file
signal-datacenter-service/src/main/resources/mapper/CrossLaneDataRealTimeMapper.xml
View file @
aae93b9c
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"net.wanji.datacenter.mapper.CrossLaneDataRealTimeMapper"
>
<mapper
namespace=
"net.wanji.datacenter.mapper.CrossLaneDataRealTimeMapper"
>
<resultMap
id=
"BaseResultMap"
type=
"net.wanji.datacenter.pojo.po.CrossLaneDataRealTimePO"
>
<result
column=
"id"
property=
"id"
></result>
<result
column=
"cross_id"
property=
"crossId"
></result>
<result
column=
"flow"
property=
"flow"
></result>
<result
column=
"speed"
property=
"speed"
></result>
<result
column=
"in_speed"
property=
"inSpeed"
></result>
<result
column=
"out_speed"
property=
"outSpeed"
></result>
<result
column=
"queue_length"
property=
"queueLength"
></result>
<result
column=
"stop_times"
property=
"stopTimes"
></result>
<result
column=
"delay_time"
property=
"delayTime"
></result>
<result
column=
"capacity"
property=
"capacity"
></result>
<result
column=
"sturation"
property=
"sturation"
></result>
<result
column=
"vehhead_dist"
property=
"vehheadDist"
></result>
<result
column=
"vehhead_time"
property=
"vehheadTime"
></result>
<result
column=
"quality"
property=
"quality"
></result>
<result
column=
"batch_time"
property=
"batchTime"
></result>
<result
column=
"gmt_create"
property=
"gmtCreate"
></result>
<result
column=
"gmt_modified"
property=
"gmtModified"
></result>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, cross_id, flow, speed, in_speed, out_speed, queue_length, stop_times, delay_time, capacity, sturation,
vehhead_dist, vehhead_time, quality, batch_time, gmt_create, gmt_modified
</sql>
<insert
id=
"insertBatch"
parameterType=
"net.wanji.datacenter.pojo.po.CrossLaneDataRealTimePO"
>
insert into t_lane_data_realtime
(
<include
refid=
"Base_Column_List"
></include>
)
values
<foreach
collection=
"list"
item=
"entity"
separator=
","
>
(#{entity.id},#{entity.crossId},#{entity.flow},#{entity.speed},#{entity.inSpeed},#{entity.outSpeed},#{entity.queueLength},#{entity.stopTimes},#{entity.delayTime},#{entity.capacity},#{entity.sturation},
#{entity.vehheadDist},#{entity.vehheadTime},#{entity.quality},#{entity.batchTime},#{entity.gmtCreate},#{entity.gmtModified})
</foreach>
</insert>
</mapper>
</mapper>
\ No newline at end of file
signal-datacenter-service/src/main/resources/mapper/CrossTurnDataRealTimeMapper.xml
View file @
aae93b9c
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"net.wanji.datacenter.mapper.CrossTurnDataRealTimeMapper"
>
<mapper
namespace=
"net.wanji.datacenter.mapper.CrossTurnDataRealTimeMapper"
>
<resultMap
id=
"BaseResultMap"
type=
"net.wanji.datacenter.pojo.po.CrossTurnDataRealtimePO"
>
<result
column=
"id"
property=
"id"
></result>
<result
column=
"turn_type"
property=
"turnType"
></result>
<result
column=
"in_dir"
property=
"inDir"
></result>
<result
column=
"out_dir"
property=
"outDir"
></result>
<result
column=
"cross_id"
property=
"crossId"
></result>
<result
column=
"flow"
property=
"flow"
></result>
<result
column=
"status"
property=
"status"
></result>
<result
column=
"traffic_index"
property=
"trafficIndex"
></result>
<result
column=
"speed"
property=
"speed"
></result>
<result
column=
"in_speed"
property=
"inSpeed"
></result>
<result
column=
"out_speed"
property=
"outSpeed"
></result>
<result
column=
"queue_length"
property=
"queueLength"
></result>
<result
column=
"stop_times"
property=
"stopTimes"
></result>
<result
column=
"delay_time"
property=
"delayTime"
></result>
<result
column=
"sturation"
property=
"sturation"
></result>
<result
column=
"vehhead_dist"
property=
"vehheadDist"
></result>
<result
column=
"vehhead_time"
property=
"vehheadTime"
></result>
<result
column=
"quality"
property=
"quality"
></result>
<result
column=
"batch_time"
property=
"batchTime"
></result>
<result
column=
"gmt_create"
property=
"gmtCreate"
></result>
<result
column=
"gmt_modified"
property=
"gmtModified"
></result>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, turn_type, in_dir, out_dir, cross_id, flow, status, traffic_index, speed, in_speed, out_speed, queue_length,
stop_times, delay_time, sturation, vehhead_dist, vehhead_time, quality, batch_time, gmt_create, gmt_modified
</sql>
<insert
id=
"insertBatch"
parameterType=
"net.wanji.datacenter.pojo.po.CrossTurnDataRealtimePO"
>
insert into t_cross_turn_data_realtime
(
<include
refid=
"Base_Column_List"
></include>
)
values
<foreach
collection=
"list"
item=
"entity"
separator=
","
>
(#{entity.id},#{entity.turnType},#{entity.inDir},#{entity.outDir},#{entity.crossId},#{entity.flow},#{entity.status},#{entity.trafficIndex},#{entity.speed},#{entity.inSpeed},#{entity.outSpeed},#{entity.queueLength},
#{entity.stopTimes},#{entity.delayTime},#{entity.sturation},#{entity.vehheadDist},#{entity.vehheadTime},#{entity.quality},#{entity.batchTime},#{entity.gmtCreate},#{entity.gmtModified})
</foreach>
</insert>
</mapper>
</mapper>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment