diff --git a/.github/workflows/unit_test.yml b/.github/workflows/unit_test.yml
index c4462f2..7ab2d0f 100644
--- a/.github/workflows/unit_test.yml
+++ b/.github/workflows/unit_test.yml
@@ -23,8 +23,12 @@ jobs:
run: |
sudo add-apt-repository ppa:sumo/stable
sudo apt-get update
- sudo apt-get install sumo sumo-tools
+ sudo apt-get install sumo sumo-tools build-essential cmake
export SUMO_HOME=/usr/share/sumo/tools
+ git clone https://github.com/cityflow-project/CityFlow.git
+ cd CityFlow
+ python -m pip install -e .
+ cd ..
python -m pip install -e .
python -m pip install -e ".[test]"
./modify_traci_connect_timeout.sh
diff --git a/.gitignore b/.gitignore
index f0621a6..6e91c41 100644
--- a/.gitignore
+++ b/.gitignore
@@ -134,5 +134,8 @@ dmypy.json
*_case_info.json
*_flow*.sumocfg
+.vscode
debug
-exp
+exp*
+replay*.json
+replay*.txt
diff --git a/README.md b/README.md
index dc00193..087651c 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# DI-smartcross
-
+
DI-smartcross - Decision Intelligence Platform for Traffic Crossing Signal Control.
@@ -10,7 +10,7 @@ DI-smartcross is application platform under [OpenDILab](http://opendilab.org/)
**DI-smartcross** is an open-source traffic crossing signal control platform. DI-smartcross applies several Reinforcement Learning policies training & evaluation for traffic signal control system in provided road nets.
-DI-smartcross uses [**DI-engine**](https://github.com/opendilab/DI-engine), a Reinforcement Learning platform to build RL experiments. DI-smartcross uses [SUMO](https://www.eclipse.org/sumo/) (Simulation of Urban MObility) traffic simulator package to run signal control simulation.
+DI-smartcross uses [**DI-engine**](https://github.com/opendilab/DI-engine), a Reinforcement Learning platform to build RL experiments. DI-smartcross uses [SUMO](https://www.eclipse.org/sumo/) (Simulation of Urban MObility) and [CityFlow](https://cityflow-project.github.io) traffic simulator packages to run signal control simulation.
DI-smartcross supports:
@@ -24,9 +24,10 @@ DI-smartcross supports:
DI-smartcross supports SUMO version >= 1.6.0. You can refer to
[SUMO documentation](https://sumo.dlr.de/docs/Installing/index.html) or follow our installation guidance in
[documents](https://opendilab.github.io/DI-smartcross/installation.html).
+CityFlow can be installed and compiled from source code. You can clone their repo and run `pip install .`
Then, DI-smartcross is able to be installed from source code.
-Simply run `pip install` in the root folder of this repository.
+Simply run `pip install .` in the root folder of this repository.
This will automatically insall [DI-engine](https://github.com/opendilab/DI-engine) as well.
```bash
@@ -40,22 +41,37 @@ and Rainbow DQN RL methods with multi-discrete actions for each crossing, as wel
in which each crossing is handled by a individual agent. A set of default DI-engine configs is provided for
each policy. You can check the document of DI-engine to get detail instructions of these configs.
+Here we show RL training sript for sumo envs, same with cityflow env.
+
- train RL policies
-Example of running DQN in wj3 env with default config.
+Example of running DQN in sumo wj3 env with default config.
```bash
sumo_train -e smartcross/envs/sumo_wj3_default_config.yaml -d entry/config/sumo_wj3_dqn_default_config.py
```
+Example of running PPO in cityflow grid env with default config.
+
+```bash
+cityflow_train -e ./smartcross/envs/cityflow_grid/cityflow_grid_config.json -d entry/cityflow_config/cityflow_grid_ppo_default_config.py
+```
+
- evaluate existing policies
Example of running random policy in wj3 env.
+
```bash
sumo_eval -p random -e smartcross/envs/sumo_wj3_default_config.yaml
```
+Example of running fix policy in cityflow grid env.
+
+```bash
+cityflow_eval -e smartcross/envs/cityflow_grid/cityflow_auto_grid_config.json -d entry/cityflow_config/cityflow_eval_default_config.py -p fix
+```
+
It is rerecommended to refer to [documation](https://opendilab.github.io/DI-smartcross/index.html)
for detail information.
@@ -68,6 +84,7 @@ We appreciate all contributions to improve DI-smartcross, both algorithms and sy
DI-smartcross released under the Apache 2.0 license.
## Citation
+
```latex
@misc{smartcross,
title={{DI-smartcross: OpenDILab} Decision Intelligence platform for Traffic Crossing Signal Control},
@@ -77,4 +94,3 @@ DI-smartcross released under the Apache 2.0 license.
year={2021},
}
```
-
diff --git a/docs/figs/di-smartcross_banner.png b/docs/figs/di-smartcross_banner.png
new file mode 100644
index 0000000..dfafdb7
Binary files /dev/null and b/docs/figs/di-smartcross_banner.png differ
diff --git a/docs/source/envs/cf_grid_env.rst b/docs/source/envs/cf_grid_env.rst
new file mode 100644
index 0000000..d13c549
--- /dev/null
+++ b/docs/source/envs/cf_grid_env.rst
@@ -0,0 +1,2 @@
+CityFlow Grid Env
+#####################
\ No newline at end of file
diff --git a/docs/source/envs/rl_arterial7_env.rst b/docs/source/envs/rl_arterial7_env.rst
new file mode 100644
index 0000000..c05f3cc
--- /dev/null
+++ b/docs/source/envs/rl_arterial7_env.rst
@@ -0,0 +1,2 @@
+SUMO RL Arterial 7 Crossings Env
+#################################
\ No newline at end of file
diff --git a/docs/source/envs/wj3_env.rst b/docs/source/envs/wj3_env.rst
new file mode 100644
index 0000000..9d3ba05
--- /dev/null
+++ b/docs/source/envs/wj3_env.rst
@@ -0,0 +1,3 @@
+SUMO Beijing Wangjing 3 Crossings Env
+######################################
+
diff --git a/docs/source/faq.rst b/docs/source/faq.rst
new file mode 100644
index 0000000..b90795e
--- /dev/null
+++ b/docs/source/faq.rst
@@ -0,0 +1,15 @@
+FAQ
+##############
+
+.. toctree::
+ :maxdepth: 2
+
+
+Q1: SUMO environment always showing `Retrying in 1 seconds`
+------------------------------------------------------------------
+
+:A1:
+ SUMO environments and `traci` lib is slow to reset when running with large roadnets.
+ It only check the collection after reset for 1 sec. DI-smartcross provides an easy way
+ to change the retry timeout for `traci`. You can run `modify_traci_connect_timeout.sh`
+ file. It will automatically
diff --git a/docs/source/index.rst b/docs/source/index.rst
index e915703..1f5abb2 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -1,4 +1,4 @@
-.. DI-drive documentation master file, created by
+.. DI-smartcross documentation master file, created by
sphinx-quickstart on Mon Jan 25 13:49:15 2021.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
@@ -14,15 +14,14 @@ DI-smartcross Documentation
installation
quick_start
rl_environments
+ faq
-
-.. figure:: ../figs/di-smartcross_logo.png
+.. figure:: ../figs/di-smartcross_banner.png
:alt: DI-smartcross
- :width: 500px
Decision Intelligence Platform for Traffic Crossing Signal Control.
-Last updated on
+Last updated on 2022.04.16
-----
@@ -50,10 +49,13 @@ Content
==============
`Installation `_
---------------------------------------
+------------------------------------------
+
+`Quick Start `_
+-------------------------------------
-`Quick Start `_
------------------------------
+`RL Environments `_
+-------------------------------------------------
-`RL Environments `_
-----------------------------------------
+`FAQ `_
+--------------------
diff --git a/docs/source/installation.rst b/docs/source/installation.rst
index 13a3e7a..52f5c65 100644
--- a/docs/source/installation.rst
+++ b/docs/source/installation.rst
@@ -4,10 +4,17 @@ Installation
.. toctree::
:maxdepth: 2
+Here we provide easy installation for **DI-smartcross** and all simulators supported.
+
+.. note::
+
+ You can choose one of the simulators to run your experiments. Only chosen one needs to be installed.
+
+
SUMO installation
=====================
-**DI-smartcross** support SUMO version >= 1.6.0. Here we show two easy guides
+**DI-smartcross** supports SUMO version >= 1.6.0. Here we show two easy guides
of SUMO installation on Linux.
Install SUMO via apt-get or homebrew
@@ -92,6 +99,23 @@ If successful, the following message will be shown in the shell.
License EPL-2.0: Eclipse Public License Version 2
Use --help to get the list of options.
+
+CityFlow Installation
+==========================
+
+CityFlow simulator can be installed from source code via `CMake `_.
+Please make sure it is correctly worked in your system.
+
+Simply download their source code and run ``pip install`` in the root folder to install CityFlow.
+
+.. code:: bash
+
+ git clone https://github.com/cityflow-project/CityFlow.git
+ cd CityFlow
+ pip install .
+
+You can check installation by running ``import cityflow`` in python.
+
Install DI-smartcross
==========================
diff --git a/docs/source/quick_start.rst b/docs/source/quick_start.rst
index ffb72a1..f87ea51 100644
--- a/docs/source/quick_start.rst
+++ b/docs/source/quick_start.rst
@@ -15,11 +15,13 @@ to get detail instructions of these configs.
train RL policies
--------------------
+The type of policy can be automatically parsed from the config file.
+
.. code::
usage: sumo_train [-h] -d DING_CFG -e ENV_CFG [-s SEED] [--dynamic-flow]
- [-cn COLLECT_ENV_NUM] [-en EVALUATE_ENV_NUM]
- [--exp-name EXP_NAME]
+ [-cn COLLECT_ENV_NUM] [-en EVALUATE_ENV_NUM]
+ [--exp-name EXP_NAME]
DI-smartcross training script
@@ -40,6 +42,10 @@ train RL policies
Example of running DQN in wj3 env with default config.
+.. note::
+
+ Running with dynamic flow is only supported for arterial7 env currently.
+
.. code:: bash
sumo_train -e smartcross/envs/sumo_wj3_default_config.yaml -d entry/config/sumo_wj3_dqn_default_config.py
@@ -47,11 +53,14 @@ Example of running DQN in wj3 env with default config.
evaluate existing policies
--------------------------------
+We provide two eval policies: random and fixed-time. You can choose one to evaluate
+as comparison. It is suggested to use the `eval_default_config` for each env.
+
.. code::
usage: sumo_eval [-h] [-d DING_CFG] -e ENV_CFG [-s SEED]
- [-p {random,fix,dqn,rainbow,ppo}] [--dynamic-flow]
- [-n ENV_NUM] [--gui] [-c CKPT_PATH]
+ [-p {random,fix,dqn,rainbow,ppo}] [--dynamic-flow]
+ [-n ENV_NUM] [--gui] [-c CKPT_PATH]
DI-smartcross testing script
@@ -76,4 +85,63 @@ Example of running random policy in wj3 env.
.. code:: bash
- sumo_eval -p random -e smartcross/envs/sumo_wj3_default_config.yaml
\ No newline at end of file
+ sumo_eval -p random -e smartcross/envs/sumo_wj3_default_config.yaml
+
+
+CityFlow Entries
+=================
+
+**DI-smartcross** provides a simple DQN and Off-policy PPO demo for CityFlow env. Each
+policy comes with a default **DI-engine** configs is provided for each policy. You can
+check the document of DI-engine to get detail instructions of these configs.
+
+train RL policies
+--------------------
+
+.. code::
+
+ usage: cityflow_train [-h] -d DING_CFG -e ENV_CFG [-s SEED]
+ [-cn COLLECT_ENV_NUM] [-en EVALUATE_ENV_NUM]
+ [--exp-name EXP_NAME]
+
+ DI-smartcross training script
+
+ optional arguments:
+ -h, --help show this help message and exit
+ -d DING_CFG, --ding-cfg DING_CFG
+ DI-engine configuration path
+ -e ENV_CFG, --env-cfg ENV_CFG
+ cityflow json configuration path
+ -s SEED, --seed SEED random seed
+ -cn COLLECT_ENV_NUM, --collect-env-num COLLECT_ENV_NUM
+ collector env num for training
+ -en EVALUATE_ENV_NUM, --evaluate-env-num EVALUATE_ENV_NUM
+ evaluator env num for training
+ --exp-name EXP_NAME experiment name to save log and ckpt
+
+evaluate existing policies
+--------------------------------
+
+Note that CityFlow will run in fixed-time mode by default when not in rl mode.
+So the fix policy runs with an `auto_config.json`.
+
+.. code::
+
+ usage: cityflow_eval [-h] [-d DING_CFG] -e ENV_CFG [-s SEED]
+ [-p {fix,dqn,ppo}] [-n ENV_NUM] [-c CKPT_PATH]
+
+ DI-smartcross training script
+
+ optional arguments:
+ -h, --help show this help message and exit
+ -d DING_CFG, --ding-cfg DING_CFG
+ DI-engine configuration path
+ -e ENV_CFG, --env-cfg ENV_CFG
+ sumo environment configuration path
+ -s SEED, --seed SEED random seed for sumo
+ -p {fix,dqn,ppo}, --policy-type {fix,dqn,ppo}
+ RL policy type
+ -n ENV_NUM, --env-num ENV_NUM
+ sumo env num for evaluation
+ -c CKPT_PATH, --ckpt-path CKPT_PATH
+ model ckpt path
diff --git a/docs/source/rl_environments.rst b/docs/source/rl_environments.rst
index d04494c..4ea7b4f 100644
--- a/docs/source/rl_environments.rst
+++ b/docs/source/rl_environments.rst
@@ -69,3 +69,67 @@ Multi-agent
It is only necessary to add ``multi_agent`` in **DI-engine** config file to convert common PPO into MAPPO,
and change the ``use_centrolized_obs`` in environment config into ``True``. The policy and observations can
be automatically changed to run individual agent for each cross.
+
+Roadnets
+-------------
+
+.. `Beijing Wangjing 3 Crossings <./envs/wj3_env.html>`_
+
+.. `RL Arterial 7 Crossings <./envs/rl_arterial7_env.html>`_
+
+.. toctree::
+ :maxdepth: 2
+
+ envs/wj3_env
+ envs/rl_arterial7_env
+
+
+CityFlow environments
+=============================
+
+configuration
+-----------------
+
+CityFlow simulator has its own config `json` file, with roadnet file, flow file and replay file defined in it.
+DI-smartcross adds some extra configs together with CityFlow's config file path in DI-engine's env config.
+
+.. code:: python
+
+ main_config = dict(
+ env=dict(
+ obs_type=['phase', 'lane_vehicle_num', 'lane_waiting_vehicle_num'],
+ max_episode_duration=1000,
+ green_duration=30,
+ yellow_duration=5,
+ red_duration=0,
+ ...
+ ),
+ ...
+ )
+
+Observation
+----------------
+
+We provide several types of observations of each cross.
+
+- phase: One-hot phase vector of current cross signal
+- lane_vehicle_num: vehicle nums of each incoming lane
+- lane_waiting_vehicle_num: waiting vehicle nums of each incoming lane
+
+Action
+-------------
+
+CityFlow environment supports changing cross signal to target phase. The action space is set to multi-discrete for each cross to reduce action num.
+
+Reward
+-------------
+
+CityFlow environment uses pressure of each cross as reward
+
+Roadnets
+-------------
+
+.. toctree::
+ :maxdepth: 2
+
+ envs/cf_grid_env
diff --git a/entry/cityflow_config/cityflow_eval_default_config.py b/entry/cityflow_config/cityflow_eval_default_config.py
new file mode 100644
index 0000000..70b8b7a
--- /dev/null
+++ b/entry/cityflow_config/cityflow_eval_default_config.py
@@ -0,0 +1,36 @@
+from easydict import EasyDict
+
+cityflow_eval_default_config = dict(
+ env=dict(
+ manager=dict(
+ # Whether to use shared memory. Only effective if manager type is 'subprocess'
+ shared_memory=False,
+ context='spawn',
+ retry_type='renew',
+ ),
+ obs_type=['phase'],
+ n_evaluator_episode=1,
+ max_episode_duration=1000,
+ green_duration=30,
+ yellow_duration=5,
+ red_duration=0,
+ stop_value=0,
+ collector_env_num=1,
+ evaluator_env_num=1,
+ ),
+ policy=dict(cuda=False, )
+)
+
+create_config = dict(
+ env_manager=dict(type='subprocess', ),
+ env=dict(
+ # Must use the absolute path. All the following "import_names" should obey this too.
+ import_names=['smartcross.envs.cityflow_env'],
+ type='cityflow_env',
+ ),
+ policy=dict(),
+)
+
+create_config = EasyDict(create_config)
+cityflow_eval_default_config = EasyDict(cityflow_eval_default_config)
+main_config = cityflow_eval_default_config
diff --git a/entry/cityflow_config/cityflow_grid_dqn_default_config.py b/entry/cityflow_config/cityflow_grid_dqn_default_config.py
new file mode 100644
index 0000000..72ca954
--- /dev/null
+++ b/entry/cityflow_config/cityflow_grid_dqn_default_config.py
@@ -0,0 +1,117 @@
+from easydict import EasyDict
+
+nstep = 1
+cityflow_mddqn_default_config = dict(
+ exp_name='cityflow_grid23_md_dqn',
+ env=dict(
+ manager=dict(
+ shared_memory=False,
+ context='spawn',
+ retry_type='renew',
+ max_retry=5,
+ ),
+ obs_type=['phase', 'lane_vehicle_num', 'lane_waiting_vehicle_num'],
+ max_episode_duration=1000,
+ green_duration=30,
+ yellow_duration=5,
+ red_duration=0,
+ # Episode number for evaluation.
+ n_evaluator_episode=1,
+ # Once evaluation reward reaches "stop_value", which means the policy converges, the training can end.
+ stop_value=0,
+ collector_env_num=15,
+ evaluator_env_num=1,
+ ),
+ policy=dict(
+ # Whether to use cuda for network.
+ cuda=True,
+ # Whether use priority
+ priority=True,
+ priority_IS_weight=True,
+ # How many steps in td error.
+ nstep=nstep,
+ # Reward's future discount facotr, aka. gamma.
+ discount_factor=0.99,
+ random_collect_size=10000,
+ # Model config used for model creating. Remember to change "obs_shape" and "action_shape" according to env.
+ model=dict(
+ obs_shape=264,
+ action_shape=[4] * 6,
+ # Whether to use dueling head.
+ dueling=True,
+ ),
+ # learn_mode config
+ learn=dict(
+ # How many steps to train after one collection. Bigger "update_per_collect" means bigger off-policy.
+ # collect data -> train fixed steps -> collect data -> ...
+ update_per_collect=200,
+ batch_size=64,
+ learning_rate=1e-4,
+ target_update_freq=100,
+ learner=dict(
+ hook=dict(
+ save_ckpt_after_iter=1000,
+ log_show_after_iter=1000,
+ ),
+ ),
+ ignore_done=True,
+ ),
+ # collect_mode config
+ collect=dict(
+ # Cut trajectories into pieces with length "unrol_len".
+ unroll_len=1,
+ # You can use either "n_sample" or "n_episode" in collector.collect.
+ # Get "n_sample" samples per collect.
+ n_sample=600,
+ collector=dict(
+ # Get "n_episode" complete episodic trajectories per collect.
+ # n_episode=8,
+ transform_obs=True,
+ collect_print_freq=1000,
+ ),
+ ),
+ eval=dict(
+ evaluator=dict(
+ # Evaluate every "eval_freq" training steps.
+ eval_freq=1000,
+ )
+ ),
+ # command_mode config
+ other=dict(
+ # Epsilon greedy with decay.
+ eps=dict(
+ # Decay type. Support ['exp', 'linear'].
+ type='exp',
+ start=0.95,
+ end=0.1,
+ decay=50000,
+ ),
+ replay_buffer=dict(
+ replay_buffer_size=400000,
+ max_use=10000,
+ monitor=dict(
+ sampled_data_attr=dict(print_freq=300, ),
+ periodic_thruput=dict(seconds=300, ),
+ ),
+ ),
+ ),
+ ),
+)
+
+create_config = dict(
+ env_manager=dict(type='subprocess', ),
+ env=dict(
+ # Must use the absolute path. All the following "import_names" should obey this too.
+ import_names=['smartcross.envs.cityflow_env'],
+ type='cityflow_env',
+ ),
+ # RL policy register name (refer to function "register_policy").
+ policy=dict(
+ import_names=['dizoo.common.policy.md_dqn'],
+ type='md_dqn',
+ ),
+)
+
+create_config = EasyDict(create_config)
+cityflow_mddqn_default_config = EasyDict(cityflow_mddqn_default_config)
+main_config = cityflow_mddqn_default_config
\ No newline at end of file
diff --git a/entry/cityflow_config/cityflow_grid_ppo_default_config.py b/entry/cityflow_config/cityflow_grid_ppo_default_config.py
new file mode 100644
index 0000000..ab27cdc
--- /dev/null
+++ b/entry/cityflow_config/cityflow_grid_ppo_default_config.py
@@ -0,0 +1,95 @@
+from easydict import EasyDict
+
+cityflow_mdppo_default_config = dict(
+ exp_name='cityflow_grid23_md_ppo',
+ env=dict(
+ manager=dict(
+ shared_memory=False,
+ context='spawn',
+ retry_type='renew',
+ max_retry=5,
+ ),
+ obs_type=['phase', 'lane_vehicle_num', 'lane_waiting_vehicle_num'],
+ max_episode_duration=1000,
+ green_duration=30,
+ yellow_duration=5,
+ red_duration=0,
+ # Episode number for evaluation.
+ n_evaluator_episode=1,
+ # Once evaluation reward reaches "stop_value", which means the policy converges, the training can end.
+ stop_value=0,
+ collector_env_num=15,
+ evaluator_env_num=1,
+ ),
+ policy=dict(
+ # Whether to use cuda for network.
+ cuda=True,
+ # Whether use priority
+ priority=False,
+ continuous=False,
+ # Model config used for model creating. Remember to change "obs_shape" and "action_shape" according to env.
+ model=dict(
+ obs_shape=264,
+ action_shape=[4] * 6,
+ ),
+ # learn_mode config
+ learn=dict(
+ # How many steps to train after one collection. Bigger "update_per_collect" means bigger off-policy.
+ # collect data -> train fixed steps -> collect data -> ...
+ epoch_per_collect=4,
+ batch_size=64,
+ learning_rate=1e-4,
+ value_weight=0.5,
+ entropy_weight=0.01,
+ clip_ratio=0.2,
+ learner=dict(
+ hook=dict(
+ save_ckpt_after_iter=1000,
+ log_show_after_iter=1000,
+ ),
+ ),
+ ),
+ # collect_mode config
+ collect=dict(
+ # Cut trajectories into pieces with length "unrol_len".
+ unroll_len=1,
+ discount_factor=0.99,
+ gae_lambda=0.95,
+ # You can use either "n_sample" or "n_episode" in collector.collect.
+ # Get "n_sample" samples per collect.
+ n_sample=600,
+ collector=dict(
+ # Get "n_episode" complete episodic trajectories per collect.
+ # n_episode=8,
+ transform_obs=True,
+ collect_print_freq=1000,
+ ),
+ ),
+ eval=dict(
+ evaluator=dict(
+ # Evaluate every "eval_freq" training steps.
+ eval_freq=1000,
+ )
+ ),
+ # command_mode config
+ other=dict(),
+ ),
+)
+
+create_config = dict(
+ env_manager=dict(
+ type='subprocess',
+ ),
+ env=dict(
+ import_names=['smartcross.envs.cityflow_env'],
+ type='cityflow_env',
+ ),
+ policy=dict(
+ import_names=['dizoo.common.policy.md_ppo'],
+ type='md_ppo',
+ ),
+)
+
+create_config = EasyDict(create_config)
+cityflow_mdppo_default_config = EasyDict(cityflow_mdppo_default_config)
+main_config = cityflow_mdppo_default_config
diff --git a/entry/cityflow_eval b/entry/cityflow_eval
new file mode 100644
index 0000000..360c505
--- /dev/null
+++ b/entry/cityflow_eval
@@ -0,0 +1,68 @@
+#!/usr/bin/env python3
+import os
+import torch
+import argparse
+from functools import partial
+from easydict import EasyDict
+
+from ding.config import compile_config
+from ding.policy import create_policy
+from ding.envs import get_vec_env_setting, create_env_manager
+from ding.worker import InteractionSerialEvaluator
+from ding.utils.default_helper import set_pkg_seed, deep_merge_dicts
+from smartcross.utils.config_utils import read_ding_config
+from smartcross.policy import FixedPolicy
+
+
+def main(args, seed=None):
+ ding_cfg = args.ding_cfg
+ main_config, create_config = read_ding_config(ding_cfg)
+ cityflow_env_config = {'config_path': args.env_cfg}
+ if args.policy_type == 'fix':
+ create_config.policy['type'] = 'smartcross_fix'
+ main_config.env = deep_merge_dicts(main_config.env, cityflow_env_config)
+ cfg = compile_config(main_config, create_cfg=create_config, seed=seed, auto=True, save_cfg=False)
+ if args.env_num > 0:
+ cfg.env.evaluator_env_num = args.env_num
+ if cfg.env.n_evaluator_episode < args.env_num:
+ cfg.env.n_evaluator_episode = cfg.env.evaluator_env_num
+ env_fn, _, evaluator_env_cfg = get_vec_env_setting(cfg.env)
+ env = env_fn(cfg=evaluator_env_cfg[0])
+ evaluator_env = create_env_manager(cfg.env.manager, [partial(env_fn, cfg=c) for c in evaluator_env_cfg])
+ if seed is not None:
+ evaluator_env.seed(cfg.seed, dynamic_seed=False)
+ set_pkg_seed(cfg.seed, use_cuda=cfg.policy.cuda)
+
+ if args.policy_type == 'fix':
+ policy = FixedPolicy(evaluator_env.action_space)
+ else:
+ policy = create_policy(cfg.policy, enable_field=['eval']).eval_mode
+ if args.ckpt_path is not None:
+ state_dict = torch.load(args.ckpt_path, map_location='cpu')
+ policy.load_state_dict(state_dict)
+
+ evaluator = InteractionSerialEvaluator(
+ cfg.policy.eval.evaluator,
+ evaluator_env,
+ policy,
+ )
+ _, eval_reward = evaluator.eval(None, -1, -1, cfg.env.n_evaluator_episode)
+ eval_reward = [r['final_eval_reward'].item() for r in eval_reward]
+ print('Eval is over! The performance is {}'.format(eval_reward))
+ evaluator.close()
+ return eval_reward
+
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(description='DI-smartcross training script')
+ parser.add_argument('-d', '--ding-cfg', default=None, help='DI-engine configuration path')
+ parser.add_argument('-e', '--env-cfg', required=True, help='sumo environment configuration path')
+ parser.add_argument('-s', '--seed', default=None, type=int, help='random seed for sumo')
+ parser.add_argument(
+ '-p', '--policy-type', default='dqn', choices=['fix', 'dqn', 'ppo'], help='RL policy type'
+ )
+ parser.add_argument('-n', '--env-num', type=int, default=1, help='sumo env num for evaluation')
+ parser.add_argument('-c', '--ckpt-path', type=str, default=None, help='model ckpt path')
+
+ args = parser.parse_args()
+ main(args, args.seed)
diff --git a/entry/cityflow_train b/entry/cityflow_train
new file mode 100644
index 0000000..8861032
--- /dev/null
+++ b/entry/cityflow_train
@@ -0,0 +1,125 @@
+#!/usr/bin/env python3
+import os
+import logging
+import argparse
+from functools import partial
+from tensorboardX import SummaryWriter
+
+from ding.config import compile_config
+from ding.policy import create_policy, PolicyFactory
+from ding.envs import get_vec_env_setting, create_env_manager
+from ding.worker import BaseLearner, InteractionSerialEvaluator, create_serial_collector, create_buffer
+from ding.utils.default_helper import set_pkg_seed
+from ding.utils import deep_merge_dicts
+from ding.rl_utils import get_epsilon_greedy_fn
+from smartcross.utils.config_utils import read_ding_config
+from smartcross.policy.default_policy import get_random_sample_func
+
+
+def main(args, seed=None):
+ ding_cfg = args.ding_cfg
+ main_config, create_config = read_ding_config(ding_cfg)
+ cityflow_env_config = {'config_path': args.env_cfg}
+ main_config.env = deep_merge_dicts(main_config.env, cityflow_env_config)
+ if args.collect_env_num > 0:
+ main_config.env.collector_env_num = args.collect_env_num
+ if args.evaluate_env_num > 0:
+ main_config.env.evaluator_env_num = args.evaluate_env_num
+ if args.exp_name is not None:
+ main_config.exp_name = args.exp_name
+
+ cfg = compile_config(main_config, create_cfg=create_config, seed=seed, auto=True)
+ env_fn, collecotr_env_cfg, evaluator_env_cfg = get_vec_env_setting(cfg.env)
+ collector_env = create_env_manager(cfg.env.manager, [partial(env_fn, cfg=c) for c in collecotr_env_cfg])
+ evaluator_env = create_env_manager(cfg.env.manager, [partial(env_fn, cfg=c) for c in evaluator_env_cfg])
+ if seed is not None:
+ collector_env.seed(cfg.seed)
+ evaluator_env.seed(cfg.seed, dynamic_seed=False)
+ set_pkg_seed(cfg.seed, use_cuda=cfg.policy.cuda)
+ policy = create_policy(cfg.policy, enable_field=['learn', 'collect', 'eval'])
+
+ tb_logger = SummaryWriter('./{}/tensorboard/'.format(cfg.exp_name))
+ learner = BaseLearner(cfg.policy.learn.learner, policy.learn_mode, tb_logger, exp_name=cfg.exp_name)
+ collector = create_serial_collector(
+ cfg.policy.collect.collector,
+ env=collector_env,
+ policy=policy.collect_mode,
+ tb_logger=tb_logger,
+ exp_name=cfg.exp_name
+ )
+ evaluator = InteractionSerialEvaluator(
+ cfg.policy.eval.evaluator, evaluator_env, policy.eval_mode, tb_logger, exp_name=cfg.exp_name
+ )
+ if not cfg.policy.on_policy:
+ replay_buffer = create_buffer(cfg.policy.other.replay_buffer, tb_logger=tb_logger, exp_name=cfg.exp_name)
+ # ==========
+ # Main loop
+ # ==========
+ # Learner's before_run hook.
+ learner.call_hook('before_run')
+ eps_cfg = cfg.policy.other.get('eps', None)
+ if eps_cfg is not None:
+ epsilon_greedy = get_epsilon_greedy_fn(eps_cfg.start, eps_cfg.end, eps_cfg.decay, eps_cfg.type)
+
+ # Accumulate plenty of data at the beginning of training.
+ if cfg.policy.get('random_collect_size', 0) > 0:
+ action_space = collector_env.action_space
+ random_sample_func = get_random_sample_func(action_space)
+ random_policy = PolicyFactory.get_random_policy(policy.collect_mode, forward_fn=random_sample_func)
+ collector.reset_policy(random_policy)
+ new_data = collector.collect(n_sample=cfg.policy.random_collect_size)
+ replay_buffer.push(new_data, cur_collector_envstep=0)
+ collector.reset_policy(policy.collect_mode)
+
+ for _ in range(cfg.policy.learn.learner.train_iterations):
+ # Evaluate policy performance
+ if evaluator.should_eval(learner.train_iter):
+ stop, reward = evaluator.eval(learner.save_checkpoint, learner.train_iter, collector.envstep)
+ if stop:
+ break
+ # Collect data by default config n_sample/n_episode
+ if eps_cfg is not None:
+ collect_kwargs = {'eps': epsilon_greedy(collector.envstep)}
+ new_data = collector.collect(
+ cfg.policy.collect.n_sample, train_iter=learner.train_iter, policy_kwargs=collect_kwargs
+ )
+ else:
+ new_data = collector.collect(cfg.policy.collect.n_sample, train_iter=learner.train_iter)
+ if cfg.policy.on_policy:
+ learner.train(new_data, collector.envstep)
+ else:
+ replay_buffer.push(new_data, cur_collector_envstep=collector.envstep)
+ # Learn policy from collected data
+ for i in range(cfg.policy.learn.update_per_collect):
+ # Learner will train ``update_per_collect`` times in one iteration.
+ train_data = replay_buffer.sample(cfg.policy.learn.batch_size, learner.train_iter)
+ if train_data is None:
+ # It is possible that replay buffer's data count is too few to train ``update_per_collect`` times
+ logging.warning(
+ "Replay buffer's data can only train for {} steps. ".format(i) +
+ "You can modify data collect config, e.g. increasing n_sample, n_episode."
+ )
+ break
+ learner.train(train_data, collector.envstep)
+ if learner.policy.get_attribute('priority'):
+ replay_buffer.update(learner.priority_info)
+
+ # Learner's after_run hook.
+ learner.call_hook('after_run')
+
+ learner.close()
+ collector.close()
+ evaluator.close()
+
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(description='DI-smartcross training script')
+ parser.add_argument('-d', '--ding-cfg', required=True, help='DI-engine configuration path')
+ parser.add_argument('-e', '--env-cfg', required=True, help='cityflow json configuration path')
+ parser.add_argument('-s', '--seed', default=None, type=int, help='random seed')
+ parser.add_argument('-cn', '--collect-env-num', type=int, default=1, help='collector env num for training')
+ parser.add_argument('-en', '--evaluate-env-num', type=int, default=1, help='evaluator env num for training')
+ parser.add_argument('--exp-name', type=str, default=None, help='experiment name to save log and ckpt')
+
+ args = parser.parse_args()
+ main(args, args.seed)
diff --git a/entry/config/sumo_arterial7_dqn_default_config.py b/entry/sumo_config/sumo_arterial7_dqn_default_config.py
similarity index 100%
rename from entry/config/sumo_arterial7_dqn_default_config.py
rename to entry/sumo_config/sumo_arterial7_dqn_default_config.py
diff --git a/entry/config/sumo_arterial7_mappo_default_config.py b/entry/sumo_config/sumo_arterial7_mappo_default_config.py
similarity index 100%
rename from entry/config/sumo_arterial7_mappo_default_config.py
rename to entry/sumo_config/sumo_arterial7_mappo_default_config.py
diff --git a/entry/config/sumo_arterial7_offppo_default_config.py b/entry/sumo_config/sumo_arterial7_offppo_default_config.py
similarity index 100%
rename from entry/config/sumo_arterial7_offppo_default_config.py
rename to entry/sumo_config/sumo_arterial7_offppo_default_config.py
diff --git a/entry/config/sumo_arterial7_ppo_default_config.py b/entry/sumo_config/sumo_arterial7_ppo_default_config.py
similarity index 100%
rename from entry/config/sumo_arterial7_ppo_default_config.py
rename to entry/sumo_config/sumo_arterial7_ppo_default_config.py
diff --git a/entry/config/sumo_eval_default_config.py b/entry/sumo_config/sumo_eval_default_config.py
similarity index 100%
rename from entry/config/sumo_eval_default_config.py
rename to entry/sumo_config/sumo_eval_default_config.py
diff --git a/entry/config/sumo_wj3_dqn_default_config.py b/entry/sumo_config/sumo_wj3_dqn_default_config.py
similarity index 100%
rename from entry/config/sumo_wj3_dqn_default_config.py
rename to entry/sumo_config/sumo_wj3_dqn_default_config.py
diff --git a/entry/config/sumo_wj3_mappo_default_config.py b/entry/sumo_config/sumo_wj3_mappo_default_config.py
similarity index 100%
rename from entry/config/sumo_wj3_mappo_default_config.py
rename to entry/sumo_config/sumo_wj3_mappo_default_config.py
diff --git a/entry/config/sumo_wj3_offppo_default_config.py b/entry/sumo_config/sumo_wj3_offppo_default_config.py
similarity index 100%
rename from entry/config/sumo_wj3_offppo_default_config.py
rename to entry/sumo_config/sumo_wj3_offppo_default_config.py
diff --git a/entry/config/sumo_wj3_ppo_default_config.py b/entry/sumo_config/sumo_wj3_ppo_default_config.py
similarity index 100%
rename from entry/config/sumo_wj3_ppo_default_config.py
rename to entry/sumo_config/sumo_wj3_ppo_default_config.py
diff --git a/entry/config/sumo_wj3_rainbow_default_config.py b/entry/sumo_config/sumo_wj3_rainbow_default_config.py
similarity index 100%
rename from entry/config/sumo_wj3_rainbow_default_config.py
rename to entry/sumo_config/sumo_wj3_rainbow_default_config.py
diff --git a/entry/sumo_eval b/entry/sumo_eval
index b14dffb..dfa3f34 100644
--- a/entry/sumo_eval
+++ b/entry/sumo_eval
@@ -15,9 +15,9 @@ from smartcross.utils.config_utils import get_sumo_config
from smartcross.policy import RandomPolicy, FixedPolicy
-def main(args, seed=0):
+def main(args, seed=None):
if args.policy_type in ['random', 'fix']:
- from entry.config.sumo_eval_default_config import main_config, create_config
+ from entry.sumo_config.sumo_eval_default_config import main_config, create_config
with open(args.env_cfg, 'r') as f:
sumoenv_cfg = yaml.safe_load(f)
sumoenv_cfg = EasyDict(sumoenv_cfg)
@@ -27,7 +27,7 @@ def main(args, seed=0):
main_config, create_config = get_sumo_config(args)
if args.gui:
main_config.env.gui = True
- cfg = compile_config(main_config, create_cfg=create_config, seed=seed, auto=True)
+ cfg = compile_config(main_config, create_cfg=create_config, seed=seed, auto=True, save_cfg=False)
if args.env_num > 0:
cfg.env.evaluator_env_num = args.env_num
if cfg.env.n_evaluator_episode < args.env_num:
@@ -39,9 +39,9 @@ def main(args, seed=0):
set_pkg_seed(cfg.seed, use_cuda=cfg.policy.cuda)
if args.policy_type == 'random':
- policy = RandomPolicy(evaluator_env.env_info().act_space)
+ policy = RandomPolicy(evaluator_env.action_space)
elif args.policy_type == 'fix':
- policy = FixedPolicy(evaluator_env.env_info().act_space)
+ policy = FixedPolicy(evaluator_env.action_space)
else:
policy = create_policy(cfg.policy, enable_field=['eval']).eval_mode
if args.ckpt_path is not None:
@@ -54,6 +54,7 @@ def main(args, seed=0):
policy,
)
_, eval_reward = evaluator.eval(None, -1, -1, cfg.env.n_evaluator_episode)
+ eval_reward = [r['final_eval_reward'].item() for r in eval_reward]
print('Eval is over! The performance is {}'.format(eval_reward))
evaluator.close()
return eval_reward
@@ -63,12 +64,12 @@ if __name__ == "__main__":
parser = argparse.ArgumentParser(description='DI-smartcross training script')
parser.add_argument('-d', '--ding-cfg', default=None, help='DI-engine configuration path')
parser.add_argument('-e', '--env-cfg', required=True, help='sumo environment configuration path')
- parser.add_argument('-s', '--seed', default=0, type=int, help='random seed for sumo')
+ parser.add_argument('-s', '--seed', default=None, type=int, help='random seed for sumo')
parser.add_argument(
'-p', '--policy-type', default='dqn', choices=['random', 'fix', 'dqn', 'rainbow', 'ppo'], help='RL policy type'
)
parser.add_argument('--dynamic-flow', action='store_true', help="use dynamic route flow")
- parser.add_argument('-n', '--env-num', type=int, default=-1, help='sumo env num for evaluation')
+ parser.add_argument('-n', '--env-num', type=int, default=1, help='sumo env num for evaluation')
parser.add_argument('--gui', action='store_true', help="open gui for visualize")
parser.add_argument('-c', '--ckpt-path', type=str, default=None, help='model ckpt path')
diff --git a/entry/sumo_train b/entry/sumo_train
index 5a787b8..b32eb96 100644
--- a/entry/sumo_train
+++ b/entry/sumo_train
@@ -12,6 +12,7 @@ from ding.worker import BaseLearner, InteractionSerialEvaluator, create_serial_c
from ding.utils.default_helper import set_pkg_seed
from ding.rl_utils import get_epsilon_greedy_fn
from smartcross.utils.config_utils import get_sumo_config
+from smartcross.policy.default_policy import get_random_sample_func
def main(args, seed=None):
@@ -59,13 +60,14 @@ def main(args, seed=None):
# Accumulate plenty of data at the beginning of training.
if cfg.policy.get('random_collect_size', 0) > 0:
- action_space = collector_env.env_info().act_space
- random_policy = PolicyFactory.get_random_policy(policy.collect_mode, action_space=action_space)
+ action_space = collector_env.action_space
+ random_sample_func = get_random_sample_func(action_space)
+ random_policy = PolicyFactory.get_random_policy(policy.collect_mode, forward_fn=random_sample_func)
collector.reset_policy(random_policy)
new_data = collector.collect(n_sample=cfg.policy.random_collect_size)
replay_buffer.push(new_data, cur_collector_envstep=0)
collector.reset_policy(policy.collect_mode)
-
+
for _ in range(cfg.policy.learn.learner.train_iterations):
# Evaluate policy performance
if evaluator.should_eval(learner.train_iter):
@@ -113,8 +115,8 @@ if __name__ == "__main__":
parser.add_argument('-e', '--env-cfg', required=True, help='sumo environment configuration path')
parser.add_argument('-s', '--seed', default=None, type=int, help='random seed for sumo')
parser.add_argument('--dynamic-flow', action='store_true', help="use dynamic route flow")
- parser.add_argument('-cn', '--collect-env-num', type=int, default=-1, help='collector sumo env num for training')
- parser.add_argument('-en', '--evaluate-env-num', type=int, default=-1, help='evaluator sumo env num for training')
+ parser.add_argument('-cn', '--collect-env-num', type=int, default=1, help='collector sumo env num for training')
+ parser.add_argument('-en', '--evaluate-env-num', type=int, default=1, help='evaluator sumo env num for training')
parser.add_argument('--exp-name', type=str, default=None, help='experiment name to save log and ckpt')
args = parser.parse_args()
diff --git a/setup.py b/setup.py
index 862c575..c6e4fce 100644
--- a/setup.py
+++ b/setup.py
@@ -1,16 +1,38 @@
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS-IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Module setuptools script."""
+
from __future__ import absolute_import
+from __future__ import division
+from __future__ import print_function
+
+import os
from setuptools import setup, find_packages
+here = os.path.abspath(os.path.dirname(__file__))
+meta = {}
+with open(os.path.join(here, 'smartcross', '__init__.py'), 'r') as f:
+ exec(f.read(), meta)
+
description = """DI-smartcross: OpenDILab Decision Intelligence Traffic Crossing Signal Control Platform"""
setup(
- name='DI-smartcross',
- version='0.1.0',
- description='OpenDILab Decision Intelligence Traffic Crossing Signal Control Platform',
+ name=meta['__TITLE__'],
+ version=meta['__VERSION__'],
+ description=meta['__DESCRIPTION__'],
long_description=description,
- author='OpenDILab',
- license='Apache 2.0',
+ author=meta['__AUTHOR__'],
+ license='Apache License, Version 2.0',
keywords='Decision Intelligence, Reinforcement Learning, Traffic Signal Control',
packages=[
*find_packages(include=('smartcross', 'smartcross.*')),
@@ -18,10 +40,12 @@
scripts=[
'entry/sumo_train',
'entry/sumo_eval',
+ 'entry/cityflow_train',
+ 'entry/cityflow_eval',
],
install_requires=[
+ "di-engine>=0.3",
"torch>=1.4,<=1.8",
- "di-engine>=0.2",
"sumolib",
"traci",
"MarkupSafe<=2.0.1'",
@@ -46,5 +70,16 @@
'yapf==0.29.0',
'flake8',
],
- }
+ },
+ classifiers=[
+ 'Development Status :: 5 - Production/Stable',
+ 'Intended Audience :: Science/Research/Developers',
+ 'License :: OSI Approved :: Apache Software License',
+ 'Operating System :: POSIX :: Linux',
+ 'Operating System :: Microsoft :: Windows',
+ 'Programming Language :: Python :: 3.6',
+ 'Programming Language :: Python :: 3.7',
+ 'Programming Language :: Python :: 3.8',
+ 'Topic :: Scientific/Engineering :: Artificial Intelligence',
+ ],
)
diff --git a/smartcross/__init__.py b/smartcross/__init__.py
new file mode 100644
index 0000000..36d8dc5
--- /dev/null
+++ b/smartcross/__init__.py
@@ -0,0 +1,10 @@
+import os
+
+__TITLE__ = 'DI-smartcross'
+__VERSION__ = 'v0.1.0'
+__DESCRIPTION__ = 'OpenDILab Decision Intelligence Traffic Crossing Signal Control Platform'
+__AUTHOR__ = "OpenDILab Contributors"
+__AUTHOR_EMAIL__ = "opendilab.contact@gmail.com"
+__version__ = __VERSION__
+
+SIMULATORS = ['sumo', 'cityflow']
diff --git a/smartcross/envs/__init__.py b/smartcross/envs/__init__.py
index 29e5e6d..bdff0f9 100644
--- a/smartcross/envs/__init__.py
+++ b/smartcross/envs/__init__.py
@@ -1 +1,6 @@
-from .sumo_env import SumoEnv
+import smartcross
+
+if 'sumo' in smartcross.SIMULATORS:
+ from .sumo_env import SumoEnv
+if 'cityflow' in smartcross.SIMULATORS:
+ from .cityflow_env import CityflowEnv
diff --git a/smartcross/envs/action/sumo_action.py b/smartcross/envs/action/sumo_action.py
index 790d992..187e3e4 100644
--- a/smartcross/envs/action/sumo_action.py
+++ b/smartcross/envs/action/sumo_action.py
@@ -1,3 +1,4 @@
+import gym
from typing import Dict
from ding.envs import BaseEnv
@@ -21,7 +22,7 @@ def _init(self, env: BaseEnv, cfg: Dict) -> None:
Overview:
init the sumo action environment with the given config file
Arguments:
- - cfg(:obj:`EasyDict`): config, you can refer to `envs/sumo/sumo_env_default_config.yaml`
+ - cfg(:obj:`EasyDict`): config, you can refer to `envs/sumo_wj3_default_config.yaml`
"""
self._env = env
self._cfg = cfg
@@ -37,6 +38,7 @@ def _init(self, env: BaseEnv, cfg: Dict) -> None:
raise NotImplementedError
if self._use_multi_discrete:
self._shape = len(action_shape)
+ self._space = gym.spaces.MultiDiscrete(action_shape)
else:
# TODO: add naive discrete action
raise NotImplementedError
@@ -64,3 +66,7 @@ def _from_agent_processor(self, data: Dict) -> Dict:
# override
def _details(self):
return 'action dim: {}'.format(self._shape)
+
+ @property
+ def space(self):
+ return self._space
diff --git a/smartcross/envs/action/sumo_action_runner.py b/smartcross/envs/action/sumo_action_runner.py
index cc062ad..98ea53f 100644
--- a/smartcross/envs/action/sumo_action_runner.py
+++ b/smartcross/envs/action/sumo_action_runner.py
@@ -15,7 +15,7 @@ def _init(self, engine: BaseEnv, cfg: Dict) -> None:
Overview:
init the sumo observation helper with the given config file
Arguments:
- - cfg(:obj:`EasyDict`): config, you can refer to `envs/sumo/sumo_env_default_config.yaml`
+ - cfg(:obj:`EasyDict`): config, you can refer to `envs/sumo_wj3_default_config.yaml`
"""
# set self._core and other state variable
self._engine = engine
@@ -34,3 +34,7 @@ def get(self, raw_action: Any) -> Dict:
def reset(self) -> None:
self._last_action = None
+
+ @property
+ def space(self):
+ return self._core.space
diff --git a/smartcross/envs/cityflow_env.py b/smartcross/envs/cityflow_env.py
new file mode 100644
index 0000000..f9a22ec
--- /dev/null
+++ b/smartcross/envs/cityflow_env.py
@@ -0,0 +1,233 @@
+import os
+import json
+import gym
+import numpy as np
+from typing import Dict, Any, List, Tuple, Union
+
+import cityflow
+
+from ding.envs import BaseEnv, BaseEnvTimestep
+from ding.utils import ENV_REGISTRY
+from ding.torch_utils import to_ndarray
+from smartcross.utils.env_utils import get_suffix_num, squeeze_obs, get_onehot_obs
+
+
+@ENV_REGISTRY.register('cityflow_env')
+class CityflowEnv(BaseEnv):
+
+ def __init__(self, cfg: Dict) -> None:
+ self._cfg = cfg
+ self._config_path = cfg.config_path
+ self._obs_type = cfg.obs_type
+ self._max_episode_duration = cfg.max_episode_duration
+ self._green_duration = cfg.green_duration
+ self._yellow_duration = cfg.yellow_duration
+ self._red_duration = cfg.red_duration
+ self._eng = cityflow.Engine(self._config_path)
+ self._parse_config_file()
+ self._init_info()
+
+ def _parse_config_file(self):
+ with open(self._config_path, 'r') as fc:
+ file_config = json.load(fc)
+
+ self._no_actions = not file_config['rlTrafficLight']
+
+ roadnet_file = os.path.join(file_config['dir'], file_config['roadnetFile'])
+ with open(roadnet_file, 'r') as fr:
+ roadnet_config = json.load(fr)
+
+ self._crossing_in_roads = {}
+ self._crossing_out_roads = {}
+ self._crossing_phases = {}
+ crossings_config = roadnet_config['intersections']
+ for item in crossings_config:
+ if item['virtual']:
+ continue
+ crossing_id = item['id']
+ self._crossing_in_roads[crossing_id] = []
+ self._crossing_out_roads[crossing_id] = []
+ crossing_id_num = get_suffix_num(crossing_id)
+ crossing_roads = item['roads']
+ for road_id in crossing_roads:
+ road_id_num = get_suffix_num(road_id)
+ if road_id_num[0] == crossing_id_num[0] and road_id_num[1] == crossing_id_num[1]:
+ self._crossing_out_roads[crossing_id].append(road_id)
+ else:
+ self._crossing_in_roads[crossing_id].append(road_id)
+ self._crossing_phases[crossing_id] = {'G': [], 'Y': [], 'R': []}
+ light_phases = item['trafficLight']['lightphases']
+ for id, it in enumerate(light_phases):
+ if len(it['availableRoadLinks']) > 4:
+ self._crossing_phases[crossing_id]['G'].append(id)
+ elif len(it['availableRoadLinks']) == 4:
+ self._crossing_phases[crossing_id]['Y'].append(id)
+ elif len(it['availableRoadLinks']) == 0:
+ self._crossing_phases[crossing_id]['R'].append(id)
+ else:
+ print("Unrecognized phase!")
+
+ self._crossings = list(self._crossing_in_roads.keys())
+ self._road_lanes = {}
+ all_lanes = list(self._eng.get_lane_vehicle_count().keys())
+
+ for road in roadnet_config['roads']:
+ road_id = road['id']
+ self._road_lanes[road_id] = []
+
+ for lane in all_lanes:
+ self._road_lanes[lane[:-2]].append(lane)
+
+ def _init_info(self):
+ obs_len = 0
+ act_shape = []
+ if 'phase' in self._obs_type:
+ for cross in self._crossing_phases:
+ obs_len += len(self._crossing_phases[cross]['G'])
+ if 'lane_vehicle_num' in self._obs_type:
+ for road in self._crossing_in_roads.values():
+ for r in road:
+ obs_len += len(self._road_lanes[r])
+ if 'lane_waiting_vehicle_num' in self._obs_type:
+ for road in self._crossing_in_roads.values():
+ for r in road:
+ obs_len += len(self._road_lanes[r])
+ for cross in self._crossings:
+ act_shape.append(len(self._crossing_phases[cross]['G']))
+ self._observation_space = gym.spaces.Box(low=0, high=100, shape=(obs_len, ), dtype=np.float32)
+ self._action_space = gym.spaces.MultiDiscrete(act_shape)
+ self._reward_space = gym.spaces.Box(low=-float('inf'), high=0, shape=(1, ), dtype=np.float32)
+
+ def _get_obs(self) -> Dict:
+ obs = {cross: [] for cross in self._crossings}
+ if 'phase' in self._obs_type:
+ for cross in self._crossing_phases:
+ onehot_phase = [0] * len(self._crossing_phases[cross]['G'])
+ ph = self._current_phases[cross]
+ onehot_phase[ph] = 1
+ obs[cross] += onehot_phase
+ if 'lane_vehicle_num' in self._obs_type:
+ all_lane_vehicle_num = self._eng.get_lane_vehicle_count()
+ for cross, roads in self._crossing_in_roads.items():
+ vehicle_nums = []
+ for k, v in all_lane_vehicle_num.items():
+ if k[:-2] in roads:
+ vehicle_nums.append(v)
+ obs[cross] += vehicle_nums
+ if 'lane_waiting_vehicle_num' in self._obs_type:
+ all_lane_waiting_vehicle = self._eng.get_lane_waiting_vehicle_count()
+ for cross, roads in self._crossing_in_roads.items():
+ vehicle_nums = []
+ for k, v in all_lane_waiting_vehicle.items():
+ if k[:-2] in roads:
+ vehicle_nums.append(v)
+ obs[cross] += vehicle_nums
+ return obs
+
+ def _get_reward(self):
+ reward = {cross: 0 for cross in self._crossings}
+ all_lane_waiting_vehicle = self._eng.get_lane_waiting_vehicle_count()
+ for cross in self._crossings:
+ cross_reward = 0
+ for roads in self._crossing_in_roads[cross]:
+ for k, v in all_lane_waiting_vehicle.items():
+ if k[:-2] in roads:
+ cross_reward += v
+ for roads in self._crossing_out_roads[cross]:
+ for k, v in all_lane_waiting_vehicle.items():
+ if k[:-2] in roads:
+ cross_reward -= v
+ reward[cross] = -cross_reward
+ return reward
+
+ def _simulate(self, action):
+ if self._no_actions:
+ for t in range(self._red_duration + self._yellow_duration + self._green_duration):
+ self._eng.next_step()
+ self._total_duration += self._red_duration + self._yellow_duration + self._green_duration
+ return
+
+ changed_tl_id = {}
+ for act, (cross, cur_act) in zip(action, self._current_phases.items()):
+ if act == cur_act:
+ new_phase = self._crossing_phases[cross]['G'][act]
+ self._eng.set_tl_phase(cross, new_phase)
+ self._current_phases[cross] = int(act)
+ else:
+ changed_tl_id[cross] = (act, cur_act)
+
+ if len(changed_tl_id) == 0:
+ for t in range(self._red_duration + self._yellow_duration + self._green_duration):
+ self._eng.next_step()
+ else:
+ if self._red_duration > 0:
+ for cross in changed_tl_id:
+ red_phase = self._crossing_phases[cross]['R'][0]
+ self._eng.set_tl_phase(cross, red_phase)
+ for t in range(self._red_duration):
+ self._eng.next_step()
+ if self._yellow_duration > 0:
+ for cross, (act, cur_act) in changed_tl_id.items():
+ yellow_phase = self._crossing_phases[cross]['Y'][cur_act]
+ self._eng.set_tl_phase(cross, yellow_phase)
+ for t in range(self._yellow_duration):
+ self._eng.next_step()
+ for cross, (act, cur_act) in changed_tl_id.items():
+ green_phase = self._crossing_phases[cross]['G'][act]
+ self._eng.set_tl_phase(cross, green_phase)
+ self._current_phases[cross] = int(act)
+ for t in range(self._green_duration):
+ self._eng.next_step()
+
+ self._total_duration += self._red_duration + self._yellow_duration + self._green_duration
+
+ def reset(self) -> Any:
+ self._eng.reset()
+ self._total_duration = 0
+ self._total_reward = 0
+ self._current_phases = {}
+ for cross in self._crossings:
+ if not self._no_actions:
+ phase = self._crossing_phases[cross]['G'][0]
+ self._eng.set_tl_phase(cross, phase)
+ self._current_phases[cross] = 0
+ obs = self._get_obs()
+ return to_ndarray(squeeze_obs(obs), dtype=np.float32)
+
+ def step(self, action: Any) -> 'BaseEnvTimestep':
+ action = np.squeeze(action)
+ self._simulate(action)
+ obs = self._get_obs()
+ obs = to_ndarray(squeeze_obs(obs), dtype=np.float32)
+ reward = self._get_reward()
+ reward = to_ndarray(sum(reward.values()), dtype=np.float32)
+ self._total_reward += reward
+ done = self._total_duration > self._max_episode_duration
+ info = {}
+ if done:
+ info['final_eval_reward'] = self._total_reward
+ self.close()
+ return BaseEnvTimestep(obs, reward, done, info)
+
+ def close(self) -> None:
+ return
+
+ def seed(self, seed: int, dynamic_seed: bool = True) -> None:
+ self._seed = seed
+ self._dynamic_seed = dynamic_seed
+ self._eng.set_random_seed(seed)
+
+ @property
+ def observation_space(self) -> gym.spaces.Space:
+ return self._observation_space
+
+ @property
+ def action_space(self) -> gym.spaces.Space:
+ return self._action_space
+
+ @property
+ def reward_space(self) -> gym.spaces.Space:
+ return self._reward_space
+
+ def __repr__(self) -> str:
+ return "CityFlowEnv"
diff --git a/smartcross/envs/cityflow_grid/cityflow_auto_grid_config.json b/smartcross/envs/cityflow_grid/cityflow_auto_grid_config.json
new file mode 100644
index 0000000..ad1edef
--- /dev/null
+++ b/smartcross/envs/cityflow_grid/cityflow_auto_grid_config.json
@@ -0,0 +1,12 @@
+{
+ "interval": 1.0,
+ "seed": 0,
+ "dir": "smartcross/envs/cityflow_grid/",
+ "roadnetFile": "roadnet_2_3.json",
+ "flowFile": "flow_2_3.json",
+ "rlTrafficLight": false,
+ "saveReplay": true,
+ "roadnetLogFile": "replay_auto_roadnet.json",
+ "replayLogFile": "replay_auto.txt",
+ "laneChange": true
+}
\ No newline at end of file
diff --git a/smartcross/envs/cityflow_grid/cityflow_grid_config.json b/smartcross/envs/cityflow_grid/cityflow_grid_config.json
new file mode 100644
index 0000000..e565c26
--- /dev/null
+++ b/smartcross/envs/cityflow_grid/cityflow_grid_config.json
@@ -0,0 +1,12 @@
+{
+ "interval": 1.0,
+ "seed": 0,
+ "dir": "smartcross/envs/cityflow_grid/",
+ "roadnetFile": "roadnet_2_3.json",
+ "flowFile": "flow_2_3.json",
+ "rlTrafficLight": true,
+ "saveReplay": false,
+ "roadnetLogFile": "replay_roadnet.json",
+ "replayLogFile": "replay.txt",
+ "laneChange": true
+}
\ No newline at end of file
diff --git a/smartcross/envs/cityflow_grid/flow_2_3.json b/smartcross/envs/cityflow_grid/flow_2_3.json
new file mode 100644
index 0000000..0cf0645
--- /dev/null
+++ b/smartcross/envs/cityflow_grid/flow_2_3.json
@@ -0,0 +1,1602 @@
+[
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_0_1_0",
+ "road_3_1_0"
+ ],
+ "interval": 25.0,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_0_1_0",
+ "road_3_1_0"
+ ],
+ "interval": 6.25,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_4_1_2",
+ "road_1_1_2"
+ ],
+ "interval": 25.0,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_4_1_2",
+ "road_1_1_2"
+ ],
+ "interval": 6.25,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_0_1_0",
+ "road_3_2_0"
+ ],
+ "interval": 38.762817436337976,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_0_1_0",
+ "road_3_2_0"
+ ],
+ "interval": 9.690704359084494,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_4_1_2",
+ "road_3_2_0"
+ ],
+ "interval": 44.82664675535357,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_4_1_2",
+ "road_3_2_0"
+ ],
+ "interval": 11.206661688838393,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_0_1_0",
+ "road_2_2_1"
+ ],
+ "interval": 42.5592527129307,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_0_1_0",
+ "road_2_2_1"
+ ],
+ "interval": 10.639813178232675,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_4_1_2",
+ "road_2_1_3"
+ ],
+ "interval": 44.73760272426931,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_4_1_2",
+ "road_2_1_3"
+ ],
+ "interval": 11.184400681067327,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_0_1_0",
+ "road_1_2_1"
+ ],
+ "interval": 35.43323961869715,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_0_1_0",
+ "road_1_2_1"
+ ],
+ "interval": 8.858309904674288,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_4_1_2",
+ "road_1_2_1"
+ ],
+ "interval": 43.403324879153594,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_4_1_2",
+ "road_1_2_1"
+ ],
+ "interval": 10.850831219788398,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_0_2_0",
+ "road_3_2_0"
+ ],
+ "interval": 25.0,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_0_2_0",
+ "road_3_2_0"
+ ],
+ "interval": 6.25,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_4_2_2",
+ "road_1_2_2"
+ ],
+ "interval": 25.0,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_4_2_2",
+ "road_1_2_2"
+ ],
+ "interval": 6.25,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_0_2_0",
+ "road_3_1_3"
+ ],
+ "interval": 40.29666141734653,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_0_2_0",
+ "road_3_1_3"
+ ],
+ "interval": 10.074165354336632,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_4_2_2",
+ "road_3_1_3"
+ ],
+ "interval": 38.790742642916186,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_4_2_2",
+ "road_3_1_3"
+ ],
+ "interval": 9.697685660729046,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_0_2_0",
+ "road_3_1_3"
+ ],
+ "interval": 39.67741336828556,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_0_2_0",
+ "road_3_1_3"
+ ],
+ "interval": 9.91935334207139,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_4_2_2",
+ "road_1_1_3"
+ ],
+ "interval": 40.41956043713023,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_4_2_2",
+ "road_1_1_3"
+ ],
+ "interval": 10.104890109282557,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_0_2_0",
+ "road_2_1_3"
+ ],
+ "interval": 49.502574412666156,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_0_2_0",
+ "road_2_1_3"
+ ],
+ "interval": 12.375643603166539,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_4_2_2",
+ "road_1_1_3"
+ ],
+ "interval": 30.026781075159725,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_4_2_2",
+ "road_1_1_3"
+ ],
+ "interval": 7.506695268789931,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_1_0_1",
+ "road_1_2_1"
+ ],
+ "interval": 50.0,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_1_0_1",
+ "road_1_2_1"
+ ],
+ "interval": 12.5,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_1_3_3",
+ "road_1_1_3"
+ ],
+ "interval": 50.0,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_1_3_3",
+ "road_1_1_3"
+ ],
+ "interval": 12.5,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_1_0_1",
+ "road_3_2_0"
+ ],
+ "interval": 72.23674669577058,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_1_0_1",
+ "road_3_2_0"
+ ],
+ "interval": 18.059186673942644,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_1_3_3",
+ "road_3_1_0"
+ ],
+ "interval": 61.50638160341691,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_1_3_3",
+ "road_3_1_0"
+ ],
+ "interval": 15.376595400854228,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_1_0_1",
+ "road_3_1_0"
+ ],
+ "interval": 67.02781317902827,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_1_0_1",
+ "road_3_1_0"
+ ],
+ "interval": 16.756953294757068,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_1_3_3",
+ "road_3_2_1"
+ ],
+ "interval": 58.96226522254158,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_1_3_3",
+ "road_3_2_1"
+ ],
+ "interval": 14.740566305635395,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_1_0_1",
+ "road_3_2_1"
+ ],
+ "interval": 44.65871402610205,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_1_0_1",
+ "road_3_2_1"
+ ],
+ "interval": 11.164678506525512,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_1_3_3",
+ "road_2_1_3"
+ ],
+ "interval": 51.41425494173674,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_1_3_3",
+ "road_2_1_3"
+ ],
+ "interval": 12.853563735434186,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_2_0_1",
+ "road_2_2_1"
+ ],
+ "interval": 50.0,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_2_0_1",
+ "road_2_2_1"
+ ],
+ "interval": 12.5,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_2_3_3",
+ "road_2_1_3"
+ ],
+ "interval": 50.0,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_2_3_3",
+ "road_2_1_3"
+ ],
+ "interval": 12.5,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_2_0_1",
+ "road_3_1_0"
+ ],
+ "interval": 58.73907992759081,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_2_0_1",
+ "road_3_1_0"
+ ],
+ "interval": 14.684769981897702,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_2_3_3",
+ "road_3_2_1"
+ ],
+ "interval": 71.15428468863556,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_2_3_3",
+ "road_3_2_1"
+ ],
+ "interval": 17.78857117215889,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_2_0_1",
+ "road_3_1_3"
+ ],
+ "interval": 49.40483911199813,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_2_0_1",
+ "road_3_1_3"
+ ],
+ "interval": 12.351209777999532,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_2_3_3",
+ "road_1_1_2"
+ ],
+ "interval": 53.43871377790503,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_2_3_3",
+ "road_1_1_2"
+ ],
+ "interval": 13.359678444476257,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_2_0_1",
+ "road_3_1_3"
+ ],
+ "interval": 57.73252317460592,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_2_0_1",
+ "road_3_1_3"
+ ],
+ "interval": 14.43313079365148,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_2_3_3",
+ "road_1_1_2"
+ ],
+ "interval": 67.70050930967362,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_2_3_3",
+ "road_1_1_2"
+ ],
+ "interval": 16.925127327418405,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_3_0_1",
+ "road_3_2_1"
+ ],
+ "interval": 50.0,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_3_0_1",
+ "road_3_2_1"
+ ],
+ "interval": 12.5,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_3_3_3",
+ "road_3_1_3"
+ ],
+ "interval": 50.0,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_3_3_3",
+ "road_3_1_3"
+ ],
+ "interval": 12.5,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_3_0_1",
+ "road_1_1_2"
+ ],
+ "interval": 41.30156693913602,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_3_0_1",
+ "road_1_1_2"
+ ],
+ "interval": 10.325391734784006,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_3_3_3",
+ "road_1_1_3"
+ ],
+ "interval": 66.55489809238179,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_3_3_3",
+ "road_1_1_3"
+ ],
+ "interval": 16.638724523095448,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_3_0_1",
+ "road_1_2_2"
+ ],
+ "interval": 44.433384602845486,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_3_0_1",
+ "road_1_2_2"
+ ],
+ "interval": 11.108346150711371,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_3_3_3",
+ "road_2_2_1"
+ ],
+ "interval": 72.57901855477017,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_3_3_3",
+ "road_2_2_1"
+ ],
+ "interval": 18.144754638692543,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_3_0_1",
+ "road_3_1_0"
+ ],
+ "interval": 53.58951809372816,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_3_0_1",
+ "road_3_1_0"
+ ],
+ "interval": 13.39737952343204,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 10,
+ "width": 3,
+ "maxPosAcc": 1.5,
+ "maxNegAcc": 3.5,
+ "usualPosAcc": 1.0,
+ "usualNegAcc": 3.5,
+ "minGap": 3,
+ "maxSpeed": 12,
+ "headwayTime": 2
+ },
+ "route": [
+ "road_3_3_3",
+ "road_3_1_0"
+ ],
+ "interval": 67.69007419446481,
+ "startTime": 0,
+ "endTime": -1
+ },
+ {
+ "vehicle": {
+ "length": 5,
+ "width": 2,
+ "maxPosAcc": 2.0,
+ "maxNegAcc": 4.5,
+ "usualPosAcc": 2.0,
+ "usualNegAcc": 4.5,
+ "minGap": 2.5,
+ "maxSpeed": 16.67,
+ "headwayTime": 1.5
+ },
+ "route": [
+ "road_3_3_3",
+ "road_3_1_0"
+ ],
+ "interval": 16.922518548616203,
+ "startTime": 0,
+ "endTime": -1
+ }
+]
\ No newline at end of file
diff --git a/smartcross/envs/cityflow_grid/roadnet_2_3.json b/smartcross/envs/cityflow_grid/roadnet_2_3.json
new file mode 100644
index 0000000..db6d099
--- /dev/null
+++ b/smartcross/envs/cityflow_grid/roadnet_2_3.json
@@ -0,0 +1,35558 @@
+{
+ "intersections": [
+ {
+ "id": "intersection_1_0",
+ "point": {
+ "x": 0,
+ "y": -100
+ },
+ "width": 0,
+ "roads": [
+ "road_1_1_3",
+ "road_1_0_1"
+ ],
+ "roadLinks": [],
+ "trafficLight": {
+ "roadLinkIndices": [],
+ "lightphases": [
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ }
+ ]
+ },
+ "virtual": true
+ },
+ {
+ "id": "intersection_2_0",
+ "point": {
+ "x": 300,
+ "y": -100
+ },
+ "width": 0,
+ "roads": [
+ "road_2_1_3",
+ "road_2_0_1"
+ ],
+ "roadLinks": [],
+ "trafficLight": {
+ "roadLinkIndices": [],
+ "lightphases": [
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ }
+ ]
+ },
+ "virtual": true
+ },
+ {
+ "id": "intersection_3_0",
+ "point": {
+ "x": 600,
+ "y": -100
+ },
+ "width": 0,
+ "roads": [
+ "road_3_1_3",
+ "road_3_0_1"
+ ],
+ "roadLinks": [],
+ "trafficLight": {
+ "roadLinkIndices": [],
+ "lightphases": [
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ }
+ ]
+ },
+ "virtual": true
+ },
+ {
+ "id": "intersection_0_1",
+ "point": {
+ "x": -200,
+ "y": 0
+ },
+ "width": 0,
+ "roads": [
+ "road_1_1_2",
+ "road_0_1_0"
+ ],
+ "roadLinks": [],
+ "trafficLight": {
+ "roadLinkIndices": [],
+ "lightphases": [
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ }
+ ]
+ },
+ "virtual": true
+ },
+ {
+ "id": "intersection_1_1",
+ "point": {
+ "x": 0,
+ "y": 0
+ },
+ "width": 30,
+ "roads": [
+ "road_0_1_0",
+ "road_1_0_1",
+ "road_2_1_2",
+ "road_1_2_3",
+ "road_1_1_0",
+ "road_1_1_1",
+ "road_1_1_2",
+ "road_1_1_3"
+ ],
+ "roadLinks": [
+ {
+ "type": "go_straight",
+ "startRoad": "road_0_1_0",
+ "endRoad": "road_1_1_0",
+ "direction": 0,
+ "laneLinks": [
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -10.0
+ },
+ {
+ "x": -26.16,
+ "y": -9.775999999999998
+ },
+ {
+ "x": -20.88,
+ "y": -9.168000000000001
+ },
+ {
+ "x": -14.52,
+ "y": -8.272
+ },
+ {
+ "x": -7.439999999999998,
+ "y": -7.183999999999999
+ },
+ {
+ "x": 0.0,
+ "y": -6.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": -4.815999999999999
+ },
+ {
+ "x": 14.519999999999992,
+ "y": -3.7280000000000006
+ },
+ {
+ "x": 20.880000000000006,
+ "y": -2.831999999999999
+ },
+ {
+ "x": 26.16,
+ "y": -2.224
+ },
+ {
+ "x": 30.0,
+ "y": -2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -10.0
+ },
+ {
+ "x": -26.16,
+ "y": -9.887999999999998
+ },
+ {
+ "x": -20.88,
+ "y": -9.584000000000001
+ },
+ {
+ "x": -14.52,
+ "y": -9.136
+ },
+ {
+ "x": -7.439999999999998,
+ "y": -8.591999999999999
+ },
+ {
+ "x": 0.0,
+ "y": -8.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": -7.4079999999999995
+ },
+ {
+ "x": 14.519999999999992,
+ "y": -6.864000000000001
+ },
+ {
+ "x": 20.880000000000006,
+ "y": -6.416
+ },
+ {
+ "x": 26.16,
+ "y": -6.112
+ },
+ {
+ "x": 30.0,
+ "y": -6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -10.0
+ },
+ {
+ "x": -26.16,
+ "y": -9.999999999999998
+ },
+ {
+ "x": -20.88,
+ "y": -10.000000000000002
+ },
+ {
+ "x": -14.52,
+ "y": -10.0
+ },
+ {
+ "x": -7.439999999999998,
+ "y": -10.0
+ },
+ {
+ "x": 0.0,
+ "y": -10.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": -10.0
+ },
+ {
+ "x": 14.519999999999992,
+ "y": -10.0
+ },
+ {
+ "x": 20.880000000000006,
+ "y": -10.0
+ },
+ {
+ "x": 26.16,
+ "y": -10.0
+ },
+ {
+ "x": 30.0,
+ "y": -10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -10.0
+ },
+ {
+ "x": -26.16,
+ "y": -10.111999999999998
+ },
+ {
+ "x": -20.88,
+ "y": -10.416
+ },
+ {
+ "x": -14.52,
+ "y": -10.864
+ },
+ {
+ "x": -7.439999999999998,
+ "y": -11.408
+ },
+ {
+ "x": 0.0,
+ "y": -12.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": -12.592000000000002
+ },
+ {
+ "x": 14.519999999999992,
+ "y": -13.136
+ },
+ {
+ "x": 20.880000000000006,
+ "y": -13.584000000000001
+ },
+ {
+ "x": 26.16,
+ "y": -13.888000000000002
+ },
+ {
+ "x": 30.0,
+ "y": -14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -10.0
+ },
+ {
+ "x": -26.16,
+ "y": -10.223999999999998
+ },
+ {
+ "x": -20.88,
+ "y": -10.832
+ },
+ {
+ "x": -14.52,
+ "y": -11.728
+ },
+ {
+ "x": -7.439999999999998,
+ "y": -12.816
+ },
+ {
+ "x": 0.0,
+ "y": -14.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": -15.184000000000001
+ },
+ {
+ "x": 14.519999999999992,
+ "y": -16.272
+ },
+ {
+ "x": 20.880000000000006,
+ "y": -17.168000000000003
+ },
+ {
+ "x": 26.16,
+ "y": -17.776
+ },
+ {
+ "x": 30.0,
+ "y": -18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -10.0
+ },
+ {
+ "x": -26.16,
+ "y": -10.335999999999999
+ },
+ {
+ "x": -20.88,
+ "y": -11.248000000000001
+ },
+ {
+ "x": -14.52,
+ "y": -12.592
+ },
+ {
+ "x": -7.439999999999998,
+ "y": -14.224
+ },
+ {
+ "x": 0.0,
+ "y": -16.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": -17.776000000000003
+ },
+ {
+ "x": 14.519999999999992,
+ "y": -19.407999999999998
+ },
+ {
+ "x": 20.880000000000006,
+ "y": -20.752000000000002
+ },
+ {
+ "x": 26.16,
+ "y": -21.664
+ },
+ {
+ "x": 30.0,
+ "y": -22.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -14.0
+ },
+ {
+ "x": -26.16,
+ "y": -13.664
+ },
+ {
+ "x": -20.88,
+ "y": -12.752
+ },
+ {
+ "x": -14.52,
+ "y": -11.408000000000001
+ },
+ {
+ "x": -7.439999999999998,
+ "y": -9.776
+ },
+ {
+ "x": 0.0,
+ "y": -8.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": -6.223999999999998
+ },
+ {
+ "x": 14.519999999999992,
+ "y": -4.5920000000000005
+ },
+ {
+ "x": 20.880000000000006,
+ "y": -3.2479999999999984
+ },
+ {
+ "x": 26.16,
+ "y": -2.3360000000000003
+ },
+ {
+ "x": 30.0,
+ "y": -2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -14.0
+ },
+ {
+ "x": -26.16,
+ "y": -13.776
+ },
+ {
+ "x": -20.88,
+ "y": -13.168000000000001
+ },
+ {
+ "x": -14.52,
+ "y": -12.272000000000002
+ },
+ {
+ "x": -7.439999999999998,
+ "y": -11.184
+ },
+ {
+ "x": 0.0,
+ "y": -10.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": -8.815999999999999
+ },
+ {
+ "x": 14.519999999999992,
+ "y": -7.728000000000001
+ },
+ {
+ "x": 20.880000000000006,
+ "y": -6.831999999999999
+ },
+ {
+ "x": 26.16,
+ "y": -6.224
+ },
+ {
+ "x": 30.0,
+ "y": -6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -14.0
+ },
+ {
+ "x": -26.16,
+ "y": -13.888
+ },
+ {
+ "x": -20.88,
+ "y": -13.584000000000001
+ },
+ {
+ "x": -14.52,
+ "y": -13.136000000000001
+ },
+ {
+ "x": -7.439999999999998,
+ "y": -12.592
+ },
+ {
+ "x": 0.0,
+ "y": -12.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": -11.408
+ },
+ {
+ "x": 14.519999999999992,
+ "y": -10.864
+ },
+ {
+ "x": 20.880000000000006,
+ "y": -10.415999999999999
+ },
+ {
+ "x": 26.16,
+ "y": -10.111999999999998
+ },
+ {
+ "x": 30.0,
+ "y": -10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -14.0
+ },
+ {
+ "x": -26.16,
+ "y": -14.0
+ },
+ {
+ "x": -20.88,
+ "y": -14.0
+ },
+ {
+ "x": -14.52,
+ "y": -14.000000000000002
+ },
+ {
+ "x": -7.439999999999998,
+ "y": -14.0
+ },
+ {
+ "x": 0.0,
+ "y": -14.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": -14.0
+ },
+ {
+ "x": 14.519999999999992,
+ "y": -14.0
+ },
+ {
+ "x": 20.880000000000006,
+ "y": -14.0
+ },
+ {
+ "x": 26.16,
+ "y": -14.0
+ },
+ {
+ "x": 30.0,
+ "y": -14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -14.0
+ },
+ {
+ "x": -26.16,
+ "y": -14.112
+ },
+ {
+ "x": -20.88,
+ "y": -14.416
+ },
+ {
+ "x": -14.52,
+ "y": -14.864
+ },
+ {
+ "x": -7.439999999999998,
+ "y": -15.408000000000001
+ },
+ {
+ "x": 0.0,
+ "y": -16.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": -16.592
+ },
+ {
+ "x": 14.519999999999992,
+ "y": -17.136
+ },
+ {
+ "x": 20.880000000000006,
+ "y": -17.584000000000003
+ },
+ {
+ "x": 26.16,
+ "y": -17.887999999999998
+ },
+ {
+ "x": 30.0,
+ "y": -18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -14.0
+ },
+ {
+ "x": -26.16,
+ "y": -14.224
+ },
+ {
+ "x": -20.88,
+ "y": -14.832
+ },
+ {
+ "x": -14.52,
+ "y": -15.728000000000002
+ },
+ {
+ "x": -7.439999999999998,
+ "y": -16.816000000000003
+ },
+ {
+ "x": 0.0,
+ "y": -18.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": -19.184
+ },
+ {
+ "x": 14.519999999999992,
+ "y": -20.272
+ },
+ {
+ "x": 20.880000000000006,
+ "y": -21.168000000000003
+ },
+ {
+ "x": 26.16,
+ "y": -21.776
+ },
+ {
+ "x": 30.0,
+ "y": -22.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -18.0
+ },
+ {
+ "x": -26.16,
+ "y": -17.552
+ },
+ {
+ "x": -20.88,
+ "y": -16.336
+ },
+ {
+ "x": -14.52,
+ "y": -14.544
+ },
+ {
+ "x": -7.439999999999998,
+ "y": -12.367999999999999
+ },
+ {
+ "x": 0.0,
+ "y": -10.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": -7.631999999999998
+ },
+ {
+ "x": 14.519999999999992,
+ "y": -5.456000000000001
+ },
+ {
+ "x": 20.880000000000006,
+ "y": -3.663999999999998
+ },
+ {
+ "x": 26.16,
+ "y": -2.4480000000000004
+ },
+ {
+ "x": 30.0,
+ "y": -2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -18.0
+ },
+ {
+ "x": -26.16,
+ "y": -17.663999999999998
+ },
+ {
+ "x": -20.88,
+ "y": -16.752
+ },
+ {
+ "x": -14.52,
+ "y": -15.408000000000001
+ },
+ {
+ "x": -7.439999999999998,
+ "y": -13.775999999999998
+ },
+ {
+ "x": 0.0,
+ "y": -12.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": -10.223999999999998
+ },
+ {
+ "x": 14.519999999999992,
+ "y": -8.592000000000002
+ },
+ {
+ "x": 20.880000000000006,
+ "y": -7.247999999999999
+ },
+ {
+ "x": 26.16,
+ "y": -6.336
+ },
+ {
+ "x": 30.0,
+ "y": -6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -18.0
+ },
+ {
+ "x": -26.16,
+ "y": -17.776
+ },
+ {
+ "x": -20.88,
+ "y": -17.168
+ },
+ {
+ "x": -14.52,
+ "y": -16.272
+ },
+ {
+ "x": -7.439999999999998,
+ "y": -15.184
+ },
+ {
+ "x": 0.0,
+ "y": -14.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": -12.815999999999999
+ },
+ {
+ "x": 14.519999999999992,
+ "y": -11.728000000000002
+ },
+ {
+ "x": 20.880000000000006,
+ "y": -10.831999999999999
+ },
+ {
+ "x": 26.16,
+ "y": -10.224
+ },
+ {
+ "x": 30.0,
+ "y": -10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -18.0
+ },
+ {
+ "x": -26.16,
+ "y": -17.887999999999998
+ },
+ {
+ "x": -20.88,
+ "y": -17.584
+ },
+ {
+ "x": -14.52,
+ "y": -17.136
+ },
+ {
+ "x": -7.439999999999998,
+ "y": -16.592
+ },
+ {
+ "x": 0.0,
+ "y": -16.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": -15.408000000000001
+ },
+ {
+ "x": 14.519999999999992,
+ "y": -14.864
+ },
+ {
+ "x": 20.880000000000006,
+ "y": -14.416
+ },
+ {
+ "x": 26.16,
+ "y": -14.112000000000002
+ },
+ {
+ "x": 30.0,
+ "y": -14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -18.0
+ },
+ {
+ "x": -26.16,
+ "y": -18.0
+ },
+ {
+ "x": -20.88,
+ "y": -18.0
+ },
+ {
+ "x": -14.52,
+ "y": -18.0
+ },
+ {
+ "x": -7.439999999999998,
+ "y": -18.0
+ },
+ {
+ "x": 0.0,
+ "y": -18.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": -18.0
+ },
+ {
+ "x": 14.519999999999992,
+ "y": -18.0
+ },
+ {
+ "x": 20.880000000000006,
+ "y": -18.0
+ },
+ {
+ "x": 26.16,
+ "y": -18.0
+ },
+ {
+ "x": 30.0,
+ "y": -18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -18.0
+ },
+ {
+ "x": -26.16,
+ "y": -18.112
+ },
+ {
+ "x": -20.88,
+ "y": -18.416
+ },
+ {
+ "x": -14.52,
+ "y": -18.864
+ },
+ {
+ "x": -7.439999999999998,
+ "y": -19.408
+ },
+ {
+ "x": 0.0,
+ "y": -20.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": -20.592000000000002
+ },
+ {
+ "x": 14.519999999999992,
+ "y": -21.136
+ },
+ {
+ "x": 20.880000000000006,
+ "y": -21.584
+ },
+ {
+ "x": 26.16,
+ "y": -21.888
+ },
+ {
+ "x": 30.0,
+ "y": -22.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_left",
+ "startRoad": "road_0_1_0",
+ "endRoad": "road_1_1_1",
+ "direction": 0,
+ "laneLinks": [
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -2.0
+ },
+ {
+ "x": -26.674,
+ "y": -1.3739999999999999
+ },
+ {
+ "x": -22.832,
+ "y": 0.3680000000000003
+ },
+ {
+ "x": -18.678,
+ "y": 3.0220000000000007
+ },
+ {
+ "x": -14.415999999999999,
+ "y": 6.384000000000002
+ },
+ {
+ "x": -10.25,
+ "y": 10.25
+ },
+ {
+ "x": -6.383999999999996,
+ "y": 14.416000000000004
+ },
+ {
+ "x": -3.022000000000004,
+ "y": 18.677999999999997
+ },
+ {
+ "x": -0.3679999999999981,
+ "y": 22.832000000000004
+ },
+ {
+ "x": 1.3739999999999994,
+ "y": 26.674
+ },
+ {
+ "x": 2.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -2.0
+ },
+ {
+ "x": -26.562,
+ "y": -1.3739999999999999
+ },
+ {
+ "x": -22.416,
+ "y": 0.3680000000000003
+ },
+ {
+ "x": -17.814,
+ "y": 3.0220000000000007
+ },
+ {
+ "x": -13.008,
+ "y": 6.384000000000002
+ },
+ {
+ "x": -8.25,
+ "y": 10.25
+ },
+ {
+ "x": -3.7919999999999954,
+ "y": 14.416000000000004
+ },
+ {
+ "x": 0.11399999999999633,
+ "y": 18.677999999999997
+ },
+ {
+ "x": 3.216000000000003,
+ "y": 22.832000000000004
+ },
+ {
+ "x": 5.262,
+ "y": 26.674
+ },
+ {
+ "x": 6.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -2.0
+ },
+ {
+ "x": -26.45,
+ "y": -1.3739999999999999
+ },
+ {
+ "x": -22.0,
+ "y": 0.3680000000000003
+ },
+ {
+ "x": -16.95,
+ "y": 3.0220000000000007
+ },
+ {
+ "x": -11.599999999999998,
+ "y": 6.384000000000002
+ },
+ {
+ "x": -6.25,
+ "y": 10.25
+ },
+ {
+ "x": -1.1999999999999948,
+ "y": 14.416000000000004
+ },
+ {
+ "x": 3.2499999999999956,
+ "y": 18.677999999999997
+ },
+ {
+ "x": 6.8000000000000025,
+ "y": 22.832000000000004
+ },
+ {
+ "x": 9.149999999999999,
+ "y": 26.674
+ },
+ {
+ "x": 10.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -2.0
+ },
+ {
+ "x": -26.338,
+ "y": -1.3739999999999999
+ },
+ {
+ "x": -21.584,
+ "y": 0.3680000000000003
+ },
+ {
+ "x": -16.086,
+ "y": 3.0220000000000007
+ },
+ {
+ "x": -10.191999999999998,
+ "y": 6.384000000000002
+ },
+ {
+ "x": -4.25,
+ "y": 10.25
+ },
+ {
+ "x": 1.3920000000000066,
+ "y": 14.416000000000004
+ },
+ {
+ "x": 6.385999999999996,
+ "y": 18.677999999999997
+ },
+ {
+ "x": 10.384000000000004,
+ "y": 22.832000000000004
+ },
+ {
+ "x": 13.038,
+ "y": 26.674
+ },
+ {
+ "x": 14.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -6.0
+ },
+ {
+ "x": -26.674,
+ "y": -5.2620000000000005
+ },
+ {
+ "x": -22.832,
+ "y": -3.216
+ },
+ {
+ "x": -18.678,
+ "y": -0.11400000000000032
+ },
+ {
+ "x": -14.415999999999999,
+ "y": 3.792000000000002
+ },
+ {
+ "x": -10.25,
+ "y": 8.25
+ },
+ {
+ "x": -6.383999999999996,
+ "y": 13.008000000000006
+ },
+ {
+ "x": -3.022000000000004,
+ "y": 17.813999999999997
+ },
+ {
+ "x": -0.3679999999999981,
+ "y": 22.416000000000004
+ },
+ {
+ "x": 1.3739999999999994,
+ "y": 26.562
+ },
+ {
+ "x": 2.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -6.0
+ },
+ {
+ "x": -26.562,
+ "y": -5.2620000000000005
+ },
+ {
+ "x": -22.416,
+ "y": -3.216
+ },
+ {
+ "x": -17.814,
+ "y": -0.11400000000000032
+ },
+ {
+ "x": -13.008,
+ "y": 3.792000000000002
+ },
+ {
+ "x": -8.25,
+ "y": 8.25
+ },
+ {
+ "x": -3.7919999999999954,
+ "y": 13.008000000000006
+ },
+ {
+ "x": 0.11399999999999633,
+ "y": 17.813999999999997
+ },
+ {
+ "x": 3.216000000000003,
+ "y": 22.416000000000004
+ },
+ {
+ "x": 5.262,
+ "y": 26.562
+ },
+ {
+ "x": 6.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -6.0
+ },
+ {
+ "x": -26.45,
+ "y": -5.2620000000000005
+ },
+ {
+ "x": -22.0,
+ "y": -3.216
+ },
+ {
+ "x": -16.95,
+ "y": -0.11400000000000032
+ },
+ {
+ "x": -11.599999999999998,
+ "y": 3.792000000000002
+ },
+ {
+ "x": -6.25,
+ "y": 8.25
+ },
+ {
+ "x": -1.1999999999999948,
+ "y": 13.008000000000006
+ },
+ {
+ "x": 3.2499999999999956,
+ "y": 17.813999999999997
+ },
+ {
+ "x": 6.8000000000000025,
+ "y": 22.416000000000004
+ },
+ {
+ "x": 9.149999999999999,
+ "y": 26.562
+ },
+ {
+ "x": 10.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -6.0
+ },
+ {
+ "x": -26.338,
+ "y": -5.2620000000000005
+ },
+ {
+ "x": -21.584,
+ "y": -3.216
+ },
+ {
+ "x": -16.086,
+ "y": -0.11400000000000032
+ },
+ {
+ "x": -10.191999999999998,
+ "y": 3.792000000000002
+ },
+ {
+ "x": -4.25,
+ "y": 8.25
+ },
+ {
+ "x": 1.3920000000000066,
+ "y": 13.008000000000006
+ },
+ {
+ "x": 6.385999999999996,
+ "y": 17.813999999999997
+ },
+ {
+ "x": 10.384000000000004,
+ "y": 22.416000000000004
+ },
+ {
+ "x": 13.038,
+ "y": 26.562
+ },
+ {
+ "x": 14.0,
+ "y": 30.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_right",
+ "startRoad": "road_0_1_0",
+ "endRoad": "road_1_1_3",
+ "direction": 0,
+ "laneLinks": [
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -18.0
+ },
+ {
+ "x": -26.786,
+ "y": -18.066
+ },
+ {
+ "x": -23.247999999999998,
+ "y": -18.288
+ },
+ {
+ "x": -19.541999999999998,
+ "y": -18.701999999999998
+ },
+ {
+ "x": -15.824,
+ "y": -19.344
+ },
+ {
+ "x": -12.25,
+ "y": -20.25
+ },
+ {
+ "x": -8.975999999999996,
+ "y": -21.456000000000003
+ },
+ {
+ "x": -6.158000000000003,
+ "y": -22.997999999999998
+ },
+ {
+ "x": -3.9519999999999986,
+ "y": -24.912
+ },
+ {
+ "x": -2.5140000000000002,
+ "y": -27.234
+ },
+ {
+ "x": -2.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -18.0
+ },
+ {
+ "x": -26.898,
+ "y": -18.066
+ },
+ {
+ "x": -23.663999999999998,
+ "y": -18.288
+ },
+ {
+ "x": -20.406,
+ "y": -18.701999999999998
+ },
+ {
+ "x": -17.232,
+ "y": -19.344
+ },
+ {
+ "x": -14.25,
+ "y": -20.25
+ },
+ {
+ "x": -11.567999999999998,
+ "y": -21.456000000000003
+ },
+ {
+ "x": -9.294000000000004,
+ "y": -22.997999999999998
+ },
+ {
+ "x": -7.536,
+ "y": -24.912
+ },
+ {
+ "x": -6.402,
+ "y": -27.234
+ },
+ {
+ "x": -6.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -18.0
+ },
+ {
+ "x": -27.01,
+ "y": -18.066
+ },
+ {
+ "x": -24.08,
+ "y": -18.288
+ },
+ {
+ "x": -21.27,
+ "y": -18.701999999999998
+ },
+ {
+ "x": -18.64,
+ "y": -19.344
+ },
+ {
+ "x": -16.25,
+ "y": -20.25
+ },
+ {
+ "x": -14.159999999999997,
+ "y": -21.456000000000003
+ },
+ {
+ "x": -12.430000000000003,
+ "y": -22.997999999999998
+ },
+ {
+ "x": -11.12,
+ "y": -24.912
+ },
+ {
+ "x": -10.29,
+ "y": -27.234
+ },
+ {
+ "x": -10.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -18.0
+ },
+ {
+ "x": -27.122,
+ "y": -18.066
+ },
+ {
+ "x": -24.496,
+ "y": -18.288
+ },
+ {
+ "x": -22.134,
+ "y": -18.701999999999998
+ },
+ {
+ "x": -20.048000000000002,
+ "y": -19.344
+ },
+ {
+ "x": -18.25,
+ "y": -20.25
+ },
+ {
+ "x": -16.752,
+ "y": -21.456000000000003
+ },
+ {
+ "x": -15.566000000000003,
+ "y": -22.997999999999998
+ },
+ {
+ "x": -14.704,
+ "y": -24.912
+ },
+ {
+ "x": -14.178,
+ "y": -27.234
+ },
+ {
+ "x": -14.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -22.0
+ },
+ {
+ "x": -26.786,
+ "y": -21.954
+ },
+ {
+ "x": -23.247999999999998,
+ "y": -21.872
+ },
+ {
+ "x": -19.541999999999998,
+ "y": -21.838
+ },
+ {
+ "x": -15.824,
+ "y": -21.936000000000003
+ },
+ {
+ "x": -12.25,
+ "y": -22.25
+ },
+ {
+ "x": -8.975999999999996,
+ "y": -22.864
+ },
+ {
+ "x": -6.158000000000003,
+ "y": -23.862
+ },
+ {
+ "x": -3.9519999999999986,
+ "y": -25.328
+ },
+ {
+ "x": -2.5140000000000002,
+ "y": -27.346
+ },
+ {
+ "x": -2.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -22.0
+ },
+ {
+ "x": -26.898,
+ "y": -21.954
+ },
+ {
+ "x": -23.663999999999998,
+ "y": -21.872
+ },
+ {
+ "x": -20.406,
+ "y": -21.838
+ },
+ {
+ "x": -17.232,
+ "y": -21.936000000000003
+ },
+ {
+ "x": -14.25,
+ "y": -22.25
+ },
+ {
+ "x": -11.567999999999998,
+ "y": -22.864
+ },
+ {
+ "x": -9.294000000000004,
+ "y": -23.862
+ },
+ {
+ "x": -7.536,
+ "y": -25.328
+ },
+ {
+ "x": -6.402,
+ "y": -27.346
+ },
+ {
+ "x": -6.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -22.0
+ },
+ {
+ "x": -27.01,
+ "y": -21.954
+ },
+ {
+ "x": -24.08,
+ "y": -21.872
+ },
+ {
+ "x": -21.27,
+ "y": -21.838
+ },
+ {
+ "x": -18.64,
+ "y": -21.936000000000003
+ },
+ {
+ "x": -16.25,
+ "y": -22.25
+ },
+ {
+ "x": -14.159999999999997,
+ "y": -22.864
+ },
+ {
+ "x": -12.430000000000003,
+ "y": -23.862
+ },
+ {
+ "x": -11.12,
+ "y": -25.328
+ },
+ {
+ "x": -10.29,
+ "y": -27.346
+ },
+ {
+ "x": -10.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": -30.0,
+ "y": -22.0
+ },
+ {
+ "x": -27.122,
+ "y": -21.954
+ },
+ {
+ "x": -24.496,
+ "y": -21.872
+ },
+ {
+ "x": -22.134,
+ "y": -21.838
+ },
+ {
+ "x": -20.048000000000002,
+ "y": -21.936000000000003
+ },
+ {
+ "x": -18.25,
+ "y": -22.25
+ },
+ {
+ "x": -16.752,
+ "y": -22.864
+ },
+ {
+ "x": -15.566000000000003,
+ "y": -23.862
+ },
+ {
+ "x": -14.704,
+ "y": -25.328
+ },
+ {
+ "x": -14.178,
+ "y": -27.346
+ },
+ {
+ "x": -14.0,
+ "y": -30.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_right",
+ "startRoad": "road_1_0_1",
+ "endRoad": "road_1_1_0",
+ "direction": 1,
+ "laneLinks": [
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 14.0,
+ "y": -30.0
+ },
+ {
+ "x": 14.178,
+ "y": -26.786
+ },
+ {
+ "x": 14.704,
+ "y": -23.247999999999998
+ },
+ {
+ "x": 15.566000000000003,
+ "y": -19.541999999999998
+ },
+ {
+ "x": 16.752000000000002,
+ "y": -15.824
+ },
+ {
+ "x": 18.25,
+ "y": -12.25
+ },
+ {
+ "x": 20.048000000000002,
+ "y": -8.975999999999996
+ },
+ {
+ "x": 22.133999999999997,
+ "y": -6.158000000000003
+ },
+ {
+ "x": 24.496000000000002,
+ "y": -3.9519999999999986
+ },
+ {
+ "x": 27.122,
+ "y": -2.5140000000000002
+ },
+ {
+ "x": 30.0,
+ "y": -2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 14.0,
+ "y": -30.0
+ },
+ {
+ "x": 14.178,
+ "y": -26.898
+ },
+ {
+ "x": 14.704,
+ "y": -23.663999999999998
+ },
+ {
+ "x": 15.566000000000003,
+ "y": -20.406
+ },
+ {
+ "x": 16.752000000000002,
+ "y": -17.232
+ },
+ {
+ "x": 18.25,
+ "y": -14.25
+ },
+ {
+ "x": 20.048000000000002,
+ "y": -11.567999999999998
+ },
+ {
+ "x": 22.133999999999997,
+ "y": -9.294000000000004
+ },
+ {
+ "x": 24.496000000000002,
+ "y": -7.536
+ },
+ {
+ "x": 27.122,
+ "y": -6.402
+ },
+ {
+ "x": 30.0,
+ "y": -6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 14.0,
+ "y": -30.0
+ },
+ {
+ "x": 14.178,
+ "y": -27.01
+ },
+ {
+ "x": 14.704,
+ "y": -24.08
+ },
+ {
+ "x": 15.566000000000003,
+ "y": -21.27
+ },
+ {
+ "x": 16.752000000000002,
+ "y": -18.64
+ },
+ {
+ "x": 18.25,
+ "y": -16.25
+ },
+ {
+ "x": 20.048000000000002,
+ "y": -14.159999999999997
+ },
+ {
+ "x": 22.133999999999997,
+ "y": -12.430000000000003
+ },
+ {
+ "x": 24.496000000000002,
+ "y": -11.12
+ },
+ {
+ "x": 27.122,
+ "y": -10.29
+ },
+ {
+ "x": 30.0,
+ "y": -10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 14.0,
+ "y": -30.0
+ },
+ {
+ "x": 14.178,
+ "y": -27.122
+ },
+ {
+ "x": 14.704,
+ "y": -24.496
+ },
+ {
+ "x": 15.566000000000003,
+ "y": -22.134
+ },
+ {
+ "x": 16.752000000000002,
+ "y": -20.048000000000002
+ },
+ {
+ "x": 18.25,
+ "y": -18.25
+ },
+ {
+ "x": 20.048000000000002,
+ "y": -16.752
+ },
+ {
+ "x": 22.133999999999997,
+ "y": -15.566000000000003
+ },
+ {
+ "x": 24.496000000000002,
+ "y": -14.704
+ },
+ {
+ "x": 27.122,
+ "y": -14.178
+ },
+ {
+ "x": 30.0,
+ "y": -14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 14.0,
+ "y": -30.0
+ },
+ {
+ "x": 14.178,
+ "y": -27.234
+ },
+ {
+ "x": 14.704,
+ "y": -24.912
+ },
+ {
+ "x": 15.566000000000003,
+ "y": -22.998
+ },
+ {
+ "x": 16.752000000000002,
+ "y": -21.456000000000003
+ },
+ {
+ "x": 18.25,
+ "y": -20.25
+ },
+ {
+ "x": 20.048000000000002,
+ "y": -19.343999999999998
+ },
+ {
+ "x": 22.133999999999997,
+ "y": -18.702
+ },
+ {
+ "x": 24.496000000000002,
+ "y": -18.288000000000004
+ },
+ {
+ "x": 27.122,
+ "y": -18.066
+ },
+ {
+ "x": 30.0,
+ "y": -18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 14.0,
+ "y": -30.0
+ },
+ {
+ "x": 14.178,
+ "y": -27.346
+ },
+ {
+ "x": 14.704,
+ "y": -25.328
+ },
+ {
+ "x": 15.566000000000003,
+ "y": -23.862000000000002
+ },
+ {
+ "x": 16.752000000000002,
+ "y": -22.864
+ },
+ {
+ "x": 18.25,
+ "y": -22.25
+ },
+ {
+ "x": 20.048000000000002,
+ "y": -21.936
+ },
+ {
+ "x": 22.133999999999997,
+ "y": -21.838
+ },
+ {
+ "x": 24.496000000000002,
+ "y": -21.872
+ },
+ {
+ "x": 27.122,
+ "y": -21.954
+ },
+ {
+ "x": 30.0,
+ "y": -22.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "go_straight",
+ "startRoad": "road_1_0_1",
+ "endRoad": "road_1_1_1",
+ "direction": 1,
+ "laneLinks": [
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 6.0,
+ "y": -30.0
+ },
+ {
+ "x": 5.888,
+ "y": -26.16
+ },
+ {
+ "x": 5.5840000000000005,
+ "y": -20.88
+ },
+ {
+ "x": 5.136000000000001,
+ "y": -14.52
+ },
+ {
+ "x": 4.592,
+ "y": -7.439999999999998
+ },
+ {
+ "x": 4.0,
+ "y": 0.0
+ },
+ {
+ "x": 3.4079999999999995,
+ "y": 7.440000000000009
+ },
+ {
+ "x": 2.8640000000000003,
+ "y": 14.519999999999992
+ },
+ {
+ "x": 2.4159999999999995,
+ "y": 20.880000000000006
+ },
+ {
+ "x": 2.112,
+ "y": 26.16
+ },
+ {
+ "x": 2.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 6.0,
+ "y": -30.0
+ },
+ {
+ "x": 6.0,
+ "y": -26.16
+ },
+ {
+ "x": 6.0,
+ "y": -20.88
+ },
+ {
+ "x": 6.000000000000001,
+ "y": -14.52
+ },
+ {
+ "x": 6.0,
+ "y": -7.439999999999998
+ },
+ {
+ "x": 6.0,
+ "y": 0.0
+ },
+ {
+ "x": 6.0,
+ "y": 7.440000000000009
+ },
+ {
+ "x": 6.0,
+ "y": 14.519999999999992
+ },
+ {
+ "x": 6.0,
+ "y": 20.880000000000006
+ },
+ {
+ "x": 6.0,
+ "y": 26.16
+ },
+ {
+ "x": 6.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 6.0,
+ "y": -30.0
+ },
+ {
+ "x": 6.112,
+ "y": -26.16
+ },
+ {
+ "x": 6.416,
+ "y": -20.88
+ },
+ {
+ "x": 6.864000000000001,
+ "y": -14.52
+ },
+ {
+ "x": 7.408,
+ "y": -7.439999999999998
+ },
+ {
+ "x": 8.0,
+ "y": 0.0
+ },
+ {
+ "x": 8.592,
+ "y": 7.440000000000009
+ },
+ {
+ "x": 9.136,
+ "y": 14.519999999999992
+ },
+ {
+ "x": 9.584,
+ "y": 20.880000000000006
+ },
+ {
+ "x": 9.887999999999998,
+ "y": 26.16
+ },
+ {
+ "x": 10.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 6.0,
+ "y": -30.0
+ },
+ {
+ "x": 6.224,
+ "y": -26.16
+ },
+ {
+ "x": 6.832000000000001,
+ "y": -20.88
+ },
+ {
+ "x": 7.7280000000000015,
+ "y": -14.52
+ },
+ {
+ "x": 8.816,
+ "y": -7.439999999999998
+ },
+ {
+ "x": 10.0,
+ "y": 0.0
+ },
+ {
+ "x": 11.184000000000001,
+ "y": 7.440000000000009
+ },
+ {
+ "x": 12.272,
+ "y": 14.519999999999992
+ },
+ {
+ "x": 13.168000000000001,
+ "y": 20.880000000000006
+ },
+ {
+ "x": 13.776,
+ "y": 26.16
+ },
+ {
+ "x": 14.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 10.0,
+ "y": -30.0
+ },
+ {
+ "x": 9.775999999999998,
+ "y": -26.16
+ },
+ {
+ "x": 9.168000000000001,
+ "y": -20.88
+ },
+ {
+ "x": 8.272,
+ "y": -14.52
+ },
+ {
+ "x": 7.183999999999999,
+ "y": -7.439999999999998
+ },
+ {
+ "x": 6.0,
+ "y": 0.0
+ },
+ {
+ "x": 4.815999999999999,
+ "y": 7.440000000000009
+ },
+ {
+ "x": 3.7280000000000006,
+ "y": 14.519999999999992
+ },
+ {
+ "x": 2.831999999999999,
+ "y": 20.880000000000006
+ },
+ {
+ "x": 2.224,
+ "y": 26.16
+ },
+ {
+ "x": 2.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 10.0,
+ "y": -30.0
+ },
+ {
+ "x": 9.887999999999998,
+ "y": -26.16
+ },
+ {
+ "x": 9.584000000000001,
+ "y": -20.88
+ },
+ {
+ "x": 9.136,
+ "y": -14.52
+ },
+ {
+ "x": 8.591999999999999,
+ "y": -7.439999999999998
+ },
+ {
+ "x": 8.0,
+ "y": 0.0
+ },
+ {
+ "x": 7.4079999999999995,
+ "y": 7.440000000000009
+ },
+ {
+ "x": 6.864000000000001,
+ "y": 14.519999999999992
+ },
+ {
+ "x": 6.416,
+ "y": 20.880000000000006
+ },
+ {
+ "x": 6.112,
+ "y": 26.16
+ },
+ {
+ "x": 6.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 10.0,
+ "y": -30.0
+ },
+ {
+ "x": 9.999999999999998,
+ "y": -26.16
+ },
+ {
+ "x": 10.000000000000002,
+ "y": -20.88
+ },
+ {
+ "x": 10.0,
+ "y": -14.52
+ },
+ {
+ "x": 10.0,
+ "y": -7.439999999999998
+ },
+ {
+ "x": 10.0,
+ "y": 0.0
+ },
+ {
+ "x": 10.0,
+ "y": 7.440000000000009
+ },
+ {
+ "x": 10.0,
+ "y": 14.519999999999992
+ },
+ {
+ "x": 10.0,
+ "y": 20.880000000000006
+ },
+ {
+ "x": 10.0,
+ "y": 26.16
+ },
+ {
+ "x": 10.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 10.0,
+ "y": -30.0
+ },
+ {
+ "x": 10.111999999999998,
+ "y": -26.16
+ },
+ {
+ "x": 10.416,
+ "y": -20.88
+ },
+ {
+ "x": 10.864,
+ "y": -14.52
+ },
+ {
+ "x": 11.408,
+ "y": -7.439999999999998
+ },
+ {
+ "x": 12.0,
+ "y": 0.0
+ },
+ {
+ "x": 12.592000000000002,
+ "y": 7.440000000000009
+ },
+ {
+ "x": 13.136,
+ "y": 14.519999999999992
+ },
+ {
+ "x": 13.584000000000001,
+ "y": 20.880000000000006
+ },
+ {
+ "x": 13.888000000000002,
+ "y": 26.16
+ },
+ {
+ "x": 14.0,
+ "y": 30.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_left",
+ "startRoad": "road_1_0_1",
+ "endRoad": "road_1_1_2",
+ "direction": 1,
+ "laneLinks": [
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 2.0,
+ "y": -30.0
+ },
+ {
+ "x": 1.3739999999999999,
+ "y": -26.674
+ },
+ {
+ "x": -0.3680000000000003,
+ "y": -22.832
+ },
+ {
+ "x": -3.0220000000000007,
+ "y": -18.678
+ },
+ {
+ "x": -6.384000000000002,
+ "y": -14.415999999999999
+ },
+ {
+ "x": -10.25,
+ "y": -10.25
+ },
+ {
+ "x": -14.416000000000004,
+ "y": -6.383999999999996
+ },
+ {
+ "x": -18.677999999999997,
+ "y": -3.022000000000004
+ },
+ {
+ "x": -22.832000000000004,
+ "y": -0.3679999999999981
+ },
+ {
+ "x": -26.674,
+ "y": 1.3739999999999994
+ },
+ {
+ "x": -30.0,
+ "y": 2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 2.0,
+ "y": -30.0
+ },
+ {
+ "x": 1.3739999999999999,
+ "y": -26.562
+ },
+ {
+ "x": -0.3680000000000003,
+ "y": -22.416
+ },
+ {
+ "x": -3.0220000000000007,
+ "y": -17.814
+ },
+ {
+ "x": -6.384000000000002,
+ "y": -13.008
+ },
+ {
+ "x": -10.25,
+ "y": -8.25
+ },
+ {
+ "x": -14.416000000000004,
+ "y": -3.7919999999999954
+ },
+ {
+ "x": -18.677999999999997,
+ "y": 0.11399999999999633
+ },
+ {
+ "x": -22.832000000000004,
+ "y": 3.216000000000003
+ },
+ {
+ "x": -26.674,
+ "y": 5.262
+ },
+ {
+ "x": -30.0,
+ "y": 6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 2.0,
+ "y": -30.0
+ },
+ {
+ "x": 1.3739999999999999,
+ "y": -26.45
+ },
+ {
+ "x": -0.3680000000000003,
+ "y": -22.0
+ },
+ {
+ "x": -3.0220000000000007,
+ "y": -16.95
+ },
+ {
+ "x": -6.384000000000002,
+ "y": -11.599999999999998
+ },
+ {
+ "x": -10.25,
+ "y": -6.25
+ },
+ {
+ "x": -14.416000000000004,
+ "y": -1.1999999999999948
+ },
+ {
+ "x": -18.677999999999997,
+ "y": 3.2499999999999956
+ },
+ {
+ "x": -22.832000000000004,
+ "y": 6.8000000000000025
+ },
+ {
+ "x": -26.674,
+ "y": 9.149999999999999
+ },
+ {
+ "x": -30.0,
+ "y": 10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 2.0,
+ "y": -30.0
+ },
+ {
+ "x": 1.3739999999999999,
+ "y": -26.338
+ },
+ {
+ "x": -0.3680000000000003,
+ "y": -21.584
+ },
+ {
+ "x": -3.0220000000000007,
+ "y": -16.086
+ },
+ {
+ "x": -6.384000000000002,
+ "y": -10.191999999999998
+ },
+ {
+ "x": -10.25,
+ "y": -4.25
+ },
+ {
+ "x": -14.416000000000004,
+ "y": 1.3920000000000066
+ },
+ {
+ "x": -18.677999999999997,
+ "y": 6.385999999999996
+ },
+ {
+ "x": -22.832000000000004,
+ "y": 10.384000000000004
+ },
+ {
+ "x": -26.674,
+ "y": 13.038
+ },
+ {
+ "x": -30.0,
+ "y": 14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 2.0,
+ "y": -30.0
+ },
+ {
+ "x": 1.3739999999999999,
+ "y": -26.226
+ },
+ {
+ "x": -0.3680000000000003,
+ "y": -21.168
+ },
+ {
+ "x": -3.0220000000000007,
+ "y": -15.222
+ },
+ {
+ "x": -6.384000000000002,
+ "y": -8.783999999999997
+ },
+ {
+ "x": -10.25,
+ "y": -2.25
+ },
+ {
+ "x": -14.416000000000004,
+ "y": 3.9840000000000053
+ },
+ {
+ "x": -18.677999999999997,
+ "y": 9.521999999999995
+ },
+ {
+ "x": -22.832000000000004,
+ "y": 13.968000000000005
+ },
+ {
+ "x": -26.674,
+ "y": 16.926
+ },
+ {
+ "x": -30.0,
+ "y": 18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 2.0,
+ "y": -30.0
+ },
+ {
+ "x": 1.3739999999999999,
+ "y": -26.114
+ },
+ {
+ "x": -0.3680000000000003,
+ "y": -20.752
+ },
+ {
+ "x": -3.0220000000000007,
+ "y": -14.357999999999999
+ },
+ {
+ "x": -6.384000000000002,
+ "y": -7.375999999999998
+ },
+ {
+ "x": -10.25,
+ "y": -0.25
+ },
+ {
+ "x": -14.416000000000004,
+ "y": 6.576000000000008
+ },
+ {
+ "x": -18.677999999999997,
+ "y": 12.657999999999994
+ },
+ {
+ "x": -22.832000000000004,
+ "y": 17.552000000000007
+ },
+ {
+ "x": -26.674,
+ "y": 20.814
+ },
+ {
+ "x": -30.0,
+ "y": 22.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_right",
+ "startRoad": "road_2_1_2",
+ "endRoad": "road_1_1_1",
+ "direction": 2,
+ "laneLinks": [
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 18.0
+ },
+ {
+ "x": 26.786,
+ "y": 18.066
+ },
+ {
+ "x": 23.247999999999998,
+ "y": 18.288
+ },
+ {
+ "x": 19.541999999999998,
+ "y": 18.701999999999998
+ },
+ {
+ "x": 15.824,
+ "y": 19.344
+ },
+ {
+ "x": 12.25,
+ "y": 20.25
+ },
+ {
+ "x": 8.975999999999996,
+ "y": 21.456000000000003
+ },
+ {
+ "x": 6.158000000000003,
+ "y": 22.997999999999998
+ },
+ {
+ "x": 3.9519999999999986,
+ "y": 24.912
+ },
+ {
+ "x": 2.5140000000000002,
+ "y": 27.234
+ },
+ {
+ "x": 2.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 18.0
+ },
+ {
+ "x": 26.898,
+ "y": 18.066
+ },
+ {
+ "x": 23.663999999999998,
+ "y": 18.288
+ },
+ {
+ "x": 20.406,
+ "y": 18.701999999999998
+ },
+ {
+ "x": 17.232,
+ "y": 19.344
+ },
+ {
+ "x": 14.25,
+ "y": 20.25
+ },
+ {
+ "x": 11.567999999999998,
+ "y": 21.456000000000003
+ },
+ {
+ "x": 9.294000000000004,
+ "y": 22.997999999999998
+ },
+ {
+ "x": 7.536,
+ "y": 24.912
+ },
+ {
+ "x": 6.402,
+ "y": 27.234
+ },
+ {
+ "x": 6.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 18.0
+ },
+ {
+ "x": 27.01,
+ "y": 18.066
+ },
+ {
+ "x": 24.08,
+ "y": 18.288
+ },
+ {
+ "x": 21.27,
+ "y": 18.701999999999998
+ },
+ {
+ "x": 18.64,
+ "y": 19.344
+ },
+ {
+ "x": 16.25,
+ "y": 20.25
+ },
+ {
+ "x": 14.159999999999997,
+ "y": 21.456000000000003
+ },
+ {
+ "x": 12.430000000000003,
+ "y": 22.997999999999998
+ },
+ {
+ "x": 11.12,
+ "y": 24.912
+ },
+ {
+ "x": 10.29,
+ "y": 27.234
+ },
+ {
+ "x": 10.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 18.0
+ },
+ {
+ "x": 27.122,
+ "y": 18.066
+ },
+ {
+ "x": 24.496,
+ "y": 18.288
+ },
+ {
+ "x": 22.134,
+ "y": 18.701999999999998
+ },
+ {
+ "x": 20.048000000000002,
+ "y": 19.344
+ },
+ {
+ "x": 18.25,
+ "y": 20.25
+ },
+ {
+ "x": 16.752,
+ "y": 21.456000000000003
+ },
+ {
+ "x": 15.566000000000003,
+ "y": 22.997999999999998
+ },
+ {
+ "x": 14.704,
+ "y": 24.912
+ },
+ {
+ "x": 14.178,
+ "y": 27.234
+ },
+ {
+ "x": 14.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 22.0
+ },
+ {
+ "x": 26.786,
+ "y": 21.954
+ },
+ {
+ "x": 23.247999999999998,
+ "y": 21.872
+ },
+ {
+ "x": 19.541999999999998,
+ "y": 21.838
+ },
+ {
+ "x": 15.824,
+ "y": 21.936000000000003
+ },
+ {
+ "x": 12.25,
+ "y": 22.25
+ },
+ {
+ "x": 8.975999999999996,
+ "y": 22.864
+ },
+ {
+ "x": 6.158000000000003,
+ "y": 23.862
+ },
+ {
+ "x": 3.9519999999999986,
+ "y": 25.328
+ },
+ {
+ "x": 2.5140000000000002,
+ "y": 27.346
+ },
+ {
+ "x": 2.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 22.0
+ },
+ {
+ "x": 26.898,
+ "y": 21.954
+ },
+ {
+ "x": 23.663999999999998,
+ "y": 21.872
+ },
+ {
+ "x": 20.406,
+ "y": 21.838
+ },
+ {
+ "x": 17.232,
+ "y": 21.936000000000003
+ },
+ {
+ "x": 14.25,
+ "y": 22.25
+ },
+ {
+ "x": 11.567999999999998,
+ "y": 22.864
+ },
+ {
+ "x": 9.294000000000004,
+ "y": 23.862
+ },
+ {
+ "x": 7.536,
+ "y": 25.328
+ },
+ {
+ "x": 6.402,
+ "y": 27.346
+ },
+ {
+ "x": 6.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 22.0
+ },
+ {
+ "x": 27.01,
+ "y": 21.954
+ },
+ {
+ "x": 24.08,
+ "y": 21.872
+ },
+ {
+ "x": 21.27,
+ "y": 21.838
+ },
+ {
+ "x": 18.64,
+ "y": 21.936000000000003
+ },
+ {
+ "x": 16.25,
+ "y": 22.25
+ },
+ {
+ "x": 14.159999999999997,
+ "y": 22.864
+ },
+ {
+ "x": 12.430000000000003,
+ "y": 23.862
+ },
+ {
+ "x": 11.12,
+ "y": 25.328
+ },
+ {
+ "x": 10.29,
+ "y": 27.346
+ },
+ {
+ "x": 10.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 22.0
+ },
+ {
+ "x": 27.122,
+ "y": 21.954
+ },
+ {
+ "x": 24.496,
+ "y": 21.872
+ },
+ {
+ "x": 22.134,
+ "y": 21.838
+ },
+ {
+ "x": 20.048000000000002,
+ "y": 21.936000000000003
+ },
+ {
+ "x": 18.25,
+ "y": 22.25
+ },
+ {
+ "x": 16.752,
+ "y": 22.864
+ },
+ {
+ "x": 15.566000000000003,
+ "y": 23.862
+ },
+ {
+ "x": 14.704,
+ "y": 25.328
+ },
+ {
+ "x": 14.178,
+ "y": 27.346
+ },
+ {
+ "x": 14.0,
+ "y": 30.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "go_straight",
+ "startRoad": "road_2_1_2",
+ "endRoad": "road_1_1_2",
+ "direction": 2,
+ "laneLinks": [
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 10.0
+ },
+ {
+ "x": 26.16,
+ "y": 9.775999999999998
+ },
+ {
+ "x": 20.88,
+ "y": 9.168000000000001
+ },
+ {
+ "x": 14.52,
+ "y": 8.272
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 7.183999999999999
+ },
+ {
+ "x": 0.0,
+ "y": 6.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 4.815999999999999
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 3.7280000000000006
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 2.831999999999999
+ },
+ {
+ "x": -26.16,
+ "y": 2.224
+ },
+ {
+ "x": -30.0,
+ "y": 2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 10.0
+ },
+ {
+ "x": 26.16,
+ "y": 9.887999999999998
+ },
+ {
+ "x": 20.88,
+ "y": 9.584000000000001
+ },
+ {
+ "x": 14.52,
+ "y": 9.136
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 8.591999999999999
+ },
+ {
+ "x": 0.0,
+ "y": 8.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 7.4079999999999995
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 6.864000000000001
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 6.416
+ },
+ {
+ "x": -26.16,
+ "y": 6.112
+ },
+ {
+ "x": -30.0,
+ "y": 6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 10.0
+ },
+ {
+ "x": 26.16,
+ "y": 9.999999999999998
+ },
+ {
+ "x": 20.88,
+ "y": 10.000000000000002
+ },
+ {
+ "x": 14.52,
+ "y": 10.0
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 10.0
+ },
+ {
+ "x": 0.0,
+ "y": 10.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 10.0
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 10.0
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 10.0
+ },
+ {
+ "x": -26.16,
+ "y": 10.0
+ },
+ {
+ "x": -30.0,
+ "y": 10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 10.0
+ },
+ {
+ "x": 26.16,
+ "y": 10.111999999999998
+ },
+ {
+ "x": 20.88,
+ "y": 10.416
+ },
+ {
+ "x": 14.52,
+ "y": 10.864
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 11.408
+ },
+ {
+ "x": 0.0,
+ "y": 12.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 12.592000000000002
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 13.136
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 13.584000000000001
+ },
+ {
+ "x": -26.16,
+ "y": 13.888000000000002
+ },
+ {
+ "x": -30.0,
+ "y": 14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 10.0
+ },
+ {
+ "x": 26.16,
+ "y": 10.223999999999998
+ },
+ {
+ "x": 20.88,
+ "y": 10.832
+ },
+ {
+ "x": 14.52,
+ "y": 11.728
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 12.816
+ },
+ {
+ "x": 0.0,
+ "y": 14.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 15.184000000000001
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 16.272
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 17.168000000000003
+ },
+ {
+ "x": -26.16,
+ "y": 17.776
+ },
+ {
+ "x": -30.0,
+ "y": 18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 10.0
+ },
+ {
+ "x": 26.16,
+ "y": 10.335999999999999
+ },
+ {
+ "x": 20.88,
+ "y": 11.248000000000001
+ },
+ {
+ "x": 14.52,
+ "y": 12.592
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 14.224
+ },
+ {
+ "x": 0.0,
+ "y": 16.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 17.776000000000003
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 19.407999999999998
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 20.752000000000002
+ },
+ {
+ "x": -26.16,
+ "y": 21.664
+ },
+ {
+ "x": -30.0,
+ "y": 22.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 14.0
+ },
+ {
+ "x": 26.16,
+ "y": 13.664
+ },
+ {
+ "x": 20.88,
+ "y": 12.752
+ },
+ {
+ "x": 14.52,
+ "y": 11.408000000000001
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 9.776
+ },
+ {
+ "x": 0.0,
+ "y": 8.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 6.223999999999998
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 4.5920000000000005
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 3.2479999999999984
+ },
+ {
+ "x": -26.16,
+ "y": 2.3360000000000003
+ },
+ {
+ "x": -30.0,
+ "y": 2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 14.0
+ },
+ {
+ "x": 26.16,
+ "y": 13.776
+ },
+ {
+ "x": 20.88,
+ "y": 13.168000000000001
+ },
+ {
+ "x": 14.52,
+ "y": 12.272000000000002
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 11.184
+ },
+ {
+ "x": 0.0,
+ "y": 10.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 8.815999999999999
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 7.728000000000001
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 6.831999999999999
+ },
+ {
+ "x": -26.16,
+ "y": 6.224
+ },
+ {
+ "x": -30.0,
+ "y": 6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 14.0
+ },
+ {
+ "x": 26.16,
+ "y": 13.888
+ },
+ {
+ "x": 20.88,
+ "y": 13.584000000000001
+ },
+ {
+ "x": 14.52,
+ "y": 13.136000000000001
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 12.592
+ },
+ {
+ "x": 0.0,
+ "y": 12.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 11.408
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 10.864
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 10.415999999999999
+ },
+ {
+ "x": -26.16,
+ "y": 10.111999999999998
+ },
+ {
+ "x": -30.0,
+ "y": 10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 14.0
+ },
+ {
+ "x": 26.16,
+ "y": 14.0
+ },
+ {
+ "x": 20.88,
+ "y": 14.0
+ },
+ {
+ "x": 14.52,
+ "y": 14.000000000000002
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 14.0
+ },
+ {
+ "x": 0.0,
+ "y": 14.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 14.0
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 14.0
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 14.0
+ },
+ {
+ "x": -26.16,
+ "y": 14.0
+ },
+ {
+ "x": -30.0,
+ "y": 14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 14.0
+ },
+ {
+ "x": 26.16,
+ "y": 14.112
+ },
+ {
+ "x": 20.88,
+ "y": 14.416
+ },
+ {
+ "x": 14.52,
+ "y": 14.864
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 15.408000000000001
+ },
+ {
+ "x": 0.0,
+ "y": 16.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 16.592
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 17.136
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 17.584000000000003
+ },
+ {
+ "x": -26.16,
+ "y": 17.887999999999998
+ },
+ {
+ "x": -30.0,
+ "y": 18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 14.0
+ },
+ {
+ "x": 26.16,
+ "y": 14.224
+ },
+ {
+ "x": 20.88,
+ "y": 14.832
+ },
+ {
+ "x": 14.52,
+ "y": 15.728000000000002
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 16.816000000000003
+ },
+ {
+ "x": 0.0,
+ "y": 18.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 19.184
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 20.272
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 21.168000000000003
+ },
+ {
+ "x": -26.16,
+ "y": 21.776
+ },
+ {
+ "x": -30.0,
+ "y": 22.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 18.0
+ },
+ {
+ "x": 26.16,
+ "y": 17.552
+ },
+ {
+ "x": 20.88,
+ "y": 16.336
+ },
+ {
+ "x": 14.52,
+ "y": 14.544
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 12.367999999999999
+ },
+ {
+ "x": 0.0,
+ "y": 10.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 7.631999999999998
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 5.456000000000001
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 3.663999999999998
+ },
+ {
+ "x": -26.16,
+ "y": 2.4480000000000004
+ },
+ {
+ "x": -30.0,
+ "y": 2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 18.0
+ },
+ {
+ "x": 26.16,
+ "y": 17.663999999999998
+ },
+ {
+ "x": 20.88,
+ "y": 16.752
+ },
+ {
+ "x": 14.52,
+ "y": 15.408000000000001
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 13.775999999999998
+ },
+ {
+ "x": 0.0,
+ "y": 12.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 10.223999999999998
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 8.592000000000002
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 7.247999999999999
+ },
+ {
+ "x": -26.16,
+ "y": 6.336
+ },
+ {
+ "x": -30.0,
+ "y": 6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 18.0
+ },
+ {
+ "x": 26.16,
+ "y": 17.776
+ },
+ {
+ "x": 20.88,
+ "y": 17.168
+ },
+ {
+ "x": 14.52,
+ "y": 16.272
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 15.184
+ },
+ {
+ "x": 0.0,
+ "y": 14.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 12.815999999999999
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 11.728000000000002
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 10.831999999999999
+ },
+ {
+ "x": -26.16,
+ "y": 10.224
+ },
+ {
+ "x": -30.0,
+ "y": 10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 18.0
+ },
+ {
+ "x": 26.16,
+ "y": 17.887999999999998
+ },
+ {
+ "x": 20.88,
+ "y": 17.584
+ },
+ {
+ "x": 14.52,
+ "y": 17.136
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 16.592
+ },
+ {
+ "x": 0.0,
+ "y": 16.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 15.408000000000001
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 14.864
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 14.416
+ },
+ {
+ "x": -26.16,
+ "y": 14.112000000000002
+ },
+ {
+ "x": -30.0,
+ "y": 14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 18.0
+ },
+ {
+ "x": 26.16,
+ "y": 18.0
+ },
+ {
+ "x": 20.88,
+ "y": 18.0
+ },
+ {
+ "x": 14.52,
+ "y": 18.0
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 18.0
+ },
+ {
+ "x": 0.0,
+ "y": 18.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 18.0
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 18.0
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 18.0
+ },
+ {
+ "x": -26.16,
+ "y": 18.0
+ },
+ {
+ "x": -30.0,
+ "y": 18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 18.0
+ },
+ {
+ "x": 26.16,
+ "y": 18.112
+ },
+ {
+ "x": 20.88,
+ "y": 18.416
+ },
+ {
+ "x": 14.52,
+ "y": 18.864
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 19.408
+ },
+ {
+ "x": 0.0,
+ "y": 20.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 20.592000000000002
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 21.136
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 21.584
+ },
+ {
+ "x": -26.16,
+ "y": 21.888
+ },
+ {
+ "x": -30.0,
+ "y": 22.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_left",
+ "startRoad": "road_2_1_2",
+ "endRoad": "road_1_1_3",
+ "direction": 2,
+ "laneLinks": [
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 2.0
+ },
+ {
+ "x": 26.674,
+ "y": 1.3739999999999999
+ },
+ {
+ "x": 22.832,
+ "y": -0.3680000000000003
+ },
+ {
+ "x": 18.678,
+ "y": -3.0220000000000007
+ },
+ {
+ "x": 14.415999999999999,
+ "y": -6.384000000000002
+ },
+ {
+ "x": 10.25,
+ "y": -10.25
+ },
+ {
+ "x": 6.383999999999996,
+ "y": -14.416000000000004
+ },
+ {
+ "x": 3.022000000000004,
+ "y": -18.677999999999997
+ },
+ {
+ "x": 0.3679999999999981,
+ "y": -22.832000000000004
+ },
+ {
+ "x": -1.3739999999999994,
+ "y": -26.674
+ },
+ {
+ "x": -2.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 2.0
+ },
+ {
+ "x": 26.562,
+ "y": 1.3739999999999999
+ },
+ {
+ "x": 22.416,
+ "y": -0.3680000000000003
+ },
+ {
+ "x": 17.814,
+ "y": -3.0220000000000007
+ },
+ {
+ "x": 13.008,
+ "y": -6.384000000000002
+ },
+ {
+ "x": 8.25,
+ "y": -10.25
+ },
+ {
+ "x": 3.7919999999999954,
+ "y": -14.416000000000004
+ },
+ {
+ "x": -0.11399999999999633,
+ "y": -18.677999999999997
+ },
+ {
+ "x": -3.216000000000003,
+ "y": -22.832000000000004
+ },
+ {
+ "x": -5.262,
+ "y": -26.674
+ },
+ {
+ "x": -6.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 2.0
+ },
+ {
+ "x": 26.45,
+ "y": 1.3739999999999999
+ },
+ {
+ "x": 22.0,
+ "y": -0.3680000000000003
+ },
+ {
+ "x": 16.95,
+ "y": -3.0220000000000007
+ },
+ {
+ "x": 11.599999999999998,
+ "y": -6.384000000000002
+ },
+ {
+ "x": 6.25,
+ "y": -10.25
+ },
+ {
+ "x": 1.1999999999999948,
+ "y": -14.416000000000004
+ },
+ {
+ "x": -3.2499999999999956,
+ "y": -18.677999999999997
+ },
+ {
+ "x": -6.8000000000000025,
+ "y": -22.832000000000004
+ },
+ {
+ "x": -9.149999999999999,
+ "y": -26.674
+ },
+ {
+ "x": -10.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 2.0
+ },
+ {
+ "x": 26.338,
+ "y": 1.3739999999999999
+ },
+ {
+ "x": 21.584,
+ "y": -0.3680000000000003
+ },
+ {
+ "x": 16.086,
+ "y": -3.0220000000000007
+ },
+ {
+ "x": 10.191999999999998,
+ "y": -6.384000000000002
+ },
+ {
+ "x": 4.25,
+ "y": -10.25
+ },
+ {
+ "x": -1.3920000000000066,
+ "y": -14.416000000000004
+ },
+ {
+ "x": -6.385999999999996,
+ "y": -18.677999999999997
+ },
+ {
+ "x": -10.384000000000004,
+ "y": -22.832000000000004
+ },
+ {
+ "x": -13.038,
+ "y": -26.674
+ },
+ {
+ "x": -14.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 6.0
+ },
+ {
+ "x": 26.674,
+ "y": 5.2620000000000005
+ },
+ {
+ "x": 22.832,
+ "y": 3.216
+ },
+ {
+ "x": 18.678,
+ "y": 0.11400000000000032
+ },
+ {
+ "x": 14.415999999999999,
+ "y": -3.792000000000002
+ },
+ {
+ "x": 10.25,
+ "y": -8.25
+ },
+ {
+ "x": 6.383999999999996,
+ "y": -13.008000000000006
+ },
+ {
+ "x": 3.022000000000004,
+ "y": -17.813999999999997
+ },
+ {
+ "x": 0.3679999999999981,
+ "y": -22.416000000000004
+ },
+ {
+ "x": -1.3739999999999994,
+ "y": -26.562
+ },
+ {
+ "x": -2.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 6.0
+ },
+ {
+ "x": 26.562,
+ "y": 5.2620000000000005
+ },
+ {
+ "x": 22.416,
+ "y": 3.216
+ },
+ {
+ "x": 17.814,
+ "y": 0.11400000000000032
+ },
+ {
+ "x": 13.008,
+ "y": -3.792000000000002
+ },
+ {
+ "x": 8.25,
+ "y": -8.25
+ },
+ {
+ "x": 3.7919999999999954,
+ "y": -13.008000000000006
+ },
+ {
+ "x": -0.11399999999999633,
+ "y": -17.813999999999997
+ },
+ {
+ "x": -3.216000000000003,
+ "y": -22.416000000000004
+ },
+ {
+ "x": -5.262,
+ "y": -26.562
+ },
+ {
+ "x": -6.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 6.0
+ },
+ {
+ "x": 26.45,
+ "y": 5.2620000000000005
+ },
+ {
+ "x": 22.0,
+ "y": 3.216
+ },
+ {
+ "x": 16.95,
+ "y": 0.11400000000000032
+ },
+ {
+ "x": 11.599999999999998,
+ "y": -3.792000000000002
+ },
+ {
+ "x": 6.25,
+ "y": -8.25
+ },
+ {
+ "x": 1.1999999999999948,
+ "y": -13.008000000000006
+ },
+ {
+ "x": -3.2499999999999956,
+ "y": -17.813999999999997
+ },
+ {
+ "x": -6.8000000000000025,
+ "y": -22.416000000000004
+ },
+ {
+ "x": -9.149999999999999,
+ "y": -26.562
+ },
+ {
+ "x": -10.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 6.0
+ },
+ {
+ "x": 26.338,
+ "y": 5.2620000000000005
+ },
+ {
+ "x": 21.584,
+ "y": 3.216
+ },
+ {
+ "x": 16.086,
+ "y": 0.11400000000000032
+ },
+ {
+ "x": 10.191999999999998,
+ "y": -3.792000000000002
+ },
+ {
+ "x": 4.25,
+ "y": -8.25
+ },
+ {
+ "x": -1.3920000000000066,
+ "y": -13.008000000000006
+ },
+ {
+ "x": -6.385999999999996,
+ "y": -17.813999999999997
+ },
+ {
+ "x": -10.384000000000004,
+ "y": -22.416000000000004
+ },
+ {
+ "x": -13.038,
+ "y": -26.562
+ },
+ {
+ "x": -14.0,
+ "y": -30.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_left",
+ "startRoad": "road_1_2_3",
+ "endRoad": "road_1_1_0",
+ "direction": 3,
+ "laneLinks": [
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": -2.0,
+ "y": 30.0
+ },
+ {
+ "x": -1.3739999999999999,
+ "y": 26.674
+ },
+ {
+ "x": 0.3680000000000003,
+ "y": 22.832
+ },
+ {
+ "x": 3.0220000000000007,
+ "y": 18.678
+ },
+ {
+ "x": 6.384000000000002,
+ "y": 14.415999999999999
+ },
+ {
+ "x": 10.25,
+ "y": 10.25
+ },
+ {
+ "x": 14.416000000000004,
+ "y": 6.383999999999996
+ },
+ {
+ "x": 18.677999999999997,
+ "y": 3.022000000000004
+ },
+ {
+ "x": 22.832000000000004,
+ "y": 0.3679999999999981
+ },
+ {
+ "x": 26.674,
+ "y": -1.3739999999999994
+ },
+ {
+ "x": 30.0,
+ "y": -2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": -2.0,
+ "y": 30.0
+ },
+ {
+ "x": -1.3739999999999999,
+ "y": 26.562
+ },
+ {
+ "x": 0.3680000000000003,
+ "y": 22.416
+ },
+ {
+ "x": 3.0220000000000007,
+ "y": 17.814
+ },
+ {
+ "x": 6.384000000000002,
+ "y": 13.008
+ },
+ {
+ "x": 10.25,
+ "y": 8.25
+ },
+ {
+ "x": 14.416000000000004,
+ "y": 3.7919999999999954
+ },
+ {
+ "x": 18.677999999999997,
+ "y": -0.11399999999999633
+ },
+ {
+ "x": 22.832000000000004,
+ "y": -3.216000000000003
+ },
+ {
+ "x": 26.674,
+ "y": -5.262
+ },
+ {
+ "x": 30.0,
+ "y": -6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": -2.0,
+ "y": 30.0
+ },
+ {
+ "x": -1.3739999999999999,
+ "y": 26.45
+ },
+ {
+ "x": 0.3680000000000003,
+ "y": 22.0
+ },
+ {
+ "x": 3.0220000000000007,
+ "y": 16.95
+ },
+ {
+ "x": 6.384000000000002,
+ "y": 11.599999999999998
+ },
+ {
+ "x": 10.25,
+ "y": 6.25
+ },
+ {
+ "x": 14.416000000000004,
+ "y": 1.1999999999999948
+ },
+ {
+ "x": 18.677999999999997,
+ "y": -3.2499999999999956
+ },
+ {
+ "x": 22.832000000000004,
+ "y": -6.8000000000000025
+ },
+ {
+ "x": 26.674,
+ "y": -9.149999999999999
+ },
+ {
+ "x": 30.0,
+ "y": -10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": -2.0,
+ "y": 30.0
+ },
+ {
+ "x": -1.3739999999999999,
+ "y": 26.338
+ },
+ {
+ "x": 0.3680000000000003,
+ "y": 21.584
+ },
+ {
+ "x": 3.0220000000000007,
+ "y": 16.086
+ },
+ {
+ "x": 6.384000000000002,
+ "y": 10.191999999999998
+ },
+ {
+ "x": 10.25,
+ "y": 4.25
+ },
+ {
+ "x": 14.416000000000004,
+ "y": -1.3920000000000066
+ },
+ {
+ "x": 18.677999999999997,
+ "y": -6.385999999999996
+ },
+ {
+ "x": 22.832000000000004,
+ "y": -10.384000000000004
+ },
+ {
+ "x": 26.674,
+ "y": -13.038
+ },
+ {
+ "x": 30.0,
+ "y": -14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": -2.0,
+ "y": 30.0
+ },
+ {
+ "x": -1.3739999999999999,
+ "y": 26.226
+ },
+ {
+ "x": 0.3680000000000003,
+ "y": 21.168
+ },
+ {
+ "x": 3.0220000000000007,
+ "y": 15.222
+ },
+ {
+ "x": 6.384000000000002,
+ "y": 8.783999999999997
+ },
+ {
+ "x": 10.25,
+ "y": 2.25
+ },
+ {
+ "x": 14.416000000000004,
+ "y": -3.9840000000000053
+ },
+ {
+ "x": 18.677999999999997,
+ "y": -9.521999999999995
+ },
+ {
+ "x": 22.832000000000004,
+ "y": -13.968000000000005
+ },
+ {
+ "x": 26.674,
+ "y": -16.926
+ },
+ {
+ "x": 30.0,
+ "y": -18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": -2.0,
+ "y": 30.0
+ },
+ {
+ "x": -1.3739999999999999,
+ "y": 26.114
+ },
+ {
+ "x": 0.3680000000000003,
+ "y": 20.752
+ },
+ {
+ "x": 3.0220000000000007,
+ "y": 14.357999999999999
+ },
+ {
+ "x": 6.384000000000002,
+ "y": 7.375999999999998
+ },
+ {
+ "x": 10.25,
+ "y": 0.25
+ },
+ {
+ "x": 14.416000000000004,
+ "y": -6.576000000000008
+ },
+ {
+ "x": 18.677999999999997,
+ "y": -12.657999999999994
+ },
+ {
+ "x": 22.832000000000004,
+ "y": -17.552000000000007
+ },
+ {
+ "x": 26.674,
+ "y": -20.814
+ },
+ {
+ "x": 30.0,
+ "y": -22.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_right",
+ "startRoad": "road_1_2_3",
+ "endRoad": "road_1_1_2",
+ "direction": 3,
+ "laneLinks": [
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": -14.0,
+ "y": 30.0
+ },
+ {
+ "x": -14.178,
+ "y": 26.786
+ },
+ {
+ "x": -14.704,
+ "y": 23.247999999999998
+ },
+ {
+ "x": -15.566000000000003,
+ "y": 19.541999999999998
+ },
+ {
+ "x": -16.752000000000002,
+ "y": 15.824
+ },
+ {
+ "x": -18.25,
+ "y": 12.25
+ },
+ {
+ "x": -20.048000000000002,
+ "y": 8.975999999999996
+ },
+ {
+ "x": -22.133999999999997,
+ "y": 6.158000000000003
+ },
+ {
+ "x": -24.496000000000002,
+ "y": 3.9519999999999986
+ },
+ {
+ "x": -27.122,
+ "y": 2.5140000000000002
+ },
+ {
+ "x": -30.0,
+ "y": 2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": -14.0,
+ "y": 30.0
+ },
+ {
+ "x": -14.178,
+ "y": 26.898
+ },
+ {
+ "x": -14.704,
+ "y": 23.663999999999998
+ },
+ {
+ "x": -15.566000000000003,
+ "y": 20.406
+ },
+ {
+ "x": -16.752000000000002,
+ "y": 17.232
+ },
+ {
+ "x": -18.25,
+ "y": 14.25
+ },
+ {
+ "x": -20.048000000000002,
+ "y": 11.567999999999998
+ },
+ {
+ "x": -22.133999999999997,
+ "y": 9.294000000000004
+ },
+ {
+ "x": -24.496000000000002,
+ "y": 7.536
+ },
+ {
+ "x": -27.122,
+ "y": 6.402
+ },
+ {
+ "x": -30.0,
+ "y": 6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": -14.0,
+ "y": 30.0
+ },
+ {
+ "x": -14.178,
+ "y": 27.01
+ },
+ {
+ "x": -14.704,
+ "y": 24.08
+ },
+ {
+ "x": -15.566000000000003,
+ "y": 21.27
+ },
+ {
+ "x": -16.752000000000002,
+ "y": 18.64
+ },
+ {
+ "x": -18.25,
+ "y": 16.25
+ },
+ {
+ "x": -20.048000000000002,
+ "y": 14.159999999999997
+ },
+ {
+ "x": -22.133999999999997,
+ "y": 12.430000000000003
+ },
+ {
+ "x": -24.496000000000002,
+ "y": 11.12
+ },
+ {
+ "x": -27.122,
+ "y": 10.29
+ },
+ {
+ "x": -30.0,
+ "y": 10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": -14.0,
+ "y": 30.0
+ },
+ {
+ "x": -14.178,
+ "y": 27.122
+ },
+ {
+ "x": -14.704,
+ "y": 24.496
+ },
+ {
+ "x": -15.566000000000003,
+ "y": 22.134
+ },
+ {
+ "x": -16.752000000000002,
+ "y": 20.048000000000002
+ },
+ {
+ "x": -18.25,
+ "y": 18.25
+ },
+ {
+ "x": -20.048000000000002,
+ "y": 16.752
+ },
+ {
+ "x": -22.133999999999997,
+ "y": 15.566000000000003
+ },
+ {
+ "x": -24.496000000000002,
+ "y": 14.704
+ },
+ {
+ "x": -27.122,
+ "y": 14.178
+ },
+ {
+ "x": -30.0,
+ "y": 14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": -14.0,
+ "y": 30.0
+ },
+ {
+ "x": -14.178,
+ "y": 27.234
+ },
+ {
+ "x": -14.704,
+ "y": 24.912
+ },
+ {
+ "x": -15.566000000000003,
+ "y": 22.998
+ },
+ {
+ "x": -16.752000000000002,
+ "y": 21.456000000000003
+ },
+ {
+ "x": -18.25,
+ "y": 20.25
+ },
+ {
+ "x": -20.048000000000002,
+ "y": 19.343999999999998
+ },
+ {
+ "x": -22.133999999999997,
+ "y": 18.702
+ },
+ {
+ "x": -24.496000000000002,
+ "y": 18.288000000000004
+ },
+ {
+ "x": -27.122,
+ "y": 18.066
+ },
+ {
+ "x": -30.0,
+ "y": 18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": -14.0,
+ "y": 30.0
+ },
+ {
+ "x": -14.178,
+ "y": 27.346
+ },
+ {
+ "x": -14.704,
+ "y": 25.328
+ },
+ {
+ "x": -15.566000000000003,
+ "y": 23.862000000000002
+ },
+ {
+ "x": -16.752000000000002,
+ "y": 22.864
+ },
+ {
+ "x": -18.25,
+ "y": 22.25
+ },
+ {
+ "x": -20.048000000000002,
+ "y": 21.936
+ },
+ {
+ "x": -22.133999999999997,
+ "y": 21.838
+ },
+ {
+ "x": -24.496000000000002,
+ "y": 21.872
+ },
+ {
+ "x": -27.122,
+ "y": 21.954
+ },
+ {
+ "x": -30.0,
+ "y": 22.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "go_straight",
+ "startRoad": "road_1_2_3",
+ "endRoad": "road_1_1_3",
+ "direction": 3,
+ "laneLinks": [
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": -6.0,
+ "y": 30.0
+ },
+ {
+ "x": -5.888,
+ "y": 26.16
+ },
+ {
+ "x": -5.5840000000000005,
+ "y": 20.88
+ },
+ {
+ "x": -5.136000000000001,
+ "y": 14.52
+ },
+ {
+ "x": -4.592,
+ "y": 7.439999999999998
+ },
+ {
+ "x": -4.0,
+ "y": 0.0
+ },
+ {
+ "x": -3.4079999999999995,
+ "y": -7.440000000000009
+ },
+ {
+ "x": -2.8640000000000003,
+ "y": -14.519999999999992
+ },
+ {
+ "x": -2.4159999999999995,
+ "y": -20.880000000000006
+ },
+ {
+ "x": -2.112,
+ "y": -26.16
+ },
+ {
+ "x": -2.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": -6.0,
+ "y": 30.0
+ },
+ {
+ "x": -6.0,
+ "y": 26.16
+ },
+ {
+ "x": -6.0,
+ "y": 20.88
+ },
+ {
+ "x": -6.000000000000001,
+ "y": 14.52
+ },
+ {
+ "x": -6.0,
+ "y": 7.439999999999998
+ },
+ {
+ "x": -6.0,
+ "y": 0.0
+ },
+ {
+ "x": -6.0,
+ "y": -7.440000000000009
+ },
+ {
+ "x": -6.0,
+ "y": -14.519999999999992
+ },
+ {
+ "x": -6.0,
+ "y": -20.880000000000006
+ },
+ {
+ "x": -6.0,
+ "y": -26.16
+ },
+ {
+ "x": -6.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": -6.0,
+ "y": 30.0
+ },
+ {
+ "x": -6.112,
+ "y": 26.16
+ },
+ {
+ "x": -6.416,
+ "y": 20.88
+ },
+ {
+ "x": -6.864000000000001,
+ "y": 14.52
+ },
+ {
+ "x": -7.408,
+ "y": 7.439999999999998
+ },
+ {
+ "x": -8.0,
+ "y": 0.0
+ },
+ {
+ "x": -8.592,
+ "y": -7.440000000000009
+ },
+ {
+ "x": -9.136,
+ "y": -14.519999999999992
+ },
+ {
+ "x": -9.584,
+ "y": -20.880000000000006
+ },
+ {
+ "x": -9.887999999999998,
+ "y": -26.16
+ },
+ {
+ "x": -10.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": -6.0,
+ "y": 30.0
+ },
+ {
+ "x": -6.224,
+ "y": 26.16
+ },
+ {
+ "x": -6.832000000000001,
+ "y": 20.88
+ },
+ {
+ "x": -7.7280000000000015,
+ "y": 14.52
+ },
+ {
+ "x": -8.816,
+ "y": 7.439999999999998
+ },
+ {
+ "x": -10.0,
+ "y": 0.0
+ },
+ {
+ "x": -11.184000000000001,
+ "y": -7.440000000000009
+ },
+ {
+ "x": -12.272,
+ "y": -14.519999999999992
+ },
+ {
+ "x": -13.168000000000001,
+ "y": -20.880000000000006
+ },
+ {
+ "x": -13.776,
+ "y": -26.16
+ },
+ {
+ "x": -14.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": -10.0,
+ "y": 30.0
+ },
+ {
+ "x": -9.775999999999998,
+ "y": 26.16
+ },
+ {
+ "x": -9.168000000000001,
+ "y": 20.88
+ },
+ {
+ "x": -8.272,
+ "y": 14.52
+ },
+ {
+ "x": -7.183999999999999,
+ "y": 7.439999999999998
+ },
+ {
+ "x": -6.0,
+ "y": 0.0
+ },
+ {
+ "x": -4.815999999999999,
+ "y": -7.440000000000009
+ },
+ {
+ "x": -3.7280000000000006,
+ "y": -14.519999999999992
+ },
+ {
+ "x": -2.831999999999999,
+ "y": -20.880000000000006
+ },
+ {
+ "x": -2.224,
+ "y": -26.16
+ },
+ {
+ "x": -2.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": -10.0,
+ "y": 30.0
+ },
+ {
+ "x": -9.887999999999998,
+ "y": 26.16
+ },
+ {
+ "x": -9.584000000000001,
+ "y": 20.88
+ },
+ {
+ "x": -9.136,
+ "y": 14.52
+ },
+ {
+ "x": -8.591999999999999,
+ "y": 7.439999999999998
+ },
+ {
+ "x": -8.0,
+ "y": 0.0
+ },
+ {
+ "x": -7.4079999999999995,
+ "y": -7.440000000000009
+ },
+ {
+ "x": -6.864000000000001,
+ "y": -14.519999999999992
+ },
+ {
+ "x": -6.416,
+ "y": -20.880000000000006
+ },
+ {
+ "x": -6.112,
+ "y": -26.16
+ },
+ {
+ "x": -6.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": -10.0,
+ "y": 30.0
+ },
+ {
+ "x": -9.999999999999998,
+ "y": 26.16
+ },
+ {
+ "x": -10.000000000000002,
+ "y": 20.88
+ },
+ {
+ "x": -10.0,
+ "y": 14.52
+ },
+ {
+ "x": -10.0,
+ "y": 7.439999999999998
+ },
+ {
+ "x": -10.0,
+ "y": 0.0
+ },
+ {
+ "x": -10.0,
+ "y": -7.440000000000009
+ },
+ {
+ "x": -10.0,
+ "y": -14.519999999999992
+ },
+ {
+ "x": -10.0,
+ "y": -20.880000000000006
+ },
+ {
+ "x": -10.0,
+ "y": -26.16
+ },
+ {
+ "x": -10.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": -10.0,
+ "y": 30.0
+ },
+ {
+ "x": -10.111999999999998,
+ "y": 26.16
+ },
+ {
+ "x": -10.416,
+ "y": 20.88
+ },
+ {
+ "x": -10.864,
+ "y": 14.52
+ },
+ {
+ "x": -11.408,
+ "y": 7.439999999999998
+ },
+ {
+ "x": -12.0,
+ "y": 0.0
+ },
+ {
+ "x": -12.592000000000002,
+ "y": -7.440000000000009
+ },
+ {
+ "x": -13.136,
+ "y": -14.519999999999992
+ },
+ {
+ "x": -13.584000000000001,
+ "y": -20.880000000000006
+ },
+ {
+ "x": -13.888000000000002,
+ "y": -26.16
+ },
+ {
+ "x": -14.0,
+ "y": -30.0
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "trafficLight": {
+ "roadLinkIndices": [
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "lightphases": [
+ {
+ "time": 30,
+ "availableRoadLinks": [
+ 0,
+ 2,
+ 3,
+ 6,
+ 7,
+ 10
+ ]
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": [
+ 10,
+ 2,
+ 3,
+ 6
+ ]
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": [
+ 1,
+ 2,
+ 3,
+ 6,
+ 8,
+ 10
+ ]
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": [
+ 10,
+ 2,
+ 3,
+ 6
+ ]
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": [
+ 2,
+ 3,
+ 4,
+ 6,
+ 10,
+ 11
+ ]
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": [
+ 10,
+ 2,
+ 3,
+ 6
+ ]
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": [
+ 2,
+ 3,
+ 5,
+ 6,
+ 9,
+ 10
+ ]
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": [
+ 10,
+ 2,
+ 3,
+ 6
+ ]
+ }
+ ]
+ },
+ "virtual": false
+ },
+ {
+ "id": "intersection_2_1",
+ "point": {
+ "x": 300,
+ "y": 0
+ },
+ "width": 30,
+ "roads": [
+ "road_1_1_0",
+ "road_2_0_1",
+ "road_3_1_2",
+ "road_2_2_3",
+ "road_2_1_0",
+ "road_2_1_1",
+ "road_2_1_2",
+ "road_2_1_3"
+ ],
+ "roadLinks": [
+ {
+ "type": "go_straight",
+ "startRoad": "road_1_1_0",
+ "endRoad": "road_2_1_0",
+ "direction": 0,
+ "laneLinks": [
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -10.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": -9.775999999999998
+ },
+ {
+ "x": 279.12000000000006,
+ "y": -9.168000000000001
+ },
+ {
+ "x": 285.48,
+ "y": -8.272
+ },
+ {
+ "x": 292.56,
+ "y": -7.183999999999999
+ },
+ {
+ "x": 300.0,
+ "y": -6.0
+ },
+ {
+ "x": 307.44,
+ "y": -4.815999999999999
+ },
+ {
+ "x": 314.52,
+ "y": -3.7280000000000006
+ },
+ {
+ "x": 320.88000000000005,
+ "y": -2.831999999999999
+ },
+ {
+ "x": 326.15999999999997,
+ "y": -2.224
+ },
+ {
+ "x": 330.0,
+ "y": -2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -10.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": -9.887999999999998
+ },
+ {
+ "x": 279.12000000000006,
+ "y": -9.584000000000001
+ },
+ {
+ "x": 285.48,
+ "y": -9.136
+ },
+ {
+ "x": 292.56,
+ "y": -8.591999999999999
+ },
+ {
+ "x": 300.0,
+ "y": -8.0
+ },
+ {
+ "x": 307.44,
+ "y": -7.4079999999999995
+ },
+ {
+ "x": 314.52,
+ "y": -6.864000000000001
+ },
+ {
+ "x": 320.88000000000005,
+ "y": -6.416
+ },
+ {
+ "x": 326.15999999999997,
+ "y": -6.112
+ },
+ {
+ "x": 330.0,
+ "y": -6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -10.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": -9.999999999999998
+ },
+ {
+ "x": 279.12000000000006,
+ "y": -10.000000000000002
+ },
+ {
+ "x": 285.48,
+ "y": -10.0
+ },
+ {
+ "x": 292.56,
+ "y": -10.0
+ },
+ {
+ "x": 300.0,
+ "y": -10.0
+ },
+ {
+ "x": 307.44,
+ "y": -10.0
+ },
+ {
+ "x": 314.52,
+ "y": -10.0
+ },
+ {
+ "x": 320.88000000000005,
+ "y": -10.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": -10.0
+ },
+ {
+ "x": 330.0,
+ "y": -10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -10.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": -10.111999999999998
+ },
+ {
+ "x": 279.12000000000006,
+ "y": -10.416
+ },
+ {
+ "x": 285.48,
+ "y": -10.864
+ },
+ {
+ "x": 292.56,
+ "y": -11.408
+ },
+ {
+ "x": 300.0,
+ "y": -12.0
+ },
+ {
+ "x": 307.44,
+ "y": -12.592000000000002
+ },
+ {
+ "x": 314.52,
+ "y": -13.136
+ },
+ {
+ "x": 320.88000000000005,
+ "y": -13.584000000000001
+ },
+ {
+ "x": 326.15999999999997,
+ "y": -13.888000000000002
+ },
+ {
+ "x": 330.0,
+ "y": -14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -10.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": -10.223999999999998
+ },
+ {
+ "x": 279.12000000000006,
+ "y": -10.832
+ },
+ {
+ "x": 285.48,
+ "y": -11.728
+ },
+ {
+ "x": 292.56,
+ "y": -12.816
+ },
+ {
+ "x": 300.0,
+ "y": -14.0
+ },
+ {
+ "x": 307.44,
+ "y": -15.184000000000001
+ },
+ {
+ "x": 314.52,
+ "y": -16.272
+ },
+ {
+ "x": 320.88000000000005,
+ "y": -17.168000000000003
+ },
+ {
+ "x": 326.15999999999997,
+ "y": -17.776
+ },
+ {
+ "x": 330.0,
+ "y": -18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -10.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": -10.335999999999999
+ },
+ {
+ "x": 279.12000000000006,
+ "y": -11.248000000000001
+ },
+ {
+ "x": 285.48,
+ "y": -12.592
+ },
+ {
+ "x": 292.56,
+ "y": -14.224
+ },
+ {
+ "x": 300.0,
+ "y": -16.0
+ },
+ {
+ "x": 307.44,
+ "y": -17.776000000000003
+ },
+ {
+ "x": 314.52,
+ "y": -19.407999999999998
+ },
+ {
+ "x": 320.88000000000005,
+ "y": -20.752000000000002
+ },
+ {
+ "x": 326.15999999999997,
+ "y": -21.664
+ },
+ {
+ "x": 330.0,
+ "y": -22.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -14.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": -13.664
+ },
+ {
+ "x": 279.12000000000006,
+ "y": -12.752
+ },
+ {
+ "x": 285.48,
+ "y": -11.408000000000001
+ },
+ {
+ "x": 292.56,
+ "y": -9.776
+ },
+ {
+ "x": 300.0,
+ "y": -8.0
+ },
+ {
+ "x": 307.44,
+ "y": -6.223999999999998
+ },
+ {
+ "x": 314.52,
+ "y": -4.5920000000000005
+ },
+ {
+ "x": 320.88000000000005,
+ "y": -3.2479999999999984
+ },
+ {
+ "x": 326.15999999999997,
+ "y": -2.3360000000000003
+ },
+ {
+ "x": 330.0,
+ "y": -2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -14.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": -13.776
+ },
+ {
+ "x": 279.12000000000006,
+ "y": -13.168000000000001
+ },
+ {
+ "x": 285.48,
+ "y": -12.272000000000002
+ },
+ {
+ "x": 292.56,
+ "y": -11.184
+ },
+ {
+ "x": 300.0,
+ "y": -10.0
+ },
+ {
+ "x": 307.44,
+ "y": -8.815999999999999
+ },
+ {
+ "x": 314.52,
+ "y": -7.728000000000001
+ },
+ {
+ "x": 320.88000000000005,
+ "y": -6.831999999999999
+ },
+ {
+ "x": 326.15999999999997,
+ "y": -6.224
+ },
+ {
+ "x": 330.0,
+ "y": -6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -14.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": -13.888
+ },
+ {
+ "x": 279.12000000000006,
+ "y": -13.584000000000001
+ },
+ {
+ "x": 285.48,
+ "y": -13.136000000000001
+ },
+ {
+ "x": 292.56,
+ "y": -12.592
+ },
+ {
+ "x": 300.0,
+ "y": -12.0
+ },
+ {
+ "x": 307.44,
+ "y": -11.408
+ },
+ {
+ "x": 314.52,
+ "y": -10.864
+ },
+ {
+ "x": 320.88000000000005,
+ "y": -10.415999999999999
+ },
+ {
+ "x": 326.15999999999997,
+ "y": -10.111999999999998
+ },
+ {
+ "x": 330.0,
+ "y": -10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -14.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": -14.0
+ },
+ {
+ "x": 279.12000000000006,
+ "y": -14.0
+ },
+ {
+ "x": 285.48,
+ "y": -14.000000000000002
+ },
+ {
+ "x": 292.56,
+ "y": -14.0
+ },
+ {
+ "x": 300.0,
+ "y": -14.0
+ },
+ {
+ "x": 307.44,
+ "y": -14.0
+ },
+ {
+ "x": 314.52,
+ "y": -14.0
+ },
+ {
+ "x": 320.88000000000005,
+ "y": -14.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": -14.0
+ },
+ {
+ "x": 330.0,
+ "y": -14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -14.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": -14.112
+ },
+ {
+ "x": 279.12000000000006,
+ "y": -14.416
+ },
+ {
+ "x": 285.48,
+ "y": -14.864
+ },
+ {
+ "x": 292.56,
+ "y": -15.408000000000001
+ },
+ {
+ "x": 300.0,
+ "y": -16.0
+ },
+ {
+ "x": 307.44,
+ "y": -16.592
+ },
+ {
+ "x": 314.52,
+ "y": -17.136
+ },
+ {
+ "x": 320.88000000000005,
+ "y": -17.584000000000003
+ },
+ {
+ "x": 326.15999999999997,
+ "y": -17.887999999999998
+ },
+ {
+ "x": 330.0,
+ "y": -18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -14.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": -14.224
+ },
+ {
+ "x": 279.12000000000006,
+ "y": -14.832
+ },
+ {
+ "x": 285.48,
+ "y": -15.728000000000002
+ },
+ {
+ "x": 292.56,
+ "y": -16.816000000000003
+ },
+ {
+ "x": 300.0,
+ "y": -18.0
+ },
+ {
+ "x": 307.44,
+ "y": -19.184
+ },
+ {
+ "x": 314.52,
+ "y": -20.272
+ },
+ {
+ "x": 320.88000000000005,
+ "y": -21.168000000000003
+ },
+ {
+ "x": 326.15999999999997,
+ "y": -21.776
+ },
+ {
+ "x": 330.0,
+ "y": -22.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -18.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": -17.552
+ },
+ {
+ "x": 279.12000000000006,
+ "y": -16.336
+ },
+ {
+ "x": 285.48,
+ "y": -14.544
+ },
+ {
+ "x": 292.56,
+ "y": -12.367999999999999
+ },
+ {
+ "x": 300.0,
+ "y": -10.0
+ },
+ {
+ "x": 307.44,
+ "y": -7.631999999999998
+ },
+ {
+ "x": 314.52,
+ "y": -5.456000000000001
+ },
+ {
+ "x": 320.88000000000005,
+ "y": -3.663999999999998
+ },
+ {
+ "x": 326.15999999999997,
+ "y": -2.4480000000000004
+ },
+ {
+ "x": 330.0,
+ "y": -2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -18.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": -17.663999999999998
+ },
+ {
+ "x": 279.12000000000006,
+ "y": -16.752
+ },
+ {
+ "x": 285.48,
+ "y": -15.408000000000001
+ },
+ {
+ "x": 292.56,
+ "y": -13.775999999999998
+ },
+ {
+ "x": 300.0,
+ "y": -12.0
+ },
+ {
+ "x": 307.44,
+ "y": -10.223999999999998
+ },
+ {
+ "x": 314.52,
+ "y": -8.592000000000002
+ },
+ {
+ "x": 320.88000000000005,
+ "y": -7.247999999999999
+ },
+ {
+ "x": 326.15999999999997,
+ "y": -6.336
+ },
+ {
+ "x": 330.0,
+ "y": -6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -18.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": -17.776
+ },
+ {
+ "x": 279.12000000000006,
+ "y": -17.168
+ },
+ {
+ "x": 285.48,
+ "y": -16.272
+ },
+ {
+ "x": 292.56,
+ "y": -15.184
+ },
+ {
+ "x": 300.0,
+ "y": -14.0
+ },
+ {
+ "x": 307.44,
+ "y": -12.815999999999999
+ },
+ {
+ "x": 314.52,
+ "y": -11.728000000000002
+ },
+ {
+ "x": 320.88000000000005,
+ "y": -10.831999999999999
+ },
+ {
+ "x": 326.15999999999997,
+ "y": -10.224
+ },
+ {
+ "x": 330.0,
+ "y": -10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -18.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": -17.887999999999998
+ },
+ {
+ "x": 279.12000000000006,
+ "y": -17.584
+ },
+ {
+ "x": 285.48,
+ "y": -17.136
+ },
+ {
+ "x": 292.56,
+ "y": -16.592
+ },
+ {
+ "x": 300.0,
+ "y": -16.0
+ },
+ {
+ "x": 307.44,
+ "y": -15.408000000000001
+ },
+ {
+ "x": 314.52,
+ "y": -14.864
+ },
+ {
+ "x": 320.88000000000005,
+ "y": -14.416
+ },
+ {
+ "x": 326.15999999999997,
+ "y": -14.112000000000002
+ },
+ {
+ "x": 330.0,
+ "y": -14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -18.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": -18.0
+ },
+ {
+ "x": 279.12000000000006,
+ "y": -18.0
+ },
+ {
+ "x": 285.48,
+ "y": -18.0
+ },
+ {
+ "x": 292.56,
+ "y": -18.0
+ },
+ {
+ "x": 300.0,
+ "y": -18.0
+ },
+ {
+ "x": 307.44,
+ "y": -18.0
+ },
+ {
+ "x": 314.52,
+ "y": -18.0
+ },
+ {
+ "x": 320.88000000000005,
+ "y": -18.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": -18.0
+ },
+ {
+ "x": 330.0,
+ "y": -18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -18.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": -18.112
+ },
+ {
+ "x": 279.12000000000006,
+ "y": -18.416
+ },
+ {
+ "x": 285.48,
+ "y": -18.864
+ },
+ {
+ "x": 292.56,
+ "y": -19.408
+ },
+ {
+ "x": 300.0,
+ "y": -20.0
+ },
+ {
+ "x": 307.44,
+ "y": -20.592000000000002
+ },
+ {
+ "x": 314.52,
+ "y": -21.136
+ },
+ {
+ "x": 320.88000000000005,
+ "y": -21.584
+ },
+ {
+ "x": 326.15999999999997,
+ "y": -21.888
+ },
+ {
+ "x": 330.0,
+ "y": -22.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_left",
+ "startRoad": "road_1_1_0",
+ "endRoad": "road_2_1_1",
+ "direction": 0,
+ "laneLinks": [
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -2.0
+ },
+ {
+ "x": 273.326,
+ "y": -1.3739999999999999
+ },
+ {
+ "x": 277.168,
+ "y": 0.3680000000000003
+ },
+ {
+ "x": 281.322,
+ "y": 3.0220000000000007
+ },
+ {
+ "x": 285.584,
+ "y": 6.384000000000002
+ },
+ {
+ "x": 289.75,
+ "y": 10.25
+ },
+ {
+ "x": 293.616,
+ "y": 14.416000000000004
+ },
+ {
+ "x": 296.978,
+ "y": 18.677999999999997
+ },
+ {
+ "x": 299.632,
+ "y": 22.832000000000004
+ },
+ {
+ "x": 301.37399999999997,
+ "y": 26.674
+ },
+ {
+ "x": 302.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -2.0
+ },
+ {
+ "x": 273.438,
+ "y": -1.3739999999999999
+ },
+ {
+ "x": 277.584,
+ "y": 0.3680000000000003
+ },
+ {
+ "x": 282.18600000000004,
+ "y": 3.0220000000000007
+ },
+ {
+ "x": 286.992,
+ "y": 6.384000000000002
+ },
+ {
+ "x": 291.75,
+ "y": 10.25
+ },
+ {
+ "x": 296.20799999999997,
+ "y": 14.416000000000004
+ },
+ {
+ "x": 300.114,
+ "y": 18.677999999999997
+ },
+ {
+ "x": 303.216,
+ "y": 22.832000000000004
+ },
+ {
+ "x": 305.262,
+ "y": 26.674
+ },
+ {
+ "x": 306.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -2.0
+ },
+ {
+ "x": 273.55,
+ "y": -1.3739999999999999
+ },
+ {
+ "x": 278.0,
+ "y": 0.3680000000000003
+ },
+ {
+ "x": 283.05,
+ "y": 3.0220000000000007
+ },
+ {
+ "x": 288.4,
+ "y": 6.384000000000002
+ },
+ {
+ "x": 293.75,
+ "y": 10.25
+ },
+ {
+ "x": 298.8,
+ "y": 14.416000000000004
+ },
+ {
+ "x": 303.25,
+ "y": 18.677999999999997
+ },
+ {
+ "x": 306.8,
+ "y": 22.832000000000004
+ },
+ {
+ "x": 309.15,
+ "y": 26.674
+ },
+ {
+ "x": 310.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -2.0
+ },
+ {
+ "x": 273.66200000000003,
+ "y": -1.3739999999999999
+ },
+ {
+ "x": 278.41600000000005,
+ "y": 0.3680000000000003
+ },
+ {
+ "x": 283.914,
+ "y": 3.0220000000000007
+ },
+ {
+ "x": 289.808,
+ "y": 6.384000000000002
+ },
+ {
+ "x": 295.75,
+ "y": 10.25
+ },
+ {
+ "x": 301.392,
+ "y": 14.416000000000004
+ },
+ {
+ "x": 306.386,
+ "y": 18.677999999999997
+ },
+ {
+ "x": 310.384,
+ "y": 22.832000000000004
+ },
+ {
+ "x": 313.03799999999995,
+ "y": 26.674
+ },
+ {
+ "x": 314.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -6.0
+ },
+ {
+ "x": 273.326,
+ "y": -5.2620000000000005
+ },
+ {
+ "x": 277.168,
+ "y": -3.216
+ },
+ {
+ "x": 281.322,
+ "y": -0.11400000000000032
+ },
+ {
+ "x": 285.584,
+ "y": 3.792000000000002
+ },
+ {
+ "x": 289.75,
+ "y": 8.25
+ },
+ {
+ "x": 293.616,
+ "y": 13.008000000000006
+ },
+ {
+ "x": 296.978,
+ "y": 17.813999999999997
+ },
+ {
+ "x": 299.632,
+ "y": 22.416000000000004
+ },
+ {
+ "x": 301.37399999999997,
+ "y": 26.562
+ },
+ {
+ "x": 302.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -6.0
+ },
+ {
+ "x": 273.438,
+ "y": -5.2620000000000005
+ },
+ {
+ "x": 277.584,
+ "y": -3.216
+ },
+ {
+ "x": 282.18600000000004,
+ "y": -0.11400000000000032
+ },
+ {
+ "x": 286.992,
+ "y": 3.792000000000002
+ },
+ {
+ "x": 291.75,
+ "y": 8.25
+ },
+ {
+ "x": 296.20799999999997,
+ "y": 13.008000000000006
+ },
+ {
+ "x": 300.114,
+ "y": 17.813999999999997
+ },
+ {
+ "x": 303.216,
+ "y": 22.416000000000004
+ },
+ {
+ "x": 305.262,
+ "y": 26.562
+ },
+ {
+ "x": 306.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -6.0
+ },
+ {
+ "x": 273.55,
+ "y": -5.2620000000000005
+ },
+ {
+ "x": 278.0,
+ "y": -3.216
+ },
+ {
+ "x": 283.05,
+ "y": -0.11400000000000032
+ },
+ {
+ "x": 288.4,
+ "y": 3.792000000000002
+ },
+ {
+ "x": 293.75,
+ "y": 8.25
+ },
+ {
+ "x": 298.8,
+ "y": 13.008000000000006
+ },
+ {
+ "x": 303.25,
+ "y": 17.813999999999997
+ },
+ {
+ "x": 306.8,
+ "y": 22.416000000000004
+ },
+ {
+ "x": 309.15,
+ "y": 26.562
+ },
+ {
+ "x": 310.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -6.0
+ },
+ {
+ "x": 273.66200000000003,
+ "y": -5.2620000000000005
+ },
+ {
+ "x": 278.41600000000005,
+ "y": -3.216
+ },
+ {
+ "x": 283.914,
+ "y": -0.11400000000000032
+ },
+ {
+ "x": 289.808,
+ "y": 3.792000000000002
+ },
+ {
+ "x": 295.75,
+ "y": 8.25
+ },
+ {
+ "x": 301.392,
+ "y": 13.008000000000006
+ },
+ {
+ "x": 306.386,
+ "y": 17.813999999999997
+ },
+ {
+ "x": 310.384,
+ "y": 22.416000000000004
+ },
+ {
+ "x": 313.03799999999995,
+ "y": 26.562
+ },
+ {
+ "x": 314.0,
+ "y": 30.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_right",
+ "startRoad": "road_1_1_0",
+ "endRoad": "road_2_1_3",
+ "direction": 0,
+ "laneLinks": [
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -18.0
+ },
+ {
+ "x": 273.214,
+ "y": -18.066
+ },
+ {
+ "x": 276.752,
+ "y": -18.288
+ },
+ {
+ "x": 280.458,
+ "y": -18.701999999999998
+ },
+ {
+ "x": 284.176,
+ "y": -19.344
+ },
+ {
+ "x": 287.75,
+ "y": -20.25
+ },
+ {
+ "x": 291.024,
+ "y": -21.456000000000003
+ },
+ {
+ "x": 293.842,
+ "y": -22.997999999999998
+ },
+ {
+ "x": 296.048,
+ "y": -24.912
+ },
+ {
+ "x": 297.486,
+ "y": -27.234
+ },
+ {
+ "x": 298.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -18.0
+ },
+ {
+ "x": 273.10200000000003,
+ "y": -18.066
+ },
+ {
+ "x": 276.336,
+ "y": -18.288
+ },
+ {
+ "x": 279.594,
+ "y": -18.701999999999998
+ },
+ {
+ "x": 282.76800000000003,
+ "y": -19.344
+ },
+ {
+ "x": 285.75,
+ "y": -20.25
+ },
+ {
+ "x": 288.432,
+ "y": -21.456000000000003
+ },
+ {
+ "x": 290.706,
+ "y": -22.997999999999998
+ },
+ {
+ "x": 292.464,
+ "y": -24.912
+ },
+ {
+ "x": 293.59799999999996,
+ "y": -27.234
+ },
+ {
+ "x": 294.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -18.0
+ },
+ {
+ "x": 272.99,
+ "y": -18.066
+ },
+ {
+ "x": 275.92,
+ "y": -18.288
+ },
+ {
+ "x": 278.73,
+ "y": -18.701999999999998
+ },
+ {
+ "x": 281.36,
+ "y": -19.344
+ },
+ {
+ "x": 283.75,
+ "y": -20.25
+ },
+ {
+ "x": 285.84000000000003,
+ "y": -21.456000000000003
+ },
+ {
+ "x": 287.57,
+ "y": -22.997999999999998
+ },
+ {
+ "x": 288.88,
+ "y": -24.912
+ },
+ {
+ "x": 289.71,
+ "y": -27.234
+ },
+ {
+ "x": 290.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -18.0
+ },
+ {
+ "x": 272.878,
+ "y": -18.066
+ },
+ {
+ "x": 275.504,
+ "y": -18.288
+ },
+ {
+ "x": 277.866,
+ "y": -18.701999999999998
+ },
+ {
+ "x": 279.952,
+ "y": -19.344
+ },
+ {
+ "x": 281.75,
+ "y": -20.25
+ },
+ {
+ "x": 283.248,
+ "y": -21.456000000000003
+ },
+ {
+ "x": 284.434,
+ "y": -22.997999999999998
+ },
+ {
+ "x": 285.296,
+ "y": -24.912
+ },
+ {
+ "x": 285.822,
+ "y": -27.234
+ },
+ {
+ "x": 286.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -22.0
+ },
+ {
+ "x": 273.214,
+ "y": -21.954
+ },
+ {
+ "x": 276.752,
+ "y": -21.872
+ },
+ {
+ "x": 280.458,
+ "y": -21.838
+ },
+ {
+ "x": 284.176,
+ "y": -21.936000000000003
+ },
+ {
+ "x": 287.75,
+ "y": -22.25
+ },
+ {
+ "x": 291.024,
+ "y": -22.864
+ },
+ {
+ "x": 293.842,
+ "y": -23.862
+ },
+ {
+ "x": 296.048,
+ "y": -25.328
+ },
+ {
+ "x": 297.486,
+ "y": -27.346
+ },
+ {
+ "x": 298.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -22.0
+ },
+ {
+ "x": 273.10200000000003,
+ "y": -21.954
+ },
+ {
+ "x": 276.336,
+ "y": -21.872
+ },
+ {
+ "x": 279.594,
+ "y": -21.838
+ },
+ {
+ "x": 282.76800000000003,
+ "y": -21.936000000000003
+ },
+ {
+ "x": 285.75,
+ "y": -22.25
+ },
+ {
+ "x": 288.432,
+ "y": -22.864
+ },
+ {
+ "x": 290.706,
+ "y": -23.862
+ },
+ {
+ "x": 292.464,
+ "y": -25.328
+ },
+ {
+ "x": 293.59799999999996,
+ "y": -27.346
+ },
+ {
+ "x": 294.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -22.0
+ },
+ {
+ "x": 272.99,
+ "y": -21.954
+ },
+ {
+ "x": 275.92,
+ "y": -21.872
+ },
+ {
+ "x": 278.73,
+ "y": -21.838
+ },
+ {
+ "x": 281.36,
+ "y": -21.936000000000003
+ },
+ {
+ "x": 283.75,
+ "y": -22.25
+ },
+ {
+ "x": 285.84000000000003,
+ "y": -22.864
+ },
+ {
+ "x": 287.57,
+ "y": -23.862
+ },
+ {
+ "x": 288.88,
+ "y": -25.328
+ },
+ {
+ "x": 289.71,
+ "y": -27.346
+ },
+ {
+ "x": 290.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 270.0,
+ "y": -22.0
+ },
+ {
+ "x": 272.878,
+ "y": -21.954
+ },
+ {
+ "x": 275.504,
+ "y": -21.872
+ },
+ {
+ "x": 277.866,
+ "y": -21.838
+ },
+ {
+ "x": 279.952,
+ "y": -21.936000000000003
+ },
+ {
+ "x": 281.75,
+ "y": -22.25
+ },
+ {
+ "x": 283.248,
+ "y": -22.864
+ },
+ {
+ "x": 284.434,
+ "y": -23.862
+ },
+ {
+ "x": 285.296,
+ "y": -25.328
+ },
+ {
+ "x": 285.822,
+ "y": -27.346
+ },
+ {
+ "x": 286.0,
+ "y": -30.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_right",
+ "startRoad": "road_2_0_1",
+ "endRoad": "road_2_1_0",
+ "direction": 1,
+ "laneLinks": [
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 314.0,
+ "y": -30.0
+ },
+ {
+ "x": 314.178,
+ "y": -26.786
+ },
+ {
+ "x": 314.704,
+ "y": -23.247999999999998
+ },
+ {
+ "x": 315.56600000000003,
+ "y": -19.541999999999998
+ },
+ {
+ "x": 316.752,
+ "y": -15.824
+ },
+ {
+ "x": 318.25,
+ "y": -12.25
+ },
+ {
+ "x": 320.048,
+ "y": -8.975999999999996
+ },
+ {
+ "x": 322.13399999999996,
+ "y": -6.158000000000003
+ },
+ {
+ "x": 324.49600000000004,
+ "y": -3.9519999999999986
+ },
+ {
+ "x": 327.122,
+ "y": -2.5140000000000002
+ },
+ {
+ "x": 330.0,
+ "y": -2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 314.0,
+ "y": -30.0
+ },
+ {
+ "x": 314.178,
+ "y": -26.898
+ },
+ {
+ "x": 314.704,
+ "y": -23.663999999999998
+ },
+ {
+ "x": 315.56600000000003,
+ "y": -20.406
+ },
+ {
+ "x": 316.752,
+ "y": -17.232
+ },
+ {
+ "x": 318.25,
+ "y": -14.25
+ },
+ {
+ "x": 320.048,
+ "y": -11.567999999999998
+ },
+ {
+ "x": 322.13399999999996,
+ "y": -9.294000000000004
+ },
+ {
+ "x": 324.49600000000004,
+ "y": -7.536
+ },
+ {
+ "x": 327.122,
+ "y": -6.402
+ },
+ {
+ "x": 330.0,
+ "y": -6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 314.0,
+ "y": -30.0
+ },
+ {
+ "x": 314.178,
+ "y": -27.01
+ },
+ {
+ "x": 314.704,
+ "y": -24.08
+ },
+ {
+ "x": 315.56600000000003,
+ "y": -21.27
+ },
+ {
+ "x": 316.752,
+ "y": -18.64
+ },
+ {
+ "x": 318.25,
+ "y": -16.25
+ },
+ {
+ "x": 320.048,
+ "y": -14.159999999999997
+ },
+ {
+ "x": 322.13399999999996,
+ "y": -12.430000000000003
+ },
+ {
+ "x": 324.49600000000004,
+ "y": -11.12
+ },
+ {
+ "x": 327.122,
+ "y": -10.29
+ },
+ {
+ "x": 330.0,
+ "y": -10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 314.0,
+ "y": -30.0
+ },
+ {
+ "x": 314.178,
+ "y": -27.122
+ },
+ {
+ "x": 314.704,
+ "y": -24.496
+ },
+ {
+ "x": 315.56600000000003,
+ "y": -22.134
+ },
+ {
+ "x": 316.752,
+ "y": -20.048000000000002
+ },
+ {
+ "x": 318.25,
+ "y": -18.25
+ },
+ {
+ "x": 320.048,
+ "y": -16.752
+ },
+ {
+ "x": 322.13399999999996,
+ "y": -15.566000000000003
+ },
+ {
+ "x": 324.49600000000004,
+ "y": -14.704
+ },
+ {
+ "x": 327.122,
+ "y": -14.178
+ },
+ {
+ "x": 330.0,
+ "y": -14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 314.0,
+ "y": -30.0
+ },
+ {
+ "x": 314.178,
+ "y": -27.234
+ },
+ {
+ "x": 314.704,
+ "y": -24.912
+ },
+ {
+ "x": 315.56600000000003,
+ "y": -22.998
+ },
+ {
+ "x": 316.752,
+ "y": -21.456000000000003
+ },
+ {
+ "x": 318.25,
+ "y": -20.25
+ },
+ {
+ "x": 320.048,
+ "y": -19.343999999999998
+ },
+ {
+ "x": 322.13399999999996,
+ "y": -18.702
+ },
+ {
+ "x": 324.49600000000004,
+ "y": -18.288000000000004
+ },
+ {
+ "x": 327.122,
+ "y": -18.066
+ },
+ {
+ "x": 330.0,
+ "y": -18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 314.0,
+ "y": -30.0
+ },
+ {
+ "x": 314.178,
+ "y": -27.346
+ },
+ {
+ "x": 314.704,
+ "y": -25.328
+ },
+ {
+ "x": 315.56600000000003,
+ "y": -23.862000000000002
+ },
+ {
+ "x": 316.752,
+ "y": -22.864
+ },
+ {
+ "x": 318.25,
+ "y": -22.25
+ },
+ {
+ "x": 320.048,
+ "y": -21.936
+ },
+ {
+ "x": 322.13399999999996,
+ "y": -21.838
+ },
+ {
+ "x": 324.49600000000004,
+ "y": -21.872
+ },
+ {
+ "x": 327.122,
+ "y": -21.954
+ },
+ {
+ "x": 330.0,
+ "y": -22.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "go_straight",
+ "startRoad": "road_2_0_1",
+ "endRoad": "road_2_1_1",
+ "direction": 1,
+ "laneLinks": [
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 306.0,
+ "y": -30.0
+ },
+ {
+ "x": 305.88800000000003,
+ "y": -26.16
+ },
+ {
+ "x": 305.584,
+ "y": -20.88
+ },
+ {
+ "x": 305.136,
+ "y": -14.52
+ },
+ {
+ "x": 304.592,
+ "y": -7.439999999999998
+ },
+ {
+ "x": 304.0,
+ "y": 0.0
+ },
+ {
+ "x": 303.408,
+ "y": 7.440000000000009
+ },
+ {
+ "x": 302.864,
+ "y": 14.519999999999992
+ },
+ {
+ "x": 302.416,
+ "y": 20.880000000000006
+ },
+ {
+ "x": 302.11199999999997,
+ "y": 26.16
+ },
+ {
+ "x": 302.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 306.0,
+ "y": -30.0
+ },
+ {
+ "x": 306.0,
+ "y": -26.16
+ },
+ {
+ "x": 306.0,
+ "y": -20.88
+ },
+ {
+ "x": 306.0,
+ "y": -14.52
+ },
+ {
+ "x": 306.0,
+ "y": -7.439999999999998
+ },
+ {
+ "x": 306.0,
+ "y": 0.0
+ },
+ {
+ "x": 306.0,
+ "y": 7.440000000000009
+ },
+ {
+ "x": 306.0,
+ "y": 14.519999999999992
+ },
+ {
+ "x": 306.0,
+ "y": 20.880000000000006
+ },
+ {
+ "x": 306.0,
+ "y": 26.16
+ },
+ {
+ "x": 306.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 306.0,
+ "y": -30.0
+ },
+ {
+ "x": 306.112,
+ "y": -26.16
+ },
+ {
+ "x": 306.416,
+ "y": -20.88
+ },
+ {
+ "x": 306.86400000000003,
+ "y": -14.52
+ },
+ {
+ "x": 307.408,
+ "y": -7.439999999999998
+ },
+ {
+ "x": 308.0,
+ "y": 0.0
+ },
+ {
+ "x": 308.592,
+ "y": 7.440000000000009
+ },
+ {
+ "x": 309.13599999999997,
+ "y": 14.519999999999992
+ },
+ {
+ "x": 309.584,
+ "y": 20.880000000000006
+ },
+ {
+ "x": 309.888,
+ "y": 26.16
+ },
+ {
+ "x": 310.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 306.0,
+ "y": -30.0
+ },
+ {
+ "x": 306.22400000000005,
+ "y": -26.16
+ },
+ {
+ "x": 306.832,
+ "y": -20.88
+ },
+ {
+ "x": 307.728,
+ "y": -14.52
+ },
+ {
+ "x": 308.81600000000003,
+ "y": -7.439999999999998
+ },
+ {
+ "x": 310.0,
+ "y": 0.0
+ },
+ {
+ "x": 311.18399999999997,
+ "y": 7.440000000000009
+ },
+ {
+ "x": 312.272,
+ "y": 14.519999999999992
+ },
+ {
+ "x": 313.168,
+ "y": 20.880000000000006
+ },
+ {
+ "x": 313.77599999999995,
+ "y": 26.16
+ },
+ {
+ "x": 314.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 310.0,
+ "y": -30.0
+ },
+ {
+ "x": 309.776,
+ "y": -26.16
+ },
+ {
+ "x": 309.168,
+ "y": -20.88
+ },
+ {
+ "x": 308.27200000000005,
+ "y": -14.52
+ },
+ {
+ "x": 307.18399999999997,
+ "y": -7.439999999999998
+ },
+ {
+ "x": 306.0,
+ "y": 0.0
+ },
+ {
+ "x": 304.816,
+ "y": 7.440000000000009
+ },
+ {
+ "x": 303.728,
+ "y": 14.519999999999992
+ },
+ {
+ "x": 302.832,
+ "y": 20.880000000000006
+ },
+ {
+ "x": 302.224,
+ "y": 26.16
+ },
+ {
+ "x": 302.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 310.0,
+ "y": -30.0
+ },
+ {
+ "x": 309.888,
+ "y": -26.16
+ },
+ {
+ "x": 309.584,
+ "y": -20.88
+ },
+ {
+ "x": 309.136,
+ "y": -14.52
+ },
+ {
+ "x": 308.592,
+ "y": -7.439999999999998
+ },
+ {
+ "x": 308.0,
+ "y": 0.0
+ },
+ {
+ "x": 307.408,
+ "y": 7.440000000000009
+ },
+ {
+ "x": 306.864,
+ "y": 14.519999999999992
+ },
+ {
+ "x": 306.416,
+ "y": 20.880000000000006
+ },
+ {
+ "x": 306.112,
+ "y": 26.16
+ },
+ {
+ "x": 306.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 310.0,
+ "y": -30.0
+ },
+ {
+ "x": 310.0,
+ "y": -26.16
+ },
+ {
+ "x": 310.0,
+ "y": -20.88
+ },
+ {
+ "x": 310.0,
+ "y": -14.52
+ },
+ {
+ "x": 310.0,
+ "y": -7.439999999999998
+ },
+ {
+ "x": 310.0,
+ "y": 0.0
+ },
+ {
+ "x": 310.0,
+ "y": 7.440000000000009
+ },
+ {
+ "x": 310.0,
+ "y": 14.519999999999992
+ },
+ {
+ "x": 310.0,
+ "y": 20.880000000000006
+ },
+ {
+ "x": 310.0,
+ "y": 26.16
+ },
+ {
+ "x": 310.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 310.0,
+ "y": -30.0
+ },
+ {
+ "x": 310.11199999999997,
+ "y": -26.16
+ },
+ {
+ "x": 310.416,
+ "y": -20.88
+ },
+ {
+ "x": 310.86400000000003,
+ "y": -14.52
+ },
+ {
+ "x": 311.408,
+ "y": -7.439999999999998
+ },
+ {
+ "x": 312.0,
+ "y": 0.0
+ },
+ {
+ "x": 312.592,
+ "y": 7.440000000000009
+ },
+ {
+ "x": 313.136,
+ "y": 14.519999999999992
+ },
+ {
+ "x": 313.584,
+ "y": 20.880000000000006
+ },
+ {
+ "x": 313.888,
+ "y": 26.16
+ },
+ {
+ "x": 314.0,
+ "y": 30.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_left",
+ "startRoad": "road_2_0_1",
+ "endRoad": "road_2_1_2",
+ "direction": 1,
+ "laneLinks": [
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 302.0,
+ "y": -30.0
+ },
+ {
+ "x": 301.37399999999997,
+ "y": -26.674
+ },
+ {
+ "x": 299.63199999999995,
+ "y": -22.832
+ },
+ {
+ "x": 296.978,
+ "y": -18.678
+ },
+ {
+ "x": 293.616,
+ "y": -14.415999999999999
+ },
+ {
+ "x": 289.75,
+ "y": -10.25
+ },
+ {
+ "x": 285.584,
+ "y": -6.383999999999996
+ },
+ {
+ "x": 281.32200000000006,
+ "y": -3.022000000000004
+ },
+ {
+ "x": 277.168,
+ "y": -0.3679999999999981
+ },
+ {
+ "x": 273.326,
+ "y": 1.3739999999999994
+ },
+ {
+ "x": 270.0,
+ "y": 2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 302.0,
+ "y": -30.0
+ },
+ {
+ "x": 301.37399999999997,
+ "y": -26.562
+ },
+ {
+ "x": 299.63199999999995,
+ "y": -22.416
+ },
+ {
+ "x": 296.978,
+ "y": -17.814
+ },
+ {
+ "x": 293.616,
+ "y": -13.008
+ },
+ {
+ "x": 289.75,
+ "y": -8.25
+ },
+ {
+ "x": 285.584,
+ "y": -3.7919999999999954
+ },
+ {
+ "x": 281.32200000000006,
+ "y": 0.11399999999999633
+ },
+ {
+ "x": 277.168,
+ "y": 3.216000000000003
+ },
+ {
+ "x": 273.326,
+ "y": 5.262
+ },
+ {
+ "x": 270.0,
+ "y": 6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 302.0,
+ "y": -30.0
+ },
+ {
+ "x": 301.37399999999997,
+ "y": -26.45
+ },
+ {
+ "x": 299.63199999999995,
+ "y": -22.0
+ },
+ {
+ "x": 296.978,
+ "y": -16.95
+ },
+ {
+ "x": 293.616,
+ "y": -11.599999999999998
+ },
+ {
+ "x": 289.75,
+ "y": -6.25
+ },
+ {
+ "x": 285.584,
+ "y": -1.1999999999999948
+ },
+ {
+ "x": 281.32200000000006,
+ "y": 3.2499999999999956
+ },
+ {
+ "x": 277.168,
+ "y": 6.8000000000000025
+ },
+ {
+ "x": 273.326,
+ "y": 9.149999999999999
+ },
+ {
+ "x": 270.0,
+ "y": 10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 302.0,
+ "y": -30.0
+ },
+ {
+ "x": 301.37399999999997,
+ "y": -26.338
+ },
+ {
+ "x": 299.63199999999995,
+ "y": -21.584
+ },
+ {
+ "x": 296.978,
+ "y": -16.086
+ },
+ {
+ "x": 293.616,
+ "y": -10.191999999999998
+ },
+ {
+ "x": 289.75,
+ "y": -4.25
+ },
+ {
+ "x": 285.584,
+ "y": 1.3920000000000066
+ },
+ {
+ "x": 281.32200000000006,
+ "y": 6.385999999999996
+ },
+ {
+ "x": 277.168,
+ "y": 10.384000000000004
+ },
+ {
+ "x": 273.326,
+ "y": 13.038
+ },
+ {
+ "x": 270.0,
+ "y": 14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 302.0,
+ "y": -30.0
+ },
+ {
+ "x": 301.37399999999997,
+ "y": -26.226
+ },
+ {
+ "x": 299.63199999999995,
+ "y": -21.168
+ },
+ {
+ "x": 296.978,
+ "y": -15.222
+ },
+ {
+ "x": 293.616,
+ "y": -8.783999999999997
+ },
+ {
+ "x": 289.75,
+ "y": -2.25
+ },
+ {
+ "x": 285.584,
+ "y": 3.9840000000000053
+ },
+ {
+ "x": 281.32200000000006,
+ "y": 9.521999999999995
+ },
+ {
+ "x": 277.168,
+ "y": 13.968000000000005
+ },
+ {
+ "x": 273.326,
+ "y": 16.926
+ },
+ {
+ "x": 270.0,
+ "y": 18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 302.0,
+ "y": -30.0
+ },
+ {
+ "x": 301.37399999999997,
+ "y": -26.114
+ },
+ {
+ "x": 299.63199999999995,
+ "y": -20.752
+ },
+ {
+ "x": 296.978,
+ "y": -14.357999999999999
+ },
+ {
+ "x": 293.616,
+ "y": -7.375999999999998
+ },
+ {
+ "x": 289.75,
+ "y": -0.25
+ },
+ {
+ "x": 285.584,
+ "y": 6.576000000000008
+ },
+ {
+ "x": 281.32200000000006,
+ "y": 12.657999999999994
+ },
+ {
+ "x": 277.168,
+ "y": 17.552000000000007
+ },
+ {
+ "x": 273.326,
+ "y": 20.814
+ },
+ {
+ "x": 270.0,
+ "y": 22.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_right",
+ "startRoad": "road_3_1_2",
+ "endRoad": "road_2_1_1",
+ "direction": 2,
+ "laneLinks": [
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 18.0
+ },
+ {
+ "x": 326.786,
+ "y": 18.066
+ },
+ {
+ "x": 323.24800000000005,
+ "y": 18.288
+ },
+ {
+ "x": 319.54200000000003,
+ "y": 18.701999999999998
+ },
+ {
+ "x": 315.824,
+ "y": 19.344
+ },
+ {
+ "x": 312.25,
+ "y": 20.25
+ },
+ {
+ "x": 308.976,
+ "y": 21.456000000000003
+ },
+ {
+ "x": 306.158,
+ "y": 22.997999999999998
+ },
+ {
+ "x": 303.952,
+ "y": 24.912
+ },
+ {
+ "x": 302.514,
+ "y": 27.234
+ },
+ {
+ "x": 302.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 18.0
+ },
+ {
+ "x": 326.89799999999997,
+ "y": 18.066
+ },
+ {
+ "x": 323.66400000000004,
+ "y": 18.288
+ },
+ {
+ "x": 320.40600000000006,
+ "y": 18.701999999999998
+ },
+ {
+ "x": 317.232,
+ "y": 19.344
+ },
+ {
+ "x": 314.25,
+ "y": 20.25
+ },
+ {
+ "x": 311.568,
+ "y": 21.456000000000003
+ },
+ {
+ "x": 309.294,
+ "y": 22.997999999999998
+ },
+ {
+ "x": 307.536,
+ "y": 24.912
+ },
+ {
+ "x": 306.40200000000004,
+ "y": 27.234
+ },
+ {
+ "x": 306.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 18.0
+ },
+ {
+ "x": 327.01,
+ "y": 18.066
+ },
+ {
+ "x": 324.08000000000004,
+ "y": 18.288
+ },
+ {
+ "x": 321.27000000000004,
+ "y": 18.701999999999998
+ },
+ {
+ "x": 318.64,
+ "y": 19.344
+ },
+ {
+ "x": 316.25,
+ "y": 20.25
+ },
+ {
+ "x": 314.16,
+ "y": 21.456000000000003
+ },
+ {
+ "x": 312.43,
+ "y": 22.997999999999998
+ },
+ {
+ "x": 311.12,
+ "y": 24.912
+ },
+ {
+ "x": 310.29,
+ "y": 27.234
+ },
+ {
+ "x": 310.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 18.0
+ },
+ {
+ "x": 327.12199999999996,
+ "y": 18.066
+ },
+ {
+ "x": 324.49600000000004,
+ "y": 18.288
+ },
+ {
+ "x": 322.134,
+ "y": 18.701999999999998
+ },
+ {
+ "x": 320.048,
+ "y": 19.344
+ },
+ {
+ "x": 318.25,
+ "y": 20.25
+ },
+ {
+ "x": 316.752,
+ "y": 21.456000000000003
+ },
+ {
+ "x": 315.56600000000003,
+ "y": 22.997999999999998
+ },
+ {
+ "x": 314.704,
+ "y": 24.912
+ },
+ {
+ "x": 314.178,
+ "y": 27.234
+ },
+ {
+ "x": 314.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 22.0
+ },
+ {
+ "x": 326.786,
+ "y": 21.954
+ },
+ {
+ "x": 323.24800000000005,
+ "y": 21.872
+ },
+ {
+ "x": 319.54200000000003,
+ "y": 21.838
+ },
+ {
+ "x": 315.824,
+ "y": 21.936000000000003
+ },
+ {
+ "x": 312.25,
+ "y": 22.25
+ },
+ {
+ "x": 308.976,
+ "y": 22.864
+ },
+ {
+ "x": 306.158,
+ "y": 23.862
+ },
+ {
+ "x": 303.952,
+ "y": 25.328
+ },
+ {
+ "x": 302.514,
+ "y": 27.346
+ },
+ {
+ "x": 302.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 22.0
+ },
+ {
+ "x": 326.89799999999997,
+ "y": 21.954
+ },
+ {
+ "x": 323.66400000000004,
+ "y": 21.872
+ },
+ {
+ "x": 320.40600000000006,
+ "y": 21.838
+ },
+ {
+ "x": 317.232,
+ "y": 21.936000000000003
+ },
+ {
+ "x": 314.25,
+ "y": 22.25
+ },
+ {
+ "x": 311.568,
+ "y": 22.864
+ },
+ {
+ "x": 309.294,
+ "y": 23.862
+ },
+ {
+ "x": 307.536,
+ "y": 25.328
+ },
+ {
+ "x": 306.40200000000004,
+ "y": 27.346
+ },
+ {
+ "x": 306.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 22.0
+ },
+ {
+ "x": 327.01,
+ "y": 21.954
+ },
+ {
+ "x": 324.08000000000004,
+ "y": 21.872
+ },
+ {
+ "x": 321.27000000000004,
+ "y": 21.838
+ },
+ {
+ "x": 318.64,
+ "y": 21.936000000000003
+ },
+ {
+ "x": 316.25,
+ "y": 22.25
+ },
+ {
+ "x": 314.16,
+ "y": 22.864
+ },
+ {
+ "x": 312.43,
+ "y": 23.862
+ },
+ {
+ "x": 311.12,
+ "y": 25.328
+ },
+ {
+ "x": 310.29,
+ "y": 27.346
+ },
+ {
+ "x": 310.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 22.0
+ },
+ {
+ "x": 327.12199999999996,
+ "y": 21.954
+ },
+ {
+ "x": 324.49600000000004,
+ "y": 21.872
+ },
+ {
+ "x": 322.134,
+ "y": 21.838
+ },
+ {
+ "x": 320.048,
+ "y": 21.936000000000003
+ },
+ {
+ "x": 318.25,
+ "y": 22.25
+ },
+ {
+ "x": 316.752,
+ "y": 22.864
+ },
+ {
+ "x": 315.56600000000003,
+ "y": 23.862
+ },
+ {
+ "x": 314.704,
+ "y": 25.328
+ },
+ {
+ "x": 314.178,
+ "y": 27.346
+ },
+ {
+ "x": 314.0,
+ "y": 30.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "go_straight",
+ "startRoad": "road_3_1_2",
+ "endRoad": "road_2_1_2",
+ "direction": 2,
+ "laneLinks": [
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 10.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 9.775999999999998
+ },
+ {
+ "x": 320.88,
+ "y": 9.168000000000001
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 8.272
+ },
+ {
+ "x": 307.44,
+ "y": 7.183999999999999
+ },
+ {
+ "x": 300.0,
+ "y": 6.0
+ },
+ {
+ "x": 292.56,
+ "y": 4.815999999999999
+ },
+ {
+ "x": 285.48,
+ "y": 3.7280000000000006
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 2.831999999999999
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 2.224
+ },
+ {
+ "x": 270.0,
+ "y": 2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 10.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 9.887999999999998
+ },
+ {
+ "x": 320.88,
+ "y": 9.584000000000001
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 9.136
+ },
+ {
+ "x": 307.44,
+ "y": 8.591999999999999
+ },
+ {
+ "x": 300.0,
+ "y": 8.0
+ },
+ {
+ "x": 292.56,
+ "y": 7.4079999999999995
+ },
+ {
+ "x": 285.48,
+ "y": 6.864000000000001
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 6.416
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 6.112
+ },
+ {
+ "x": 270.0,
+ "y": 6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 10.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 9.999999999999998
+ },
+ {
+ "x": 320.88,
+ "y": 10.000000000000002
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 10.0
+ },
+ {
+ "x": 307.44,
+ "y": 10.0
+ },
+ {
+ "x": 300.0,
+ "y": 10.0
+ },
+ {
+ "x": 292.56,
+ "y": 10.0
+ },
+ {
+ "x": 285.48,
+ "y": 10.0
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 10.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 10.0
+ },
+ {
+ "x": 270.0,
+ "y": 10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 10.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 10.111999999999998
+ },
+ {
+ "x": 320.88,
+ "y": 10.416
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 10.864
+ },
+ {
+ "x": 307.44,
+ "y": 11.408
+ },
+ {
+ "x": 300.0,
+ "y": 12.0
+ },
+ {
+ "x": 292.56,
+ "y": 12.592000000000002
+ },
+ {
+ "x": 285.48,
+ "y": 13.136
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 13.584000000000001
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 13.888000000000002
+ },
+ {
+ "x": 270.0,
+ "y": 14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 10.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 10.223999999999998
+ },
+ {
+ "x": 320.88,
+ "y": 10.832
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 11.728
+ },
+ {
+ "x": 307.44,
+ "y": 12.816
+ },
+ {
+ "x": 300.0,
+ "y": 14.0
+ },
+ {
+ "x": 292.56,
+ "y": 15.184000000000001
+ },
+ {
+ "x": 285.48,
+ "y": 16.272
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 17.168000000000003
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 17.776
+ },
+ {
+ "x": 270.0,
+ "y": 18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 10.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 10.335999999999999
+ },
+ {
+ "x": 320.88,
+ "y": 11.248000000000001
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 12.592
+ },
+ {
+ "x": 307.44,
+ "y": 14.224
+ },
+ {
+ "x": 300.0,
+ "y": 16.0
+ },
+ {
+ "x": 292.56,
+ "y": 17.776000000000003
+ },
+ {
+ "x": 285.48,
+ "y": 19.407999999999998
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 20.752000000000002
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 21.664
+ },
+ {
+ "x": 270.0,
+ "y": 22.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 14.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 13.664
+ },
+ {
+ "x": 320.88,
+ "y": 12.752
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 11.408000000000001
+ },
+ {
+ "x": 307.44,
+ "y": 9.776
+ },
+ {
+ "x": 300.0,
+ "y": 8.0
+ },
+ {
+ "x": 292.56,
+ "y": 6.223999999999998
+ },
+ {
+ "x": 285.48,
+ "y": 4.5920000000000005
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 3.2479999999999984
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 2.3360000000000003
+ },
+ {
+ "x": 270.0,
+ "y": 2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 14.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 13.776
+ },
+ {
+ "x": 320.88,
+ "y": 13.168000000000001
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 12.272000000000002
+ },
+ {
+ "x": 307.44,
+ "y": 11.184
+ },
+ {
+ "x": 300.0,
+ "y": 10.0
+ },
+ {
+ "x": 292.56,
+ "y": 8.815999999999999
+ },
+ {
+ "x": 285.48,
+ "y": 7.728000000000001
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 6.831999999999999
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 6.224
+ },
+ {
+ "x": 270.0,
+ "y": 6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 14.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 13.888
+ },
+ {
+ "x": 320.88,
+ "y": 13.584000000000001
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 13.136000000000001
+ },
+ {
+ "x": 307.44,
+ "y": 12.592
+ },
+ {
+ "x": 300.0,
+ "y": 12.0
+ },
+ {
+ "x": 292.56,
+ "y": 11.408
+ },
+ {
+ "x": 285.48,
+ "y": 10.864
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 10.415999999999999
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 10.111999999999998
+ },
+ {
+ "x": 270.0,
+ "y": 10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 14.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 14.0
+ },
+ {
+ "x": 320.88,
+ "y": 14.0
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 14.000000000000002
+ },
+ {
+ "x": 307.44,
+ "y": 14.0
+ },
+ {
+ "x": 300.0,
+ "y": 14.0
+ },
+ {
+ "x": 292.56,
+ "y": 14.0
+ },
+ {
+ "x": 285.48,
+ "y": 14.0
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 14.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 14.0
+ },
+ {
+ "x": 270.0,
+ "y": 14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 14.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 14.112
+ },
+ {
+ "x": 320.88,
+ "y": 14.416
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 14.864
+ },
+ {
+ "x": 307.44,
+ "y": 15.408000000000001
+ },
+ {
+ "x": 300.0,
+ "y": 16.0
+ },
+ {
+ "x": 292.56,
+ "y": 16.592
+ },
+ {
+ "x": 285.48,
+ "y": 17.136
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 17.584000000000003
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 17.887999999999998
+ },
+ {
+ "x": 270.0,
+ "y": 18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 14.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 14.224
+ },
+ {
+ "x": 320.88,
+ "y": 14.832
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 15.728000000000002
+ },
+ {
+ "x": 307.44,
+ "y": 16.816000000000003
+ },
+ {
+ "x": 300.0,
+ "y": 18.0
+ },
+ {
+ "x": 292.56,
+ "y": 19.184
+ },
+ {
+ "x": 285.48,
+ "y": 20.272
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 21.168000000000003
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 21.776
+ },
+ {
+ "x": 270.0,
+ "y": 22.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 18.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 17.552
+ },
+ {
+ "x": 320.88,
+ "y": 16.336
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 14.544
+ },
+ {
+ "x": 307.44,
+ "y": 12.367999999999999
+ },
+ {
+ "x": 300.0,
+ "y": 10.0
+ },
+ {
+ "x": 292.56,
+ "y": 7.631999999999998
+ },
+ {
+ "x": 285.48,
+ "y": 5.456000000000001
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 3.663999999999998
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 2.4480000000000004
+ },
+ {
+ "x": 270.0,
+ "y": 2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 18.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 17.663999999999998
+ },
+ {
+ "x": 320.88,
+ "y": 16.752
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 15.408000000000001
+ },
+ {
+ "x": 307.44,
+ "y": 13.775999999999998
+ },
+ {
+ "x": 300.0,
+ "y": 12.0
+ },
+ {
+ "x": 292.56,
+ "y": 10.223999999999998
+ },
+ {
+ "x": 285.48,
+ "y": 8.592000000000002
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 7.247999999999999
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 6.336
+ },
+ {
+ "x": 270.0,
+ "y": 6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 18.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 17.776
+ },
+ {
+ "x": 320.88,
+ "y": 17.168
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 16.272
+ },
+ {
+ "x": 307.44,
+ "y": 15.184
+ },
+ {
+ "x": 300.0,
+ "y": 14.0
+ },
+ {
+ "x": 292.56,
+ "y": 12.815999999999999
+ },
+ {
+ "x": 285.48,
+ "y": 11.728000000000002
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 10.831999999999999
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 10.224
+ },
+ {
+ "x": 270.0,
+ "y": 10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 18.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 17.887999999999998
+ },
+ {
+ "x": 320.88,
+ "y": 17.584
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 17.136
+ },
+ {
+ "x": 307.44,
+ "y": 16.592
+ },
+ {
+ "x": 300.0,
+ "y": 16.0
+ },
+ {
+ "x": 292.56,
+ "y": 15.408000000000001
+ },
+ {
+ "x": 285.48,
+ "y": 14.864
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 14.416
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 14.112000000000002
+ },
+ {
+ "x": 270.0,
+ "y": 14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 18.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 18.0
+ },
+ {
+ "x": 320.88,
+ "y": 18.0
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 18.0
+ },
+ {
+ "x": 307.44,
+ "y": 18.0
+ },
+ {
+ "x": 300.0,
+ "y": 18.0
+ },
+ {
+ "x": 292.56,
+ "y": 18.0
+ },
+ {
+ "x": 285.48,
+ "y": 18.0
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 18.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 18.0
+ },
+ {
+ "x": 270.0,
+ "y": 18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 18.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 18.112
+ },
+ {
+ "x": 320.88,
+ "y": 18.416
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 18.864
+ },
+ {
+ "x": 307.44,
+ "y": 19.408
+ },
+ {
+ "x": 300.0,
+ "y": 20.0
+ },
+ {
+ "x": 292.56,
+ "y": 20.592000000000002
+ },
+ {
+ "x": 285.48,
+ "y": 21.136
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 21.584
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 21.888
+ },
+ {
+ "x": 270.0,
+ "y": 22.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_left",
+ "startRoad": "road_3_1_2",
+ "endRoad": "road_2_1_3",
+ "direction": 2,
+ "laneLinks": [
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 2.0
+ },
+ {
+ "x": 326.674,
+ "y": 1.3739999999999999
+ },
+ {
+ "x": 322.83200000000005,
+ "y": -0.3680000000000003
+ },
+ {
+ "x": 318.67800000000005,
+ "y": -3.0220000000000007
+ },
+ {
+ "x": 314.416,
+ "y": -6.384000000000002
+ },
+ {
+ "x": 310.25,
+ "y": -10.25
+ },
+ {
+ "x": 306.384,
+ "y": -14.416000000000004
+ },
+ {
+ "x": 303.022,
+ "y": -18.677999999999997
+ },
+ {
+ "x": 300.368,
+ "y": -22.832000000000004
+ },
+ {
+ "x": 298.62600000000003,
+ "y": -26.674
+ },
+ {
+ "x": 298.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 2.0
+ },
+ {
+ "x": 326.562,
+ "y": 1.3739999999999999
+ },
+ {
+ "x": 322.41600000000005,
+ "y": -0.3680000000000003
+ },
+ {
+ "x": 317.814,
+ "y": -3.0220000000000007
+ },
+ {
+ "x": 313.00800000000004,
+ "y": -6.384000000000002
+ },
+ {
+ "x": 308.25,
+ "y": -10.25
+ },
+ {
+ "x": 303.792,
+ "y": -14.416000000000004
+ },
+ {
+ "x": 299.886,
+ "y": -18.677999999999997
+ },
+ {
+ "x": 296.784,
+ "y": -22.832000000000004
+ },
+ {
+ "x": 294.738,
+ "y": -26.674
+ },
+ {
+ "x": 294.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 2.0
+ },
+ {
+ "x": 326.45,
+ "y": 1.3739999999999999
+ },
+ {
+ "x": 322.00000000000006,
+ "y": -0.3680000000000003
+ },
+ {
+ "x": 316.95000000000005,
+ "y": -3.0220000000000007
+ },
+ {
+ "x": 311.6,
+ "y": -6.384000000000002
+ },
+ {
+ "x": 306.25,
+ "y": -10.25
+ },
+ {
+ "x": 301.2,
+ "y": -14.416000000000004
+ },
+ {
+ "x": 296.75,
+ "y": -18.677999999999997
+ },
+ {
+ "x": 293.2,
+ "y": -22.832000000000004
+ },
+ {
+ "x": 290.85,
+ "y": -26.674
+ },
+ {
+ "x": 290.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 2.0
+ },
+ {
+ "x": 326.33799999999997,
+ "y": 1.3739999999999999
+ },
+ {
+ "x": 321.58400000000006,
+ "y": -0.3680000000000003
+ },
+ {
+ "x": 316.086,
+ "y": -3.0220000000000007
+ },
+ {
+ "x": 310.192,
+ "y": -6.384000000000002
+ },
+ {
+ "x": 304.25,
+ "y": -10.25
+ },
+ {
+ "x": 298.608,
+ "y": -14.416000000000004
+ },
+ {
+ "x": 293.61400000000003,
+ "y": -18.677999999999997
+ },
+ {
+ "x": 289.616,
+ "y": -22.832000000000004
+ },
+ {
+ "x": 286.96200000000005,
+ "y": -26.674
+ },
+ {
+ "x": 286.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 6.0
+ },
+ {
+ "x": 326.674,
+ "y": 5.2620000000000005
+ },
+ {
+ "x": 322.83200000000005,
+ "y": 3.216
+ },
+ {
+ "x": 318.67800000000005,
+ "y": 0.11400000000000032
+ },
+ {
+ "x": 314.416,
+ "y": -3.792000000000002
+ },
+ {
+ "x": 310.25,
+ "y": -8.25
+ },
+ {
+ "x": 306.384,
+ "y": -13.008000000000006
+ },
+ {
+ "x": 303.022,
+ "y": -17.813999999999997
+ },
+ {
+ "x": 300.368,
+ "y": -22.416000000000004
+ },
+ {
+ "x": 298.62600000000003,
+ "y": -26.562
+ },
+ {
+ "x": 298.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 6.0
+ },
+ {
+ "x": 326.562,
+ "y": 5.2620000000000005
+ },
+ {
+ "x": 322.41600000000005,
+ "y": 3.216
+ },
+ {
+ "x": 317.814,
+ "y": 0.11400000000000032
+ },
+ {
+ "x": 313.00800000000004,
+ "y": -3.792000000000002
+ },
+ {
+ "x": 308.25,
+ "y": -8.25
+ },
+ {
+ "x": 303.792,
+ "y": -13.008000000000006
+ },
+ {
+ "x": 299.886,
+ "y": -17.813999999999997
+ },
+ {
+ "x": 296.784,
+ "y": -22.416000000000004
+ },
+ {
+ "x": 294.738,
+ "y": -26.562
+ },
+ {
+ "x": 294.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 6.0
+ },
+ {
+ "x": 326.45,
+ "y": 5.2620000000000005
+ },
+ {
+ "x": 322.00000000000006,
+ "y": 3.216
+ },
+ {
+ "x": 316.95000000000005,
+ "y": 0.11400000000000032
+ },
+ {
+ "x": 311.6,
+ "y": -3.792000000000002
+ },
+ {
+ "x": 306.25,
+ "y": -8.25
+ },
+ {
+ "x": 301.2,
+ "y": -13.008000000000006
+ },
+ {
+ "x": 296.75,
+ "y": -17.813999999999997
+ },
+ {
+ "x": 293.2,
+ "y": -22.416000000000004
+ },
+ {
+ "x": 290.85,
+ "y": -26.562
+ },
+ {
+ "x": 290.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 6.0
+ },
+ {
+ "x": 326.33799999999997,
+ "y": 5.2620000000000005
+ },
+ {
+ "x": 321.58400000000006,
+ "y": 3.216
+ },
+ {
+ "x": 316.086,
+ "y": 0.11400000000000032
+ },
+ {
+ "x": 310.192,
+ "y": -3.792000000000002
+ },
+ {
+ "x": 304.25,
+ "y": -8.25
+ },
+ {
+ "x": 298.608,
+ "y": -13.008000000000006
+ },
+ {
+ "x": 293.61400000000003,
+ "y": -17.813999999999997
+ },
+ {
+ "x": 289.616,
+ "y": -22.416000000000004
+ },
+ {
+ "x": 286.96200000000005,
+ "y": -26.562
+ },
+ {
+ "x": 286.0,
+ "y": -30.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_left",
+ "startRoad": "road_2_2_3",
+ "endRoad": "road_2_1_0",
+ "direction": 3,
+ "laneLinks": [
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 298.0,
+ "y": 30.0
+ },
+ {
+ "x": 298.62600000000003,
+ "y": 26.674
+ },
+ {
+ "x": 300.368,
+ "y": 22.832
+ },
+ {
+ "x": 303.02200000000005,
+ "y": 18.678
+ },
+ {
+ "x": 306.384,
+ "y": 14.415999999999999
+ },
+ {
+ "x": 310.25,
+ "y": 10.25
+ },
+ {
+ "x": 314.416,
+ "y": 6.383999999999996
+ },
+ {
+ "x": 318.67799999999994,
+ "y": 3.022000000000004
+ },
+ {
+ "x": 322.83200000000005,
+ "y": 0.3679999999999981
+ },
+ {
+ "x": 326.674,
+ "y": -1.3739999999999994
+ },
+ {
+ "x": 330.0,
+ "y": -2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 298.0,
+ "y": 30.0
+ },
+ {
+ "x": 298.62600000000003,
+ "y": 26.562
+ },
+ {
+ "x": 300.368,
+ "y": 22.416
+ },
+ {
+ "x": 303.02200000000005,
+ "y": 17.814
+ },
+ {
+ "x": 306.384,
+ "y": 13.008
+ },
+ {
+ "x": 310.25,
+ "y": 8.25
+ },
+ {
+ "x": 314.416,
+ "y": 3.7919999999999954
+ },
+ {
+ "x": 318.67799999999994,
+ "y": -0.11399999999999633
+ },
+ {
+ "x": 322.83200000000005,
+ "y": -3.216000000000003
+ },
+ {
+ "x": 326.674,
+ "y": -5.262
+ },
+ {
+ "x": 330.0,
+ "y": -6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 298.0,
+ "y": 30.0
+ },
+ {
+ "x": 298.62600000000003,
+ "y": 26.45
+ },
+ {
+ "x": 300.368,
+ "y": 22.0
+ },
+ {
+ "x": 303.02200000000005,
+ "y": 16.95
+ },
+ {
+ "x": 306.384,
+ "y": 11.599999999999998
+ },
+ {
+ "x": 310.25,
+ "y": 6.25
+ },
+ {
+ "x": 314.416,
+ "y": 1.1999999999999948
+ },
+ {
+ "x": 318.67799999999994,
+ "y": -3.2499999999999956
+ },
+ {
+ "x": 322.83200000000005,
+ "y": -6.8000000000000025
+ },
+ {
+ "x": 326.674,
+ "y": -9.149999999999999
+ },
+ {
+ "x": 330.0,
+ "y": -10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 298.0,
+ "y": 30.0
+ },
+ {
+ "x": 298.62600000000003,
+ "y": 26.338
+ },
+ {
+ "x": 300.368,
+ "y": 21.584
+ },
+ {
+ "x": 303.02200000000005,
+ "y": 16.086
+ },
+ {
+ "x": 306.384,
+ "y": 10.191999999999998
+ },
+ {
+ "x": 310.25,
+ "y": 4.25
+ },
+ {
+ "x": 314.416,
+ "y": -1.3920000000000066
+ },
+ {
+ "x": 318.67799999999994,
+ "y": -6.385999999999996
+ },
+ {
+ "x": 322.83200000000005,
+ "y": -10.384000000000004
+ },
+ {
+ "x": 326.674,
+ "y": -13.038
+ },
+ {
+ "x": 330.0,
+ "y": -14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 298.0,
+ "y": 30.0
+ },
+ {
+ "x": 298.62600000000003,
+ "y": 26.226
+ },
+ {
+ "x": 300.368,
+ "y": 21.168
+ },
+ {
+ "x": 303.02200000000005,
+ "y": 15.222
+ },
+ {
+ "x": 306.384,
+ "y": 8.783999999999997
+ },
+ {
+ "x": 310.25,
+ "y": 2.25
+ },
+ {
+ "x": 314.416,
+ "y": -3.9840000000000053
+ },
+ {
+ "x": 318.67799999999994,
+ "y": -9.521999999999995
+ },
+ {
+ "x": 322.83200000000005,
+ "y": -13.968000000000005
+ },
+ {
+ "x": 326.674,
+ "y": -16.926
+ },
+ {
+ "x": 330.0,
+ "y": -18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 298.0,
+ "y": 30.0
+ },
+ {
+ "x": 298.62600000000003,
+ "y": 26.114
+ },
+ {
+ "x": 300.368,
+ "y": 20.752
+ },
+ {
+ "x": 303.02200000000005,
+ "y": 14.357999999999999
+ },
+ {
+ "x": 306.384,
+ "y": 7.375999999999998
+ },
+ {
+ "x": 310.25,
+ "y": 0.25
+ },
+ {
+ "x": 314.416,
+ "y": -6.576000000000008
+ },
+ {
+ "x": 318.67799999999994,
+ "y": -12.657999999999994
+ },
+ {
+ "x": 322.83200000000005,
+ "y": -17.552000000000007
+ },
+ {
+ "x": 326.674,
+ "y": -20.814
+ },
+ {
+ "x": 330.0,
+ "y": -22.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_right",
+ "startRoad": "road_2_2_3",
+ "endRoad": "road_2_1_2",
+ "direction": 3,
+ "laneLinks": [
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 286.0,
+ "y": 30.0
+ },
+ {
+ "x": 285.822,
+ "y": 26.786
+ },
+ {
+ "x": 285.296,
+ "y": 23.247999999999998
+ },
+ {
+ "x": 284.434,
+ "y": 19.541999999999998
+ },
+ {
+ "x": 283.248,
+ "y": 15.824
+ },
+ {
+ "x": 281.75,
+ "y": 12.25
+ },
+ {
+ "x": 279.952,
+ "y": 8.975999999999996
+ },
+ {
+ "x": 277.86600000000004,
+ "y": 6.158000000000003
+ },
+ {
+ "x": 275.50399999999996,
+ "y": 3.9519999999999986
+ },
+ {
+ "x": 272.878,
+ "y": 2.5140000000000002
+ },
+ {
+ "x": 270.0,
+ "y": 2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 286.0,
+ "y": 30.0
+ },
+ {
+ "x": 285.822,
+ "y": 26.898
+ },
+ {
+ "x": 285.296,
+ "y": 23.663999999999998
+ },
+ {
+ "x": 284.434,
+ "y": 20.406
+ },
+ {
+ "x": 283.248,
+ "y": 17.232
+ },
+ {
+ "x": 281.75,
+ "y": 14.25
+ },
+ {
+ "x": 279.952,
+ "y": 11.567999999999998
+ },
+ {
+ "x": 277.86600000000004,
+ "y": 9.294000000000004
+ },
+ {
+ "x": 275.50399999999996,
+ "y": 7.536
+ },
+ {
+ "x": 272.878,
+ "y": 6.402
+ },
+ {
+ "x": 270.0,
+ "y": 6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 286.0,
+ "y": 30.0
+ },
+ {
+ "x": 285.822,
+ "y": 27.01
+ },
+ {
+ "x": 285.296,
+ "y": 24.08
+ },
+ {
+ "x": 284.434,
+ "y": 21.27
+ },
+ {
+ "x": 283.248,
+ "y": 18.64
+ },
+ {
+ "x": 281.75,
+ "y": 16.25
+ },
+ {
+ "x": 279.952,
+ "y": 14.159999999999997
+ },
+ {
+ "x": 277.86600000000004,
+ "y": 12.430000000000003
+ },
+ {
+ "x": 275.50399999999996,
+ "y": 11.12
+ },
+ {
+ "x": 272.878,
+ "y": 10.29
+ },
+ {
+ "x": 270.0,
+ "y": 10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 286.0,
+ "y": 30.0
+ },
+ {
+ "x": 285.822,
+ "y": 27.122
+ },
+ {
+ "x": 285.296,
+ "y": 24.496
+ },
+ {
+ "x": 284.434,
+ "y": 22.134
+ },
+ {
+ "x": 283.248,
+ "y": 20.048000000000002
+ },
+ {
+ "x": 281.75,
+ "y": 18.25
+ },
+ {
+ "x": 279.952,
+ "y": 16.752
+ },
+ {
+ "x": 277.86600000000004,
+ "y": 15.566000000000003
+ },
+ {
+ "x": 275.50399999999996,
+ "y": 14.704
+ },
+ {
+ "x": 272.878,
+ "y": 14.178
+ },
+ {
+ "x": 270.0,
+ "y": 14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 286.0,
+ "y": 30.0
+ },
+ {
+ "x": 285.822,
+ "y": 27.234
+ },
+ {
+ "x": 285.296,
+ "y": 24.912
+ },
+ {
+ "x": 284.434,
+ "y": 22.998
+ },
+ {
+ "x": 283.248,
+ "y": 21.456000000000003
+ },
+ {
+ "x": 281.75,
+ "y": 20.25
+ },
+ {
+ "x": 279.952,
+ "y": 19.343999999999998
+ },
+ {
+ "x": 277.86600000000004,
+ "y": 18.702
+ },
+ {
+ "x": 275.50399999999996,
+ "y": 18.288000000000004
+ },
+ {
+ "x": 272.878,
+ "y": 18.066
+ },
+ {
+ "x": 270.0,
+ "y": 18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 286.0,
+ "y": 30.0
+ },
+ {
+ "x": 285.822,
+ "y": 27.346
+ },
+ {
+ "x": 285.296,
+ "y": 25.328
+ },
+ {
+ "x": 284.434,
+ "y": 23.862000000000002
+ },
+ {
+ "x": 283.248,
+ "y": 22.864
+ },
+ {
+ "x": 281.75,
+ "y": 22.25
+ },
+ {
+ "x": 279.952,
+ "y": 21.936
+ },
+ {
+ "x": 277.86600000000004,
+ "y": 21.838
+ },
+ {
+ "x": 275.50399999999996,
+ "y": 21.872
+ },
+ {
+ "x": 272.878,
+ "y": 21.954
+ },
+ {
+ "x": 270.0,
+ "y": 22.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "go_straight",
+ "startRoad": "road_2_2_3",
+ "endRoad": "road_2_1_3",
+ "direction": 3,
+ "laneLinks": [
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 294.0,
+ "y": 30.0
+ },
+ {
+ "x": 294.11199999999997,
+ "y": 26.16
+ },
+ {
+ "x": 294.416,
+ "y": 20.88
+ },
+ {
+ "x": 294.86400000000003,
+ "y": 14.52
+ },
+ {
+ "x": 295.408,
+ "y": 7.439999999999998
+ },
+ {
+ "x": 296.0,
+ "y": 0.0
+ },
+ {
+ "x": 296.592,
+ "y": -7.440000000000009
+ },
+ {
+ "x": 297.136,
+ "y": -14.519999999999992
+ },
+ {
+ "x": 297.584,
+ "y": -20.880000000000006
+ },
+ {
+ "x": 297.88800000000003,
+ "y": -26.16
+ },
+ {
+ "x": 298.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 294.0,
+ "y": 30.0
+ },
+ {
+ "x": 294.0,
+ "y": 26.16
+ },
+ {
+ "x": 294.0,
+ "y": 20.88
+ },
+ {
+ "x": 294.0,
+ "y": 14.52
+ },
+ {
+ "x": 294.0,
+ "y": 7.439999999999998
+ },
+ {
+ "x": 294.0,
+ "y": 0.0
+ },
+ {
+ "x": 294.0,
+ "y": -7.440000000000009
+ },
+ {
+ "x": 294.0,
+ "y": -14.519999999999992
+ },
+ {
+ "x": 294.0,
+ "y": -20.880000000000006
+ },
+ {
+ "x": 294.0,
+ "y": -26.16
+ },
+ {
+ "x": 294.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 294.0,
+ "y": 30.0
+ },
+ {
+ "x": 293.888,
+ "y": 26.16
+ },
+ {
+ "x": 293.584,
+ "y": 20.88
+ },
+ {
+ "x": 293.136,
+ "y": 14.52
+ },
+ {
+ "x": 292.592,
+ "y": 7.439999999999998
+ },
+ {
+ "x": 292.0,
+ "y": 0.0
+ },
+ {
+ "x": 291.408,
+ "y": -7.440000000000009
+ },
+ {
+ "x": 290.86400000000003,
+ "y": -14.519999999999992
+ },
+ {
+ "x": 290.416,
+ "y": -20.880000000000006
+ },
+ {
+ "x": 290.112,
+ "y": -26.16
+ },
+ {
+ "x": 290.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 294.0,
+ "y": 30.0
+ },
+ {
+ "x": 293.77599999999995,
+ "y": 26.16
+ },
+ {
+ "x": 293.168,
+ "y": 20.88
+ },
+ {
+ "x": 292.27200000000005,
+ "y": 14.52
+ },
+ {
+ "x": 291.18399999999997,
+ "y": 7.439999999999998
+ },
+ {
+ "x": 290.0,
+ "y": 0.0
+ },
+ {
+ "x": 288.816,
+ "y": -7.440000000000009
+ },
+ {
+ "x": 287.728,
+ "y": -14.519999999999992
+ },
+ {
+ "x": 286.832,
+ "y": -20.880000000000006
+ },
+ {
+ "x": 286.22400000000005,
+ "y": -26.16
+ },
+ {
+ "x": 286.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 290.0,
+ "y": 30.0
+ },
+ {
+ "x": 290.224,
+ "y": 26.16
+ },
+ {
+ "x": 290.83200000000005,
+ "y": 20.88
+ },
+ {
+ "x": 291.728,
+ "y": 14.52
+ },
+ {
+ "x": 292.81600000000003,
+ "y": 7.439999999999998
+ },
+ {
+ "x": 294.0,
+ "y": 0.0
+ },
+ {
+ "x": 295.18399999999997,
+ "y": -7.440000000000009
+ },
+ {
+ "x": 296.272,
+ "y": -14.519999999999992
+ },
+ {
+ "x": 297.168,
+ "y": -20.880000000000006
+ },
+ {
+ "x": 297.776,
+ "y": -26.16
+ },
+ {
+ "x": 298.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 290.0,
+ "y": 30.0
+ },
+ {
+ "x": 290.112,
+ "y": 26.16
+ },
+ {
+ "x": 290.41600000000005,
+ "y": 20.88
+ },
+ {
+ "x": 290.86400000000003,
+ "y": 14.52
+ },
+ {
+ "x": 291.408,
+ "y": 7.439999999999998
+ },
+ {
+ "x": 292.0,
+ "y": 0.0
+ },
+ {
+ "x": 292.592,
+ "y": -7.440000000000009
+ },
+ {
+ "x": 293.136,
+ "y": -14.519999999999992
+ },
+ {
+ "x": 293.584,
+ "y": -20.880000000000006
+ },
+ {
+ "x": 293.888,
+ "y": -26.16
+ },
+ {
+ "x": 294.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 290.0,
+ "y": 30.0
+ },
+ {
+ "x": 290.0,
+ "y": 26.16
+ },
+ {
+ "x": 290.00000000000006,
+ "y": 20.88
+ },
+ {
+ "x": 290.0,
+ "y": 14.52
+ },
+ {
+ "x": 290.0,
+ "y": 7.439999999999998
+ },
+ {
+ "x": 290.0,
+ "y": 0.0
+ },
+ {
+ "x": 290.0,
+ "y": -7.440000000000009
+ },
+ {
+ "x": 290.0,
+ "y": -14.519999999999992
+ },
+ {
+ "x": 290.0,
+ "y": -20.880000000000006
+ },
+ {
+ "x": 290.0,
+ "y": -26.16
+ },
+ {
+ "x": 290.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 290.0,
+ "y": 30.0
+ },
+ {
+ "x": 289.888,
+ "y": 26.16
+ },
+ {
+ "x": 289.58400000000006,
+ "y": 20.88
+ },
+ {
+ "x": 289.136,
+ "y": 14.52
+ },
+ {
+ "x": 288.592,
+ "y": 7.439999999999998
+ },
+ {
+ "x": 288.0,
+ "y": 0.0
+ },
+ {
+ "x": 287.408,
+ "y": -7.440000000000009
+ },
+ {
+ "x": 286.86400000000003,
+ "y": -14.519999999999992
+ },
+ {
+ "x": 286.416,
+ "y": -20.880000000000006
+ },
+ {
+ "x": 286.112,
+ "y": -26.16
+ },
+ {
+ "x": 286.0,
+ "y": -30.0
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "trafficLight": {
+ "roadLinkIndices": [
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "lightphases": [
+ {
+ "time": 30,
+ "availableRoadLinks": [
+ 0,
+ 2,
+ 3,
+ 6,
+ 7,
+ 10
+ ]
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": [
+ 10,
+ 2,
+ 3,
+ 6
+ ]
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": [
+ 1,
+ 2,
+ 3,
+ 6,
+ 8,
+ 10
+ ]
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": [
+ 10,
+ 2,
+ 3,
+ 6
+ ]
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": [
+ 2,
+ 3,
+ 4,
+ 6,
+ 10,
+ 11
+ ]
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": [
+ 10,
+ 2,
+ 3,
+ 6
+ ]
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": [
+ 2,
+ 3,
+ 5,
+ 6,
+ 9,
+ 10
+ ]
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": [
+ 10,
+ 2,
+ 3,
+ 6
+ ]
+ }
+ ]
+ },
+ "virtual": false
+ },
+ {
+ "id": "intersection_3_1",
+ "point": {
+ "x": 600,
+ "y": 0
+ },
+ "width": 30,
+ "roads": [
+ "road_2_1_0",
+ "road_3_0_1",
+ "road_4_1_2",
+ "road_3_2_3",
+ "road_3_1_0",
+ "road_3_1_1",
+ "road_3_1_2",
+ "road_3_1_3"
+ ],
+ "roadLinks": [
+ {
+ "type": "go_straight",
+ "startRoad": "road_2_1_0",
+ "endRoad": "road_3_1_0",
+ "direction": 0,
+ "laneLinks": [
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -10.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": -9.775999999999998
+ },
+ {
+ "x": 579.12,
+ "y": -9.168000000000001
+ },
+ {
+ "x": 585.48,
+ "y": -8.272
+ },
+ {
+ "x": 592.5600000000001,
+ "y": -7.183999999999999
+ },
+ {
+ "x": 600.0,
+ "y": -6.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": -4.815999999999999
+ },
+ {
+ "x": 614.5200000000001,
+ "y": -3.7280000000000006
+ },
+ {
+ "x": 620.88,
+ "y": -2.831999999999999
+ },
+ {
+ "x": 626.1600000000001,
+ "y": -2.224
+ },
+ {
+ "x": 630.0,
+ "y": -2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -10.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": -9.887999999999998
+ },
+ {
+ "x": 579.12,
+ "y": -9.584000000000001
+ },
+ {
+ "x": 585.48,
+ "y": -9.136
+ },
+ {
+ "x": 592.5600000000001,
+ "y": -8.591999999999999
+ },
+ {
+ "x": 600.0,
+ "y": -8.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": -7.4079999999999995
+ },
+ {
+ "x": 614.5200000000001,
+ "y": -6.864000000000001
+ },
+ {
+ "x": 620.88,
+ "y": -6.416
+ },
+ {
+ "x": 626.1600000000001,
+ "y": -6.112
+ },
+ {
+ "x": 630.0,
+ "y": -6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -10.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": -9.999999999999998
+ },
+ {
+ "x": 579.12,
+ "y": -10.000000000000002
+ },
+ {
+ "x": 585.48,
+ "y": -10.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": -10.0
+ },
+ {
+ "x": 600.0,
+ "y": -10.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": -10.0
+ },
+ {
+ "x": 614.5200000000001,
+ "y": -10.0
+ },
+ {
+ "x": 620.88,
+ "y": -10.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": -10.0
+ },
+ {
+ "x": 630.0,
+ "y": -10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -10.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": -10.111999999999998
+ },
+ {
+ "x": 579.12,
+ "y": -10.416
+ },
+ {
+ "x": 585.48,
+ "y": -10.864
+ },
+ {
+ "x": 592.5600000000001,
+ "y": -11.408
+ },
+ {
+ "x": 600.0,
+ "y": -12.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": -12.592000000000002
+ },
+ {
+ "x": 614.5200000000001,
+ "y": -13.136
+ },
+ {
+ "x": 620.88,
+ "y": -13.584000000000001
+ },
+ {
+ "x": 626.1600000000001,
+ "y": -13.888000000000002
+ },
+ {
+ "x": 630.0,
+ "y": -14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -10.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": -10.223999999999998
+ },
+ {
+ "x": 579.12,
+ "y": -10.832
+ },
+ {
+ "x": 585.48,
+ "y": -11.728
+ },
+ {
+ "x": 592.5600000000001,
+ "y": -12.816
+ },
+ {
+ "x": 600.0,
+ "y": -14.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": -15.184000000000001
+ },
+ {
+ "x": 614.5200000000001,
+ "y": -16.272
+ },
+ {
+ "x": 620.88,
+ "y": -17.168000000000003
+ },
+ {
+ "x": 626.1600000000001,
+ "y": -17.776
+ },
+ {
+ "x": 630.0,
+ "y": -18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -10.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": -10.335999999999999
+ },
+ {
+ "x": 579.12,
+ "y": -11.248000000000001
+ },
+ {
+ "x": 585.48,
+ "y": -12.592
+ },
+ {
+ "x": 592.5600000000001,
+ "y": -14.224
+ },
+ {
+ "x": 600.0,
+ "y": -16.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": -17.776000000000003
+ },
+ {
+ "x": 614.5200000000001,
+ "y": -19.407999999999998
+ },
+ {
+ "x": 620.88,
+ "y": -20.752000000000002
+ },
+ {
+ "x": 626.1600000000001,
+ "y": -21.664
+ },
+ {
+ "x": 630.0,
+ "y": -22.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -14.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": -13.664
+ },
+ {
+ "x": 579.12,
+ "y": -12.752
+ },
+ {
+ "x": 585.48,
+ "y": -11.408000000000001
+ },
+ {
+ "x": 592.5600000000001,
+ "y": -9.776
+ },
+ {
+ "x": 600.0,
+ "y": -8.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": -6.223999999999998
+ },
+ {
+ "x": 614.5200000000001,
+ "y": -4.5920000000000005
+ },
+ {
+ "x": 620.88,
+ "y": -3.2479999999999984
+ },
+ {
+ "x": 626.1600000000001,
+ "y": -2.3360000000000003
+ },
+ {
+ "x": 630.0,
+ "y": -2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -14.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": -13.776
+ },
+ {
+ "x": 579.12,
+ "y": -13.168000000000001
+ },
+ {
+ "x": 585.48,
+ "y": -12.272000000000002
+ },
+ {
+ "x": 592.5600000000001,
+ "y": -11.184
+ },
+ {
+ "x": 600.0,
+ "y": -10.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": -8.815999999999999
+ },
+ {
+ "x": 614.5200000000001,
+ "y": -7.728000000000001
+ },
+ {
+ "x": 620.88,
+ "y": -6.831999999999999
+ },
+ {
+ "x": 626.1600000000001,
+ "y": -6.224
+ },
+ {
+ "x": 630.0,
+ "y": -6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -14.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": -13.888
+ },
+ {
+ "x": 579.12,
+ "y": -13.584000000000001
+ },
+ {
+ "x": 585.48,
+ "y": -13.136000000000001
+ },
+ {
+ "x": 592.5600000000001,
+ "y": -12.592
+ },
+ {
+ "x": 600.0,
+ "y": -12.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": -11.408
+ },
+ {
+ "x": 614.5200000000001,
+ "y": -10.864
+ },
+ {
+ "x": 620.88,
+ "y": -10.415999999999999
+ },
+ {
+ "x": 626.1600000000001,
+ "y": -10.111999999999998
+ },
+ {
+ "x": 630.0,
+ "y": -10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -14.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": -14.0
+ },
+ {
+ "x": 579.12,
+ "y": -14.0
+ },
+ {
+ "x": 585.48,
+ "y": -14.000000000000002
+ },
+ {
+ "x": 592.5600000000001,
+ "y": -14.0
+ },
+ {
+ "x": 600.0,
+ "y": -14.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": -14.0
+ },
+ {
+ "x": 614.5200000000001,
+ "y": -14.0
+ },
+ {
+ "x": 620.88,
+ "y": -14.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": -14.0
+ },
+ {
+ "x": 630.0,
+ "y": -14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -14.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": -14.112
+ },
+ {
+ "x": 579.12,
+ "y": -14.416
+ },
+ {
+ "x": 585.48,
+ "y": -14.864
+ },
+ {
+ "x": 592.5600000000001,
+ "y": -15.408000000000001
+ },
+ {
+ "x": 600.0,
+ "y": -16.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": -16.592
+ },
+ {
+ "x": 614.5200000000001,
+ "y": -17.136
+ },
+ {
+ "x": 620.88,
+ "y": -17.584000000000003
+ },
+ {
+ "x": 626.1600000000001,
+ "y": -17.887999999999998
+ },
+ {
+ "x": 630.0,
+ "y": -18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -14.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": -14.224
+ },
+ {
+ "x": 579.12,
+ "y": -14.832
+ },
+ {
+ "x": 585.48,
+ "y": -15.728000000000002
+ },
+ {
+ "x": 592.5600000000001,
+ "y": -16.816000000000003
+ },
+ {
+ "x": 600.0,
+ "y": -18.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": -19.184
+ },
+ {
+ "x": 614.5200000000001,
+ "y": -20.272
+ },
+ {
+ "x": 620.88,
+ "y": -21.168000000000003
+ },
+ {
+ "x": 626.1600000000001,
+ "y": -21.776
+ },
+ {
+ "x": 630.0,
+ "y": -22.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -18.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": -17.552
+ },
+ {
+ "x": 579.12,
+ "y": -16.336
+ },
+ {
+ "x": 585.48,
+ "y": -14.544
+ },
+ {
+ "x": 592.5600000000001,
+ "y": -12.367999999999999
+ },
+ {
+ "x": 600.0,
+ "y": -10.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": -7.631999999999998
+ },
+ {
+ "x": 614.5200000000001,
+ "y": -5.456000000000001
+ },
+ {
+ "x": 620.88,
+ "y": -3.663999999999998
+ },
+ {
+ "x": 626.1600000000001,
+ "y": -2.4480000000000004
+ },
+ {
+ "x": 630.0,
+ "y": -2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -18.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": -17.663999999999998
+ },
+ {
+ "x": 579.12,
+ "y": -16.752
+ },
+ {
+ "x": 585.48,
+ "y": -15.408000000000001
+ },
+ {
+ "x": 592.5600000000001,
+ "y": -13.775999999999998
+ },
+ {
+ "x": 600.0,
+ "y": -12.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": -10.223999999999998
+ },
+ {
+ "x": 614.5200000000001,
+ "y": -8.592000000000002
+ },
+ {
+ "x": 620.88,
+ "y": -7.247999999999999
+ },
+ {
+ "x": 626.1600000000001,
+ "y": -6.336
+ },
+ {
+ "x": 630.0,
+ "y": -6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -18.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": -17.776
+ },
+ {
+ "x": 579.12,
+ "y": -17.168
+ },
+ {
+ "x": 585.48,
+ "y": -16.272
+ },
+ {
+ "x": 592.5600000000001,
+ "y": -15.184
+ },
+ {
+ "x": 600.0,
+ "y": -14.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": -12.815999999999999
+ },
+ {
+ "x": 614.5200000000001,
+ "y": -11.728000000000002
+ },
+ {
+ "x": 620.88,
+ "y": -10.831999999999999
+ },
+ {
+ "x": 626.1600000000001,
+ "y": -10.224
+ },
+ {
+ "x": 630.0,
+ "y": -10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -18.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": -17.887999999999998
+ },
+ {
+ "x": 579.12,
+ "y": -17.584
+ },
+ {
+ "x": 585.48,
+ "y": -17.136
+ },
+ {
+ "x": 592.5600000000001,
+ "y": -16.592
+ },
+ {
+ "x": 600.0,
+ "y": -16.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": -15.408000000000001
+ },
+ {
+ "x": 614.5200000000001,
+ "y": -14.864
+ },
+ {
+ "x": 620.88,
+ "y": -14.416
+ },
+ {
+ "x": 626.1600000000001,
+ "y": -14.112000000000002
+ },
+ {
+ "x": 630.0,
+ "y": -14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -18.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": -18.0
+ },
+ {
+ "x": 579.12,
+ "y": -18.0
+ },
+ {
+ "x": 585.48,
+ "y": -18.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": -18.0
+ },
+ {
+ "x": 600.0,
+ "y": -18.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": -18.0
+ },
+ {
+ "x": 614.5200000000001,
+ "y": -18.0
+ },
+ {
+ "x": 620.88,
+ "y": -18.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": -18.0
+ },
+ {
+ "x": 630.0,
+ "y": -18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -18.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": -18.112
+ },
+ {
+ "x": 579.12,
+ "y": -18.416
+ },
+ {
+ "x": 585.48,
+ "y": -18.864
+ },
+ {
+ "x": 592.5600000000001,
+ "y": -19.408
+ },
+ {
+ "x": 600.0,
+ "y": -20.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": -20.592000000000002
+ },
+ {
+ "x": 614.5200000000001,
+ "y": -21.136
+ },
+ {
+ "x": 620.88,
+ "y": -21.584
+ },
+ {
+ "x": 626.1600000000001,
+ "y": -21.888
+ },
+ {
+ "x": 630.0,
+ "y": -22.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_left",
+ "startRoad": "road_2_1_0",
+ "endRoad": "road_3_1_1",
+ "direction": 0,
+ "laneLinks": [
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -2.0
+ },
+ {
+ "x": 573.3259999999999,
+ "y": -1.3739999999999999
+ },
+ {
+ "x": 577.1680000000001,
+ "y": 0.3680000000000003
+ },
+ {
+ "x": 581.322,
+ "y": 3.0220000000000007
+ },
+ {
+ "x": 585.5840000000001,
+ "y": 6.384000000000002
+ },
+ {
+ "x": 589.75,
+ "y": 10.25
+ },
+ {
+ "x": 593.616,
+ "y": 14.416000000000004
+ },
+ {
+ "x": 596.9780000000001,
+ "y": 18.677999999999997
+ },
+ {
+ "x": 599.632,
+ "y": 22.832000000000004
+ },
+ {
+ "x": 601.374,
+ "y": 26.674
+ },
+ {
+ "x": 602.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -2.0
+ },
+ {
+ "x": 573.4379999999999,
+ "y": -1.3739999999999999
+ },
+ {
+ "x": 577.5840000000001,
+ "y": 0.3680000000000003
+ },
+ {
+ "x": 582.186,
+ "y": 3.0220000000000007
+ },
+ {
+ "x": 586.992,
+ "y": 6.384000000000002
+ },
+ {
+ "x": 591.75,
+ "y": 10.25
+ },
+ {
+ "x": 596.2080000000001,
+ "y": 14.416000000000004
+ },
+ {
+ "x": 600.114,
+ "y": 18.677999999999997
+ },
+ {
+ "x": 603.216,
+ "y": 22.832000000000004
+ },
+ {
+ "x": 605.2620000000001,
+ "y": 26.674
+ },
+ {
+ "x": 606.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -2.0
+ },
+ {
+ "x": 573.55,
+ "y": -1.3739999999999999
+ },
+ {
+ "x": 578.0000000000001,
+ "y": 0.3680000000000003
+ },
+ {
+ "x": 583.0500000000001,
+ "y": 3.0220000000000007
+ },
+ {
+ "x": 588.4,
+ "y": 6.384000000000002
+ },
+ {
+ "x": 593.75,
+ "y": 10.25
+ },
+ {
+ "x": 598.8,
+ "y": 14.416000000000004
+ },
+ {
+ "x": 603.25,
+ "y": 18.677999999999997
+ },
+ {
+ "x": 606.8,
+ "y": 22.832000000000004
+ },
+ {
+ "x": 609.15,
+ "y": 26.674
+ },
+ {
+ "x": 610.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -2.0
+ },
+ {
+ "x": 573.6619999999999,
+ "y": -1.3739999999999999
+ },
+ {
+ "x": 578.416,
+ "y": 0.3680000000000003
+ },
+ {
+ "x": 583.914,
+ "y": 3.0220000000000007
+ },
+ {
+ "x": 589.808,
+ "y": 6.384000000000002
+ },
+ {
+ "x": 595.75,
+ "y": 10.25
+ },
+ {
+ "x": 601.392,
+ "y": 14.416000000000004
+ },
+ {
+ "x": 606.386,
+ "y": 18.677999999999997
+ },
+ {
+ "x": 610.384,
+ "y": 22.832000000000004
+ },
+ {
+ "x": 613.038,
+ "y": 26.674
+ },
+ {
+ "x": 614.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -6.0
+ },
+ {
+ "x": 573.3259999999999,
+ "y": -5.2620000000000005
+ },
+ {
+ "x": 577.1680000000001,
+ "y": -3.216
+ },
+ {
+ "x": 581.322,
+ "y": -0.11400000000000032
+ },
+ {
+ "x": 585.5840000000001,
+ "y": 3.792000000000002
+ },
+ {
+ "x": 589.75,
+ "y": 8.25
+ },
+ {
+ "x": 593.616,
+ "y": 13.008000000000006
+ },
+ {
+ "x": 596.9780000000001,
+ "y": 17.813999999999997
+ },
+ {
+ "x": 599.632,
+ "y": 22.416000000000004
+ },
+ {
+ "x": 601.374,
+ "y": 26.562
+ },
+ {
+ "x": 602.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -6.0
+ },
+ {
+ "x": 573.4379999999999,
+ "y": -5.2620000000000005
+ },
+ {
+ "x": 577.5840000000001,
+ "y": -3.216
+ },
+ {
+ "x": 582.186,
+ "y": -0.11400000000000032
+ },
+ {
+ "x": 586.992,
+ "y": 3.792000000000002
+ },
+ {
+ "x": 591.75,
+ "y": 8.25
+ },
+ {
+ "x": 596.2080000000001,
+ "y": 13.008000000000006
+ },
+ {
+ "x": 600.114,
+ "y": 17.813999999999997
+ },
+ {
+ "x": 603.216,
+ "y": 22.416000000000004
+ },
+ {
+ "x": 605.2620000000001,
+ "y": 26.562
+ },
+ {
+ "x": 606.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -6.0
+ },
+ {
+ "x": 573.55,
+ "y": -5.2620000000000005
+ },
+ {
+ "x": 578.0000000000001,
+ "y": -3.216
+ },
+ {
+ "x": 583.0500000000001,
+ "y": -0.11400000000000032
+ },
+ {
+ "x": 588.4,
+ "y": 3.792000000000002
+ },
+ {
+ "x": 593.75,
+ "y": 8.25
+ },
+ {
+ "x": 598.8,
+ "y": 13.008000000000006
+ },
+ {
+ "x": 603.25,
+ "y": 17.813999999999997
+ },
+ {
+ "x": 606.8,
+ "y": 22.416000000000004
+ },
+ {
+ "x": 609.15,
+ "y": 26.562
+ },
+ {
+ "x": 610.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -6.0
+ },
+ {
+ "x": 573.6619999999999,
+ "y": -5.2620000000000005
+ },
+ {
+ "x": 578.416,
+ "y": -3.216
+ },
+ {
+ "x": 583.914,
+ "y": -0.11400000000000032
+ },
+ {
+ "x": 589.808,
+ "y": 3.792000000000002
+ },
+ {
+ "x": 595.75,
+ "y": 8.25
+ },
+ {
+ "x": 601.392,
+ "y": 13.008000000000006
+ },
+ {
+ "x": 606.386,
+ "y": 17.813999999999997
+ },
+ {
+ "x": 610.384,
+ "y": 22.416000000000004
+ },
+ {
+ "x": 613.038,
+ "y": 26.562
+ },
+ {
+ "x": 614.0,
+ "y": 30.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_right",
+ "startRoad": "road_2_1_0",
+ "endRoad": "road_3_1_3",
+ "direction": 0,
+ "laneLinks": [
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -18.0
+ },
+ {
+ "x": 573.2139999999999,
+ "y": -18.066
+ },
+ {
+ "x": 576.7520000000001,
+ "y": -18.288
+ },
+ {
+ "x": 580.4580000000001,
+ "y": -18.701999999999998
+ },
+ {
+ "x": 584.176,
+ "y": -19.344
+ },
+ {
+ "x": 587.75,
+ "y": -20.25
+ },
+ {
+ "x": 591.024,
+ "y": -21.456000000000003
+ },
+ {
+ "x": 593.842,
+ "y": -22.997999999999998
+ },
+ {
+ "x": 596.048,
+ "y": -24.912
+ },
+ {
+ "x": 597.486,
+ "y": -27.234
+ },
+ {
+ "x": 598.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -18.0
+ },
+ {
+ "x": 573.1019999999999,
+ "y": -18.066
+ },
+ {
+ "x": 576.336,
+ "y": -18.288
+ },
+ {
+ "x": 579.594,
+ "y": -18.701999999999998
+ },
+ {
+ "x": 582.768,
+ "y": -19.344
+ },
+ {
+ "x": 585.75,
+ "y": -20.25
+ },
+ {
+ "x": 588.432,
+ "y": -21.456000000000003
+ },
+ {
+ "x": 590.706,
+ "y": -22.997999999999998
+ },
+ {
+ "x": 592.4639999999999,
+ "y": -24.912
+ },
+ {
+ "x": 593.598,
+ "y": -27.234
+ },
+ {
+ "x": 594.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -18.0
+ },
+ {
+ "x": 572.9899999999999,
+ "y": -18.066
+ },
+ {
+ "x": 575.9200000000001,
+ "y": -18.288
+ },
+ {
+ "x": 578.73,
+ "y": -18.701999999999998
+ },
+ {
+ "x": 581.36,
+ "y": -19.344
+ },
+ {
+ "x": 583.75,
+ "y": -20.25
+ },
+ {
+ "x": 585.8399999999999,
+ "y": -21.456000000000003
+ },
+ {
+ "x": 587.5699999999999,
+ "y": -22.997999999999998
+ },
+ {
+ "x": 588.88,
+ "y": -24.912
+ },
+ {
+ "x": 589.71,
+ "y": -27.234
+ },
+ {
+ "x": 590.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -18.0
+ },
+ {
+ "x": 572.8779999999999,
+ "y": -18.066
+ },
+ {
+ "x": 575.5040000000001,
+ "y": -18.288
+ },
+ {
+ "x": 577.866,
+ "y": -18.701999999999998
+ },
+ {
+ "x": 579.952,
+ "y": -19.344
+ },
+ {
+ "x": 581.75,
+ "y": -20.25
+ },
+ {
+ "x": 583.248,
+ "y": -21.456000000000003
+ },
+ {
+ "x": 584.434,
+ "y": -22.997999999999998
+ },
+ {
+ "x": 585.2959999999999,
+ "y": -24.912
+ },
+ {
+ "x": 585.822,
+ "y": -27.234
+ },
+ {
+ "x": 586.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -22.0
+ },
+ {
+ "x": 573.2139999999999,
+ "y": -21.954
+ },
+ {
+ "x": 576.7520000000001,
+ "y": -21.872
+ },
+ {
+ "x": 580.4580000000001,
+ "y": -21.838
+ },
+ {
+ "x": 584.176,
+ "y": -21.936000000000003
+ },
+ {
+ "x": 587.75,
+ "y": -22.25
+ },
+ {
+ "x": 591.024,
+ "y": -22.864
+ },
+ {
+ "x": 593.842,
+ "y": -23.862
+ },
+ {
+ "x": 596.048,
+ "y": -25.328
+ },
+ {
+ "x": 597.486,
+ "y": -27.346
+ },
+ {
+ "x": 598.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -22.0
+ },
+ {
+ "x": 573.1019999999999,
+ "y": -21.954
+ },
+ {
+ "x": 576.336,
+ "y": -21.872
+ },
+ {
+ "x": 579.594,
+ "y": -21.838
+ },
+ {
+ "x": 582.768,
+ "y": -21.936000000000003
+ },
+ {
+ "x": 585.75,
+ "y": -22.25
+ },
+ {
+ "x": 588.432,
+ "y": -22.864
+ },
+ {
+ "x": 590.706,
+ "y": -23.862
+ },
+ {
+ "x": 592.4639999999999,
+ "y": -25.328
+ },
+ {
+ "x": 593.598,
+ "y": -27.346
+ },
+ {
+ "x": 594.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -22.0
+ },
+ {
+ "x": 572.9899999999999,
+ "y": -21.954
+ },
+ {
+ "x": 575.9200000000001,
+ "y": -21.872
+ },
+ {
+ "x": 578.73,
+ "y": -21.838
+ },
+ {
+ "x": 581.36,
+ "y": -21.936000000000003
+ },
+ {
+ "x": 583.75,
+ "y": -22.25
+ },
+ {
+ "x": 585.8399999999999,
+ "y": -22.864
+ },
+ {
+ "x": 587.5699999999999,
+ "y": -23.862
+ },
+ {
+ "x": 588.88,
+ "y": -25.328
+ },
+ {
+ "x": 589.71,
+ "y": -27.346
+ },
+ {
+ "x": 590.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 570.0,
+ "y": -22.0
+ },
+ {
+ "x": 572.8779999999999,
+ "y": -21.954
+ },
+ {
+ "x": 575.5040000000001,
+ "y": -21.872
+ },
+ {
+ "x": 577.866,
+ "y": -21.838
+ },
+ {
+ "x": 579.952,
+ "y": -21.936000000000003
+ },
+ {
+ "x": 581.75,
+ "y": -22.25
+ },
+ {
+ "x": 583.248,
+ "y": -22.864
+ },
+ {
+ "x": 584.434,
+ "y": -23.862
+ },
+ {
+ "x": 585.2959999999999,
+ "y": -25.328
+ },
+ {
+ "x": 585.822,
+ "y": -27.346
+ },
+ {
+ "x": 586.0,
+ "y": -30.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_right",
+ "startRoad": "road_3_0_1",
+ "endRoad": "road_3_1_0",
+ "direction": 1,
+ "laneLinks": [
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 614.0,
+ "y": -30.0
+ },
+ {
+ "x": 614.178,
+ "y": -26.786
+ },
+ {
+ "x": 614.704,
+ "y": -23.247999999999998
+ },
+ {
+ "x": 615.566,
+ "y": -19.541999999999998
+ },
+ {
+ "x": 616.7520000000001,
+ "y": -15.824
+ },
+ {
+ "x": 618.25,
+ "y": -12.25
+ },
+ {
+ "x": 620.0479999999999,
+ "y": -8.975999999999996
+ },
+ {
+ "x": 622.134,
+ "y": -6.158000000000003
+ },
+ {
+ "x": 624.496,
+ "y": -3.9519999999999986
+ },
+ {
+ "x": 627.1220000000001,
+ "y": -2.5140000000000002
+ },
+ {
+ "x": 630.0,
+ "y": -2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 614.0,
+ "y": -30.0
+ },
+ {
+ "x": 614.178,
+ "y": -26.898
+ },
+ {
+ "x": 614.704,
+ "y": -23.663999999999998
+ },
+ {
+ "x": 615.566,
+ "y": -20.406
+ },
+ {
+ "x": 616.7520000000001,
+ "y": -17.232
+ },
+ {
+ "x": 618.25,
+ "y": -14.25
+ },
+ {
+ "x": 620.0479999999999,
+ "y": -11.567999999999998
+ },
+ {
+ "x": 622.134,
+ "y": -9.294000000000004
+ },
+ {
+ "x": 624.496,
+ "y": -7.536
+ },
+ {
+ "x": 627.1220000000001,
+ "y": -6.402
+ },
+ {
+ "x": 630.0,
+ "y": -6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 614.0,
+ "y": -30.0
+ },
+ {
+ "x": 614.178,
+ "y": -27.01
+ },
+ {
+ "x": 614.704,
+ "y": -24.08
+ },
+ {
+ "x": 615.566,
+ "y": -21.27
+ },
+ {
+ "x": 616.7520000000001,
+ "y": -18.64
+ },
+ {
+ "x": 618.25,
+ "y": -16.25
+ },
+ {
+ "x": 620.0479999999999,
+ "y": -14.159999999999997
+ },
+ {
+ "x": 622.134,
+ "y": -12.430000000000003
+ },
+ {
+ "x": 624.496,
+ "y": -11.12
+ },
+ {
+ "x": 627.1220000000001,
+ "y": -10.29
+ },
+ {
+ "x": 630.0,
+ "y": -10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 614.0,
+ "y": -30.0
+ },
+ {
+ "x": 614.178,
+ "y": -27.122
+ },
+ {
+ "x": 614.704,
+ "y": -24.496
+ },
+ {
+ "x": 615.566,
+ "y": -22.134
+ },
+ {
+ "x": 616.7520000000001,
+ "y": -20.048000000000002
+ },
+ {
+ "x": 618.25,
+ "y": -18.25
+ },
+ {
+ "x": 620.0479999999999,
+ "y": -16.752
+ },
+ {
+ "x": 622.134,
+ "y": -15.566000000000003
+ },
+ {
+ "x": 624.496,
+ "y": -14.704
+ },
+ {
+ "x": 627.1220000000001,
+ "y": -14.178
+ },
+ {
+ "x": 630.0,
+ "y": -14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 614.0,
+ "y": -30.0
+ },
+ {
+ "x": 614.178,
+ "y": -27.234
+ },
+ {
+ "x": 614.704,
+ "y": -24.912
+ },
+ {
+ "x": 615.566,
+ "y": -22.998
+ },
+ {
+ "x": 616.7520000000001,
+ "y": -21.456000000000003
+ },
+ {
+ "x": 618.25,
+ "y": -20.25
+ },
+ {
+ "x": 620.0479999999999,
+ "y": -19.343999999999998
+ },
+ {
+ "x": 622.134,
+ "y": -18.702
+ },
+ {
+ "x": 624.496,
+ "y": -18.288000000000004
+ },
+ {
+ "x": 627.1220000000001,
+ "y": -18.066
+ },
+ {
+ "x": 630.0,
+ "y": -18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 614.0,
+ "y": -30.0
+ },
+ {
+ "x": 614.178,
+ "y": -27.346
+ },
+ {
+ "x": 614.704,
+ "y": -25.328
+ },
+ {
+ "x": 615.566,
+ "y": -23.862000000000002
+ },
+ {
+ "x": 616.7520000000001,
+ "y": -22.864
+ },
+ {
+ "x": 618.25,
+ "y": -22.25
+ },
+ {
+ "x": 620.0479999999999,
+ "y": -21.936
+ },
+ {
+ "x": 622.134,
+ "y": -21.838
+ },
+ {
+ "x": 624.496,
+ "y": -21.872
+ },
+ {
+ "x": 627.1220000000001,
+ "y": -21.954
+ },
+ {
+ "x": 630.0,
+ "y": -22.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "go_straight",
+ "startRoad": "road_3_0_1",
+ "endRoad": "road_3_1_1",
+ "direction": 1,
+ "laneLinks": [
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 606.0,
+ "y": -30.0
+ },
+ {
+ "x": 605.888,
+ "y": -26.16
+ },
+ {
+ "x": 605.5840000000001,
+ "y": -20.88
+ },
+ {
+ "x": 605.1360000000001,
+ "y": -14.52
+ },
+ {
+ "x": 604.592,
+ "y": -7.439999999999998
+ },
+ {
+ "x": 604.0,
+ "y": 0.0
+ },
+ {
+ "x": 603.408,
+ "y": 7.440000000000009
+ },
+ {
+ "x": 602.864,
+ "y": 14.519999999999992
+ },
+ {
+ "x": 602.4159999999999,
+ "y": 20.880000000000006
+ },
+ {
+ "x": 602.112,
+ "y": 26.16
+ },
+ {
+ "x": 602.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 606.0,
+ "y": -30.0
+ },
+ {
+ "x": 606.0,
+ "y": -26.16
+ },
+ {
+ "x": 606.0,
+ "y": -20.88
+ },
+ {
+ "x": 606.0,
+ "y": -14.52
+ },
+ {
+ "x": 606.0,
+ "y": -7.439999999999998
+ },
+ {
+ "x": 606.0,
+ "y": 0.0
+ },
+ {
+ "x": 606.0,
+ "y": 7.440000000000009
+ },
+ {
+ "x": 606.0,
+ "y": 14.519999999999992
+ },
+ {
+ "x": 606.0,
+ "y": 20.880000000000006
+ },
+ {
+ "x": 606.0,
+ "y": 26.16
+ },
+ {
+ "x": 606.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 606.0,
+ "y": -30.0
+ },
+ {
+ "x": 606.1120000000001,
+ "y": -26.16
+ },
+ {
+ "x": 606.416,
+ "y": -20.88
+ },
+ {
+ "x": 606.864,
+ "y": -14.52
+ },
+ {
+ "x": 607.408,
+ "y": -7.439999999999998
+ },
+ {
+ "x": 608.0,
+ "y": 0.0
+ },
+ {
+ "x": 608.592,
+ "y": 7.440000000000009
+ },
+ {
+ "x": 609.136,
+ "y": 14.519999999999992
+ },
+ {
+ "x": 609.584,
+ "y": 20.880000000000006
+ },
+ {
+ "x": 609.8879999999999,
+ "y": 26.16
+ },
+ {
+ "x": 610.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 606.0,
+ "y": -30.0
+ },
+ {
+ "x": 606.224,
+ "y": -26.16
+ },
+ {
+ "x": 606.832,
+ "y": -20.88
+ },
+ {
+ "x": 607.7280000000001,
+ "y": -14.52
+ },
+ {
+ "x": 608.816,
+ "y": -7.439999999999998
+ },
+ {
+ "x": 610.0,
+ "y": 0.0
+ },
+ {
+ "x": 611.184,
+ "y": 7.440000000000009
+ },
+ {
+ "x": 612.272,
+ "y": 14.519999999999992
+ },
+ {
+ "x": 613.168,
+ "y": 20.880000000000006
+ },
+ {
+ "x": 613.776,
+ "y": 26.16
+ },
+ {
+ "x": 614.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 610.0,
+ "y": -30.0
+ },
+ {
+ "x": 609.776,
+ "y": -26.16
+ },
+ {
+ "x": 609.1680000000001,
+ "y": -20.88
+ },
+ {
+ "x": 608.272,
+ "y": -14.52
+ },
+ {
+ "x": 607.184,
+ "y": -7.439999999999998
+ },
+ {
+ "x": 606.0,
+ "y": 0.0
+ },
+ {
+ "x": 604.816,
+ "y": 7.440000000000009
+ },
+ {
+ "x": 603.7280000000001,
+ "y": 14.519999999999992
+ },
+ {
+ "x": 602.832,
+ "y": 20.880000000000006
+ },
+ {
+ "x": 602.224,
+ "y": 26.16
+ },
+ {
+ "x": 602.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 610.0,
+ "y": -30.0
+ },
+ {
+ "x": 609.8879999999999,
+ "y": -26.16
+ },
+ {
+ "x": 609.5840000000001,
+ "y": -20.88
+ },
+ {
+ "x": 609.136,
+ "y": -14.52
+ },
+ {
+ "x": 608.5920000000001,
+ "y": -7.439999999999998
+ },
+ {
+ "x": 608.0,
+ "y": 0.0
+ },
+ {
+ "x": 607.408,
+ "y": 7.440000000000009
+ },
+ {
+ "x": 606.864,
+ "y": 14.519999999999992
+ },
+ {
+ "x": 606.416,
+ "y": 20.880000000000006
+ },
+ {
+ "x": 606.1120000000001,
+ "y": 26.16
+ },
+ {
+ "x": 606.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 610.0,
+ "y": -30.0
+ },
+ {
+ "x": 610.0,
+ "y": -26.16
+ },
+ {
+ "x": 610.0000000000001,
+ "y": -20.88
+ },
+ {
+ "x": 610.0,
+ "y": -14.52
+ },
+ {
+ "x": 610.0,
+ "y": -7.439999999999998
+ },
+ {
+ "x": 610.0,
+ "y": 0.0
+ },
+ {
+ "x": 610.0,
+ "y": 7.440000000000009
+ },
+ {
+ "x": 610.0,
+ "y": 14.519999999999992
+ },
+ {
+ "x": 610.0,
+ "y": 20.880000000000006
+ },
+ {
+ "x": 610.0,
+ "y": 26.16
+ },
+ {
+ "x": 610.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 610.0,
+ "y": -30.0
+ },
+ {
+ "x": 610.112,
+ "y": -26.16
+ },
+ {
+ "x": 610.416,
+ "y": -20.88
+ },
+ {
+ "x": 610.864,
+ "y": -14.52
+ },
+ {
+ "x": 611.408,
+ "y": -7.439999999999998
+ },
+ {
+ "x": 612.0,
+ "y": 0.0
+ },
+ {
+ "x": 612.592,
+ "y": 7.440000000000009
+ },
+ {
+ "x": 613.136,
+ "y": 14.519999999999992
+ },
+ {
+ "x": 613.5840000000001,
+ "y": 20.880000000000006
+ },
+ {
+ "x": 613.888,
+ "y": 26.16
+ },
+ {
+ "x": 614.0,
+ "y": 30.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_left",
+ "startRoad": "road_3_0_1",
+ "endRoad": "road_3_1_2",
+ "direction": 1,
+ "laneLinks": [
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 602.0,
+ "y": -30.0
+ },
+ {
+ "x": 601.374,
+ "y": -26.674
+ },
+ {
+ "x": 599.6320000000001,
+ "y": -22.832
+ },
+ {
+ "x": 596.9780000000001,
+ "y": -18.678
+ },
+ {
+ "x": 593.616,
+ "y": -14.415999999999999
+ },
+ {
+ "x": 589.75,
+ "y": -10.25
+ },
+ {
+ "x": 585.5840000000001,
+ "y": -6.383999999999996
+ },
+ {
+ "x": 581.322,
+ "y": -3.022000000000004
+ },
+ {
+ "x": 577.168,
+ "y": -0.3679999999999981
+ },
+ {
+ "x": 573.3259999999999,
+ "y": 1.3739999999999994
+ },
+ {
+ "x": 570.0,
+ "y": 2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 602.0,
+ "y": -30.0
+ },
+ {
+ "x": 601.374,
+ "y": -26.562
+ },
+ {
+ "x": 599.6320000000001,
+ "y": -22.416
+ },
+ {
+ "x": 596.9780000000001,
+ "y": -17.814
+ },
+ {
+ "x": 593.616,
+ "y": -13.008
+ },
+ {
+ "x": 589.75,
+ "y": -8.25
+ },
+ {
+ "x": 585.5840000000001,
+ "y": -3.7919999999999954
+ },
+ {
+ "x": 581.322,
+ "y": 0.11399999999999633
+ },
+ {
+ "x": 577.168,
+ "y": 3.216000000000003
+ },
+ {
+ "x": 573.3259999999999,
+ "y": 5.262
+ },
+ {
+ "x": 570.0,
+ "y": 6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 602.0,
+ "y": -30.0
+ },
+ {
+ "x": 601.374,
+ "y": -26.45
+ },
+ {
+ "x": 599.6320000000001,
+ "y": -22.0
+ },
+ {
+ "x": 596.9780000000001,
+ "y": -16.95
+ },
+ {
+ "x": 593.616,
+ "y": -11.599999999999998
+ },
+ {
+ "x": 589.75,
+ "y": -6.25
+ },
+ {
+ "x": 585.5840000000001,
+ "y": -1.1999999999999948
+ },
+ {
+ "x": 581.322,
+ "y": 3.2499999999999956
+ },
+ {
+ "x": 577.168,
+ "y": 6.8000000000000025
+ },
+ {
+ "x": 573.3259999999999,
+ "y": 9.149999999999999
+ },
+ {
+ "x": 570.0,
+ "y": 10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 602.0,
+ "y": -30.0
+ },
+ {
+ "x": 601.374,
+ "y": -26.338
+ },
+ {
+ "x": 599.6320000000001,
+ "y": -21.584
+ },
+ {
+ "x": 596.9780000000001,
+ "y": -16.086
+ },
+ {
+ "x": 593.616,
+ "y": -10.191999999999998
+ },
+ {
+ "x": 589.75,
+ "y": -4.25
+ },
+ {
+ "x": 585.5840000000001,
+ "y": 1.3920000000000066
+ },
+ {
+ "x": 581.322,
+ "y": 6.385999999999996
+ },
+ {
+ "x": 577.168,
+ "y": 10.384000000000004
+ },
+ {
+ "x": 573.3259999999999,
+ "y": 13.038
+ },
+ {
+ "x": 570.0,
+ "y": 14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 602.0,
+ "y": -30.0
+ },
+ {
+ "x": 601.374,
+ "y": -26.226
+ },
+ {
+ "x": 599.6320000000001,
+ "y": -21.168
+ },
+ {
+ "x": 596.9780000000001,
+ "y": -15.222
+ },
+ {
+ "x": 593.616,
+ "y": -8.783999999999997
+ },
+ {
+ "x": 589.75,
+ "y": -2.25
+ },
+ {
+ "x": 585.5840000000001,
+ "y": 3.9840000000000053
+ },
+ {
+ "x": 581.322,
+ "y": 9.521999999999995
+ },
+ {
+ "x": 577.168,
+ "y": 13.968000000000005
+ },
+ {
+ "x": 573.3259999999999,
+ "y": 16.926
+ },
+ {
+ "x": 570.0,
+ "y": 18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 602.0,
+ "y": -30.0
+ },
+ {
+ "x": 601.374,
+ "y": -26.114
+ },
+ {
+ "x": 599.6320000000001,
+ "y": -20.752
+ },
+ {
+ "x": 596.9780000000001,
+ "y": -14.357999999999999
+ },
+ {
+ "x": 593.616,
+ "y": -7.375999999999998
+ },
+ {
+ "x": 589.75,
+ "y": -0.25
+ },
+ {
+ "x": 585.5840000000001,
+ "y": 6.576000000000008
+ },
+ {
+ "x": 581.322,
+ "y": 12.657999999999994
+ },
+ {
+ "x": 577.168,
+ "y": 17.552000000000007
+ },
+ {
+ "x": 573.3259999999999,
+ "y": 20.814
+ },
+ {
+ "x": 570.0,
+ "y": 22.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_right",
+ "startRoad": "road_4_1_2",
+ "endRoad": "road_3_1_1",
+ "direction": 2,
+ "laneLinks": [
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 18.0
+ },
+ {
+ "x": 626.7860000000001,
+ "y": 18.066
+ },
+ {
+ "x": 623.248,
+ "y": 18.288
+ },
+ {
+ "x": 619.542,
+ "y": 18.701999999999998
+ },
+ {
+ "x": 615.8240000000001,
+ "y": 19.344
+ },
+ {
+ "x": 612.25,
+ "y": 20.25
+ },
+ {
+ "x": 608.976,
+ "y": 21.456000000000003
+ },
+ {
+ "x": 606.158,
+ "y": 22.997999999999998
+ },
+ {
+ "x": 603.952,
+ "y": 24.912
+ },
+ {
+ "x": 602.514,
+ "y": 27.234
+ },
+ {
+ "x": 602.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 18.0
+ },
+ {
+ "x": 626.898,
+ "y": 18.066
+ },
+ {
+ "x": 623.664,
+ "y": 18.288
+ },
+ {
+ "x": 620.406,
+ "y": 18.701999999999998
+ },
+ {
+ "x": 617.232,
+ "y": 19.344
+ },
+ {
+ "x": 614.25,
+ "y": 20.25
+ },
+ {
+ "x": 611.568,
+ "y": 21.456000000000003
+ },
+ {
+ "x": 609.294,
+ "y": 22.997999999999998
+ },
+ {
+ "x": 607.5360000000001,
+ "y": 24.912
+ },
+ {
+ "x": 606.402,
+ "y": 27.234
+ },
+ {
+ "x": 606.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 18.0
+ },
+ {
+ "x": 627.0100000000001,
+ "y": 18.066
+ },
+ {
+ "x": 624.08,
+ "y": 18.288
+ },
+ {
+ "x": 621.27,
+ "y": 18.701999999999998
+ },
+ {
+ "x": 618.64,
+ "y": 19.344
+ },
+ {
+ "x": 616.25,
+ "y": 20.25
+ },
+ {
+ "x": 614.16,
+ "y": 21.456000000000003
+ },
+ {
+ "x": 612.4300000000001,
+ "y": 22.997999999999998
+ },
+ {
+ "x": 611.12,
+ "y": 24.912
+ },
+ {
+ "x": 610.29,
+ "y": 27.234
+ },
+ {
+ "x": 610.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 18.0
+ },
+ {
+ "x": 627.1220000000001,
+ "y": 18.066
+ },
+ {
+ "x": 624.496,
+ "y": 18.288
+ },
+ {
+ "x": 622.134,
+ "y": 18.701999999999998
+ },
+ {
+ "x": 620.048,
+ "y": 19.344
+ },
+ {
+ "x": 618.25,
+ "y": 20.25
+ },
+ {
+ "x": 616.752,
+ "y": 21.456000000000003
+ },
+ {
+ "x": 615.566,
+ "y": 22.997999999999998
+ },
+ {
+ "x": 614.7040000000001,
+ "y": 24.912
+ },
+ {
+ "x": 614.178,
+ "y": 27.234
+ },
+ {
+ "x": 614.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 22.0
+ },
+ {
+ "x": 626.7860000000001,
+ "y": 21.954
+ },
+ {
+ "x": 623.248,
+ "y": 21.872
+ },
+ {
+ "x": 619.542,
+ "y": 21.838
+ },
+ {
+ "x": 615.8240000000001,
+ "y": 21.936000000000003
+ },
+ {
+ "x": 612.25,
+ "y": 22.25
+ },
+ {
+ "x": 608.976,
+ "y": 22.864
+ },
+ {
+ "x": 606.158,
+ "y": 23.862
+ },
+ {
+ "x": 603.952,
+ "y": 25.328
+ },
+ {
+ "x": 602.514,
+ "y": 27.346
+ },
+ {
+ "x": 602.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 22.0
+ },
+ {
+ "x": 626.898,
+ "y": 21.954
+ },
+ {
+ "x": 623.664,
+ "y": 21.872
+ },
+ {
+ "x": 620.406,
+ "y": 21.838
+ },
+ {
+ "x": 617.232,
+ "y": 21.936000000000003
+ },
+ {
+ "x": 614.25,
+ "y": 22.25
+ },
+ {
+ "x": 611.568,
+ "y": 22.864
+ },
+ {
+ "x": 609.294,
+ "y": 23.862
+ },
+ {
+ "x": 607.5360000000001,
+ "y": 25.328
+ },
+ {
+ "x": 606.402,
+ "y": 27.346
+ },
+ {
+ "x": 606.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 22.0
+ },
+ {
+ "x": 627.0100000000001,
+ "y": 21.954
+ },
+ {
+ "x": 624.08,
+ "y": 21.872
+ },
+ {
+ "x": 621.27,
+ "y": 21.838
+ },
+ {
+ "x": 618.64,
+ "y": 21.936000000000003
+ },
+ {
+ "x": 616.25,
+ "y": 22.25
+ },
+ {
+ "x": 614.16,
+ "y": 22.864
+ },
+ {
+ "x": 612.4300000000001,
+ "y": 23.862
+ },
+ {
+ "x": 611.12,
+ "y": 25.328
+ },
+ {
+ "x": 610.29,
+ "y": 27.346
+ },
+ {
+ "x": 610.0,
+ "y": 30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 22.0
+ },
+ {
+ "x": 627.1220000000001,
+ "y": 21.954
+ },
+ {
+ "x": 624.496,
+ "y": 21.872
+ },
+ {
+ "x": 622.134,
+ "y": 21.838
+ },
+ {
+ "x": 620.048,
+ "y": 21.936000000000003
+ },
+ {
+ "x": 618.25,
+ "y": 22.25
+ },
+ {
+ "x": 616.752,
+ "y": 22.864
+ },
+ {
+ "x": 615.566,
+ "y": 23.862
+ },
+ {
+ "x": 614.7040000000001,
+ "y": 25.328
+ },
+ {
+ "x": 614.178,
+ "y": 27.346
+ },
+ {
+ "x": 614.0,
+ "y": 30.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "go_straight",
+ "startRoad": "road_4_1_2",
+ "endRoad": "road_3_1_2",
+ "direction": 2,
+ "laneLinks": [
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 10.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 9.775999999999998
+ },
+ {
+ "x": 620.88,
+ "y": 9.168000000000001
+ },
+ {
+ "x": 614.52,
+ "y": 8.272
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 7.183999999999999
+ },
+ {
+ "x": 600.0,
+ "y": 6.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 4.815999999999999
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 3.7280000000000006
+ },
+ {
+ "x": 579.12,
+ "y": 2.831999999999999
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 2.224
+ },
+ {
+ "x": 570.0,
+ "y": 2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 10.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 9.887999999999998
+ },
+ {
+ "x": 620.88,
+ "y": 9.584000000000001
+ },
+ {
+ "x": 614.52,
+ "y": 9.136
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 8.591999999999999
+ },
+ {
+ "x": 600.0,
+ "y": 8.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 7.4079999999999995
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 6.864000000000001
+ },
+ {
+ "x": 579.12,
+ "y": 6.416
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 6.112
+ },
+ {
+ "x": 570.0,
+ "y": 6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 10.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 9.999999999999998
+ },
+ {
+ "x": 620.88,
+ "y": 10.000000000000002
+ },
+ {
+ "x": 614.52,
+ "y": 10.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 10.0
+ },
+ {
+ "x": 600.0,
+ "y": 10.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 10.0
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 10.0
+ },
+ {
+ "x": 579.12,
+ "y": 10.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 10.0
+ },
+ {
+ "x": 570.0,
+ "y": 10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 10.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 10.111999999999998
+ },
+ {
+ "x": 620.88,
+ "y": 10.416
+ },
+ {
+ "x": 614.52,
+ "y": 10.864
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 11.408
+ },
+ {
+ "x": 600.0,
+ "y": 12.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 12.592000000000002
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 13.136
+ },
+ {
+ "x": 579.12,
+ "y": 13.584000000000001
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 13.888000000000002
+ },
+ {
+ "x": 570.0,
+ "y": 14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 10.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 10.223999999999998
+ },
+ {
+ "x": 620.88,
+ "y": 10.832
+ },
+ {
+ "x": 614.52,
+ "y": 11.728
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 12.816
+ },
+ {
+ "x": 600.0,
+ "y": 14.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 15.184000000000001
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 16.272
+ },
+ {
+ "x": 579.12,
+ "y": 17.168000000000003
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 17.776
+ },
+ {
+ "x": 570.0,
+ "y": 18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 10.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 10.335999999999999
+ },
+ {
+ "x": 620.88,
+ "y": 11.248000000000001
+ },
+ {
+ "x": 614.52,
+ "y": 12.592
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 14.224
+ },
+ {
+ "x": 600.0,
+ "y": 16.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 17.776000000000003
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 19.407999999999998
+ },
+ {
+ "x": 579.12,
+ "y": 20.752000000000002
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 21.664
+ },
+ {
+ "x": 570.0,
+ "y": 22.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 14.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 13.664
+ },
+ {
+ "x": 620.88,
+ "y": 12.752
+ },
+ {
+ "x": 614.52,
+ "y": 11.408000000000001
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 9.776
+ },
+ {
+ "x": 600.0,
+ "y": 8.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 6.223999999999998
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 4.5920000000000005
+ },
+ {
+ "x": 579.12,
+ "y": 3.2479999999999984
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 2.3360000000000003
+ },
+ {
+ "x": 570.0,
+ "y": 2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 14.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 13.776
+ },
+ {
+ "x": 620.88,
+ "y": 13.168000000000001
+ },
+ {
+ "x": 614.52,
+ "y": 12.272000000000002
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 11.184
+ },
+ {
+ "x": 600.0,
+ "y": 10.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 8.815999999999999
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 7.728000000000001
+ },
+ {
+ "x": 579.12,
+ "y": 6.831999999999999
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 6.224
+ },
+ {
+ "x": 570.0,
+ "y": 6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 14.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 13.888
+ },
+ {
+ "x": 620.88,
+ "y": 13.584000000000001
+ },
+ {
+ "x": 614.52,
+ "y": 13.136000000000001
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 12.592
+ },
+ {
+ "x": 600.0,
+ "y": 12.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 11.408
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 10.864
+ },
+ {
+ "x": 579.12,
+ "y": 10.415999999999999
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 10.111999999999998
+ },
+ {
+ "x": 570.0,
+ "y": 10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 14.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 14.0
+ },
+ {
+ "x": 620.88,
+ "y": 14.0
+ },
+ {
+ "x": 614.52,
+ "y": 14.000000000000002
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 14.0
+ },
+ {
+ "x": 600.0,
+ "y": 14.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 14.0
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 14.0
+ },
+ {
+ "x": 579.12,
+ "y": 14.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 14.0
+ },
+ {
+ "x": 570.0,
+ "y": 14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 14.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 14.112
+ },
+ {
+ "x": 620.88,
+ "y": 14.416
+ },
+ {
+ "x": 614.52,
+ "y": 14.864
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 15.408000000000001
+ },
+ {
+ "x": 600.0,
+ "y": 16.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 16.592
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 17.136
+ },
+ {
+ "x": 579.12,
+ "y": 17.584000000000003
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 17.887999999999998
+ },
+ {
+ "x": 570.0,
+ "y": 18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 14.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 14.224
+ },
+ {
+ "x": 620.88,
+ "y": 14.832
+ },
+ {
+ "x": 614.52,
+ "y": 15.728000000000002
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 16.816000000000003
+ },
+ {
+ "x": 600.0,
+ "y": 18.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 19.184
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 20.272
+ },
+ {
+ "x": 579.12,
+ "y": 21.168000000000003
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 21.776
+ },
+ {
+ "x": 570.0,
+ "y": 22.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 18.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 17.552
+ },
+ {
+ "x": 620.88,
+ "y": 16.336
+ },
+ {
+ "x": 614.52,
+ "y": 14.544
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 12.367999999999999
+ },
+ {
+ "x": 600.0,
+ "y": 10.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 7.631999999999998
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 5.456000000000001
+ },
+ {
+ "x": 579.12,
+ "y": 3.663999999999998
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 2.4480000000000004
+ },
+ {
+ "x": 570.0,
+ "y": 2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 18.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 17.663999999999998
+ },
+ {
+ "x": 620.88,
+ "y": 16.752
+ },
+ {
+ "x": 614.52,
+ "y": 15.408000000000001
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 13.775999999999998
+ },
+ {
+ "x": 600.0,
+ "y": 12.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 10.223999999999998
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 8.592000000000002
+ },
+ {
+ "x": 579.12,
+ "y": 7.247999999999999
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 6.336
+ },
+ {
+ "x": 570.0,
+ "y": 6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 18.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 17.776
+ },
+ {
+ "x": 620.88,
+ "y": 17.168
+ },
+ {
+ "x": 614.52,
+ "y": 16.272
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 15.184
+ },
+ {
+ "x": 600.0,
+ "y": 14.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 12.815999999999999
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 11.728000000000002
+ },
+ {
+ "x": 579.12,
+ "y": 10.831999999999999
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 10.224
+ },
+ {
+ "x": 570.0,
+ "y": 10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 18.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 17.887999999999998
+ },
+ {
+ "x": 620.88,
+ "y": 17.584
+ },
+ {
+ "x": 614.52,
+ "y": 17.136
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 16.592
+ },
+ {
+ "x": 600.0,
+ "y": 16.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 15.408000000000001
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 14.864
+ },
+ {
+ "x": 579.12,
+ "y": 14.416
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 14.112000000000002
+ },
+ {
+ "x": 570.0,
+ "y": 14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 18.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 18.0
+ },
+ {
+ "x": 620.88,
+ "y": 18.0
+ },
+ {
+ "x": 614.52,
+ "y": 18.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 18.0
+ },
+ {
+ "x": 600.0,
+ "y": 18.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 18.0
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 18.0
+ },
+ {
+ "x": 579.12,
+ "y": 18.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 18.0
+ },
+ {
+ "x": 570.0,
+ "y": 18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 18.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 18.112
+ },
+ {
+ "x": 620.88,
+ "y": 18.416
+ },
+ {
+ "x": 614.52,
+ "y": 18.864
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 19.408
+ },
+ {
+ "x": 600.0,
+ "y": 20.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 20.592000000000002
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 21.136
+ },
+ {
+ "x": 579.12,
+ "y": 21.584
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 21.888
+ },
+ {
+ "x": 570.0,
+ "y": 22.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_left",
+ "startRoad": "road_4_1_2",
+ "endRoad": "road_3_1_3",
+ "direction": 2,
+ "laneLinks": [
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 2.0
+ },
+ {
+ "x": 626.6740000000001,
+ "y": 1.3739999999999999
+ },
+ {
+ "x": 622.832,
+ "y": -0.3680000000000003
+ },
+ {
+ "x": 618.678,
+ "y": -3.0220000000000007
+ },
+ {
+ "x": 614.416,
+ "y": -6.384000000000002
+ },
+ {
+ "x": 610.25,
+ "y": -10.25
+ },
+ {
+ "x": 606.384,
+ "y": -14.416000000000004
+ },
+ {
+ "x": 603.0219999999999,
+ "y": -18.677999999999997
+ },
+ {
+ "x": 600.368,
+ "y": -22.832000000000004
+ },
+ {
+ "x": 598.626,
+ "y": -26.674
+ },
+ {
+ "x": 598.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 2.0
+ },
+ {
+ "x": 626.562,
+ "y": 1.3739999999999999
+ },
+ {
+ "x": 622.4159999999999,
+ "y": -0.3680000000000003
+ },
+ {
+ "x": 617.814,
+ "y": -3.0220000000000007
+ },
+ {
+ "x": 613.008,
+ "y": -6.384000000000002
+ },
+ {
+ "x": 608.25,
+ "y": -10.25
+ },
+ {
+ "x": 603.792,
+ "y": -14.416000000000004
+ },
+ {
+ "x": 599.886,
+ "y": -18.677999999999997
+ },
+ {
+ "x": 596.784,
+ "y": -22.832000000000004
+ },
+ {
+ "x": 594.7379999999999,
+ "y": -26.674
+ },
+ {
+ "x": 594.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 2.0
+ },
+ {
+ "x": 626.45,
+ "y": 1.3739999999999999
+ },
+ {
+ "x": 622.0,
+ "y": -0.3680000000000003
+ },
+ {
+ "x": 616.95,
+ "y": -3.0220000000000007
+ },
+ {
+ "x": 611.6,
+ "y": -6.384000000000002
+ },
+ {
+ "x": 606.25,
+ "y": -10.25
+ },
+ {
+ "x": 601.1999999999999,
+ "y": -14.416000000000004
+ },
+ {
+ "x": 596.75,
+ "y": -18.677999999999997
+ },
+ {
+ "x": 593.2,
+ "y": -22.832000000000004
+ },
+ {
+ "x": 590.85,
+ "y": -26.674
+ },
+ {
+ "x": 590.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 2.0
+ },
+ {
+ "x": 626.3380000000001,
+ "y": 1.3739999999999999
+ },
+ {
+ "x": 621.5840000000001,
+ "y": -0.3680000000000003
+ },
+ {
+ "x": 616.086,
+ "y": -3.0220000000000007
+ },
+ {
+ "x": 610.192,
+ "y": -6.384000000000002
+ },
+ {
+ "x": 604.25,
+ "y": -10.25
+ },
+ {
+ "x": 598.608,
+ "y": -14.416000000000004
+ },
+ {
+ "x": 593.614,
+ "y": -18.677999999999997
+ },
+ {
+ "x": 589.616,
+ "y": -22.832000000000004
+ },
+ {
+ "x": 586.962,
+ "y": -26.674
+ },
+ {
+ "x": 586.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 6.0
+ },
+ {
+ "x": 626.6740000000001,
+ "y": 5.2620000000000005
+ },
+ {
+ "x": 622.832,
+ "y": 3.216
+ },
+ {
+ "x": 618.678,
+ "y": 0.11400000000000032
+ },
+ {
+ "x": 614.416,
+ "y": -3.792000000000002
+ },
+ {
+ "x": 610.25,
+ "y": -8.25
+ },
+ {
+ "x": 606.384,
+ "y": -13.008000000000006
+ },
+ {
+ "x": 603.0219999999999,
+ "y": -17.813999999999997
+ },
+ {
+ "x": 600.368,
+ "y": -22.416000000000004
+ },
+ {
+ "x": 598.626,
+ "y": -26.562
+ },
+ {
+ "x": 598.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 6.0
+ },
+ {
+ "x": 626.562,
+ "y": 5.2620000000000005
+ },
+ {
+ "x": 622.4159999999999,
+ "y": 3.216
+ },
+ {
+ "x": 617.814,
+ "y": 0.11400000000000032
+ },
+ {
+ "x": 613.008,
+ "y": -3.792000000000002
+ },
+ {
+ "x": 608.25,
+ "y": -8.25
+ },
+ {
+ "x": 603.792,
+ "y": -13.008000000000006
+ },
+ {
+ "x": 599.886,
+ "y": -17.813999999999997
+ },
+ {
+ "x": 596.784,
+ "y": -22.416000000000004
+ },
+ {
+ "x": 594.7379999999999,
+ "y": -26.562
+ },
+ {
+ "x": 594.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 6.0
+ },
+ {
+ "x": 626.45,
+ "y": 5.2620000000000005
+ },
+ {
+ "x": 622.0,
+ "y": 3.216
+ },
+ {
+ "x": 616.95,
+ "y": 0.11400000000000032
+ },
+ {
+ "x": 611.6,
+ "y": -3.792000000000002
+ },
+ {
+ "x": 606.25,
+ "y": -8.25
+ },
+ {
+ "x": 601.1999999999999,
+ "y": -13.008000000000006
+ },
+ {
+ "x": 596.75,
+ "y": -17.813999999999997
+ },
+ {
+ "x": 593.2,
+ "y": -22.416000000000004
+ },
+ {
+ "x": 590.85,
+ "y": -26.562
+ },
+ {
+ "x": 590.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 6.0
+ },
+ {
+ "x": 626.3380000000001,
+ "y": 5.2620000000000005
+ },
+ {
+ "x": 621.5840000000001,
+ "y": 3.216
+ },
+ {
+ "x": 616.086,
+ "y": 0.11400000000000032
+ },
+ {
+ "x": 610.192,
+ "y": -3.792000000000002
+ },
+ {
+ "x": 604.25,
+ "y": -8.25
+ },
+ {
+ "x": 598.608,
+ "y": -13.008000000000006
+ },
+ {
+ "x": 593.614,
+ "y": -17.813999999999997
+ },
+ {
+ "x": 589.616,
+ "y": -22.416000000000004
+ },
+ {
+ "x": 586.962,
+ "y": -26.562
+ },
+ {
+ "x": 586.0,
+ "y": -30.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_left",
+ "startRoad": "road_3_2_3",
+ "endRoad": "road_3_1_0",
+ "direction": 3,
+ "laneLinks": [
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 598.0,
+ "y": 30.0
+ },
+ {
+ "x": 598.626,
+ "y": 26.674
+ },
+ {
+ "x": 600.3679999999999,
+ "y": 22.832
+ },
+ {
+ "x": 603.022,
+ "y": 18.678
+ },
+ {
+ "x": 606.384,
+ "y": 14.415999999999999
+ },
+ {
+ "x": 610.25,
+ "y": 10.25
+ },
+ {
+ "x": 614.4159999999999,
+ "y": 6.383999999999996
+ },
+ {
+ "x": 618.678,
+ "y": 3.022000000000004
+ },
+ {
+ "x": 622.832,
+ "y": 0.3679999999999981
+ },
+ {
+ "x": 626.6740000000001,
+ "y": -1.3739999999999994
+ },
+ {
+ "x": 630.0,
+ "y": -2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 598.0,
+ "y": 30.0
+ },
+ {
+ "x": 598.626,
+ "y": 26.562
+ },
+ {
+ "x": 600.3679999999999,
+ "y": 22.416
+ },
+ {
+ "x": 603.022,
+ "y": 17.814
+ },
+ {
+ "x": 606.384,
+ "y": 13.008
+ },
+ {
+ "x": 610.25,
+ "y": 8.25
+ },
+ {
+ "x": 614.4159999999999,
+ "y": 3.7919999999999954
+ },
+ {
+ "x": 618.678,
+ "y": -0.11399999999999633
+ },
+ {
+ "x": 622.832,
+ "y": -3.216000000000003
+ },
+ {
+ "x": 626.6740000000001,
+ "y": -5.262
+ },
+ {
+ "x": 630.0,
+ "y": -6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 598.0,
+ "y": 30.0
+ },
+ {
+ "x": 598.626,
+ "y": 26.45
+ },
+ {
+ "x": 600.3679999999999,
+ "y": 22.0
+ },
+ {
+ "x": 603.022,
+ "y": 16.95
+ },
+ {
+ "x": 606.384,
+ "y": 11.599999999999998
+ },
+ {
+ "x": 610.25,
+ "y": 6.25
+ },
+ {
+ "x": 614.4159999999999,
+ "y": 1.1999999999999948
+ },
+ {
+ "x": 618.678,
+ "y": -3.2499999999999956
+ },
+ {
+ "x": 622.832,
+ "y": -6.8000000000000025
+ },
+ {
+ "x": 626.6740000000001,
+ "y": -9.149999999999999
+ },
+ {
+ "x": 630.0,
+ "y": -10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 598.0,
+ "y": 30.0
+ },
+ {
+ "x": 598.626,
+ "y": 26.338
+ },
+ {
+ "x": 600.3679999999999,
+ "y": 21.584
+ },
+ {
+ "x": 603.022,
+ "y": 16.086
+ },
+ {
+ "x": 606.384,
+ "y": 10.191999999999998
+ },
+ {
+ "x": 610.25,
+ "y": 4.25
+ },
+ {
+ "x": 614.4159999999999,
+ "y": -1.3920000000000066
+ },
+ {
+ "x": 618.678,
+ "y": -6.385999999999996
+ },
+ {
+ "x": 622.832,
+ "y": -10.384000000000004
+ },
+ {
+ "x": 626.6740000000001,
+ "y": -13.038
+ },
+ {
+ "x": 630.0,
+ "y": -14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 598.0,
+ "y": 30.0
+ },
+ {
+ "x": 598.626,
+ "y": 26.226
+ },
+ {
+ "x": 600.3679999999999,
+ "y": 21.168
+ },
+ {
+ "x": 603.022,
+ "y": 15.222
+ },
+ {
+ "x": 606.384,
+ "y": 8.783999999999997
+ },
+ {
+ "x": 610.25,
+ "y": 2.25
+ },
+ {
+ "x": 614.4159999999999,
+ "y": -3.9840000000000053
+ },
+ {
+ "x": 618.678,
+ "y": -9.521999999999995
+ },
+ {
+ "x": 622.832,
+ "y": -13.968000000000005
+ },
+ {
+ "x": 626.6740000000001,
+ "y": -16.926
+ },
+ {
+ "x": 630.0,
+ "y": -18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 598.0,
+ "y": 30.0
+ },
+ {
+ "x": 598.626,
+ "y": 26.114
+ },
+ {
+ "x": 600.3679999999999,
+ "y": 20.752
+ },
+ {
+ "x": 603.022,
+ "y": 14.357999999999999
+ },
+ {
+ "x": 606.384,
+ "y": 7.375999999999998
+ },
+ {
+ "x": 610.25,
+ "y": 0.25
+ },
+ {
+ "x": 614.4159999999999,
+ "y": -6.576000000000008
+ },
+ {
+ "x": 618.678,
+ "y": -12.657999999999994
+ },
+ {
+ "x": 622.832,
+ "y": -17.552000000000007
+ },
+ {
+ "x": 626.6740000000001,
+ "y": -20.814
+ },
+ {
+ "x": 630.0,
+ "y": -22.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_right",
+ "startRoad": "road_3_2_3",
+ "endRoad": "road_3_1_2",
+ "direction": 3,
+ "laneLinks": [
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 586.0,
+ "y": 30.0
+ },
+ {
+ "x": 585.822,
+ "y": 26.786
+ },
+ {
+ "x": 585.296,
+ "y": 23.247999999999998
+ },
+ {
+ "x": 584.4340000000001,
+ "y": 19.541999999999998
+ },
+ {
+ "x": 583.2479999999999,
+ "y": 15.824
+ },
+ {
+ "x": 581.75,
+ "y": 12.25
+ },
+ {
+ "x": 579.9520000000001,
+ "y": 8.975999999999996
+ },
+ {
+ "x": 577.866,
+ "y": 6.158000000000003
+ },
+ {
+ "x": 575.504,
+ "y": 3.9519999999999986
+ },
+ {
+ "x": 572.8779999999999,
+ "y": 2.5140000000000002
+ },
+ {
+ "x": 570.0,
+ "y": 2.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 586.0,
+ "y": 30.0
+ },
+ {
+ "x": 585.822,
+ "y": 26.898
+ },
+ {
+ "x": 585.296,
+ "y": 23.663999999999998
+ },
+ {
+ "x": 584.4340000000001,
+ "y": 20.406
+ },
+ {
+ "x": 583.2479999999999,
+ "y": 17.232
+ },
+ {
+ "x": 581.75,
+ "y": 14.25
+ },
+ {
+ "x": 579.9520000000001,
+ "y": 11.567999999999998
+ },
+ {
+ "x": 577.866,
+ "y": 9.294000000000004
+ },
+ {
+ "x": 575.504,
+ "y": 7.536
+ },
+ {
+ "x": 572.8779999999999,
+ "y": 6.402
+ },
+ {
+ "x": 570.0,
+ "y": 6.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 586.0,
+ "y": 30.0
+ },
+ {
+ "x": 585.822,
+ "y": 27.01
+ },
+ {
+ "x": 585.296,
+ "y": 24.08
+ },
+ {
+ "x": 584.4340000000001,
+ "y": 21.27
+ },
+ {
+ "x": 583.2479999999999,
+ "y": 18.64
+ },
+ {
+ "x": 581.75,
+ "y": 16.25
+ },
+ {
+ "x": 579.9520000000001,
+ "y": 14.159999999999997
+ },
+ {
+ "x": 577.866,
+ "y": 12.430000000000003
+ },
+ {
+ "x": 575.504,
+ "y": 11.12
+ },
+ {
+ "x": 572.8779999999999,
+ "y": 10.29
+ },
+ {
+ "x": 570.0,
+ "y": 10.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 586.0,
+ "y": 30.0
+ },
+ {
+ "x": 585.822,
+ "y": 27.122
+ },
+ {
+ "x": 585.296,
+ "y": 24.496
+ },
+ {
+ "x": 584.4340000000001,
+ "y": 22.134
+ },
+ {
+ "x": 583.2479999999999,
+ "y": 20.048000000000002
+ },
+ {
+ "x": 581.75,
+ "y": 18.25
+ },
+ {
+ "x": 579.9520000000001,
+ "y": 16.752
+ },
+ {
+ "x": 577.866,
+ "y": 15.566000000000003
+ },
+ {
+ "x": 575.504,
+ "y": 14.704
+ },
+ {
+ "x": 572.8779999999999,
+ "y": 14.178
+ },
+ {
+ "x": 570.0,
+ "y": 14.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 586.0,
+ "y": 30.0
+ },
+ {
+ "x": 585.822,
+ "y": 27.234
+ },
+ {
+ "x": 585.296,
+ "y": 24.912
+ },
+ {
+ "x": 584.4340000000001,
+ "y": 22.998
+ },
+ {
+ "x": 583.2479999999999,
+ "y": 21.456000000000003
+ },
+ {
+ "x": 581.75,
+ "y": 20.25
+ },
+ {
+ "x": 579.9520000000001,
+ "y": 19.343999999999998
+ },
+ {
+ "x": 577.866,
+ "y": 18.702
+ },
+ {
+ "x": 575.504,
+ "y": 18.288000000000004
+ },
+ {
+ "x": 572.8779999999999,
+ "y": 18.066
+ },
+ {
+ "x": 570.0,
+ "y": 18.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 586.0,
+ "y": 30.0
+ },
+ {
+ "x": 585.822,
+ "y": 27.346
+ },
+ {
+ "x": 585.296,
+ "y": 25.328
+ },
+ {
+ "x": 584.4340000000001,
+ "y": 23.862000000000002
+ },
+ {
+ "x": 583.2479999999999,
+ "y": 22.864
+ },
+ {
+ "x": 581.75,
+ "y": 22.25
+ },
+ {
+ "x": 579.9520000000001,
+ "y": 21.936
+ },
+ {
+ "x": 577.866,
+ "y": 21.838
+ },
+ {
+ "x": 575.504,
+ "y": 21.872
+ },
+ {
+ "x": 572.8779999999999,
+ "y": 21.954
+ },
+ {
+ "x": 570.0,
+ "y": 22.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "go_straight",
+ "startRoad": "road_3_2_3",
+ "endRoad": "road_3_1_3",
+ "direction": 3,
+ "laneLinks": [
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 594.0,
+ "y": 30.0
+ },
+ {
+ "x": 594.112,
+ "y": 26.16
+ },
+ {
+ "x": 594.416,
+ "y": 20.88
+ },
+ {
+ "x": 594.864,
+ "y": 14.52
+ },
+ {
+ "x": 595.408,
+ "y": 7.439999999999998
+ },
+ {
+ "x": 596.0,
+ "y": 0.0
+ },
+ {
+ "x": 596.592,
+ "y": -7.440000000000009
+ },
+ {
+ "x": 597.136,
+ "y": -14.519999999999992
+ },
+ {
+ "x": 597.5840000000001,
+ "y": -20.880000000000006
+ },
+ {
+ "x": 597.888,
+ "y": -26.16
+ },
+ {
+ "x": 598.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 594.0,
+ "y": 30.0
+ },
+ {
+ "x": 593.9999999999999,
+ "y": 26.16
+ },
+ {
+ "x": 594.0,
+ "y": 20.88
+ },
+ {
+ "x": 594.0,
+ "y": 14.52
+ },
+ {
+ "x": 594.0,
+ "y": 7.439999999999998
+ },
+ {
+ "x": 594.0,
+ "y": 0.0
+ },
+ {
+ "x": 594.0,
+ "y": -7.440000000000009
+ },
+ {
+ "x": 594.0,
+ "y": -14.519999999999992
+ },
+ {
+ "x": 594.0,
+ "y": -20.880000000000006
+ },
+ {
+ "x": 594.0,
+ "y": -26.16
+ },
+ {
+ "x": 594.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 594.0,
+ "y": 30.0
+ },
+ {
+ "x": 593.8879999999999,
+ "y": 26.16
+ },
+ {
+ "x": 593.5840000000001,
+ "y": 20.88
+ },
+ {
+ "x": 593.1360000000001,
+ "y": 14.52
+ },
+ {
+ "x": 592.592,
+ "y": 7.439999999999998
+ },
+ {
+ "x": 592.0,
+ "y": 0.0
+ },
+ {
+ "x": 591.4079999999999,
+ "y": -7.440000000000009
+ },
+ {
+ "x": 590.864,
+ "y": -14.519999999999992
+ },
+ {
+ "x": 590.416,
+ "y": -20.880000000000006
+ },
+ {
+ "x": 590.1120000000001,
+ "y": -26.16
+ },
+ {
+ "x": 590.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 594.0,
+ "y": 30.0
+ },
+ {
+ "x": 593.776,
+ "y": 26.16
+ },
+ {
+ "x": 593.1680000000001,
+ "y": 20.88
+ },
+ {
+ "x": 592.272,
+ "y": 14.52
+ },
+ {
+ "x": 591.184,
+ "y": 7.439999999999998
+ },
+ {
+ "x": 590.0,
+ "y": 0.0
+ },
+ {
+ "x": 588.816,
+ "y": -7.440000000000009
+ },
+ {
+ "x": 587.7280000000001,
+ "y": -14.519999999999992
+ },
+ {
+ "x": 586.832,
+ "y": -20.880000000000006
+ },
+ {
+ "x": 586.224,
+ "y": -26.16
+ },
+ {
+ "x": 586.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 590.0,
+ "y": 30.0
+ },
+ {
+ "x": 590.224,
+ "y": 26.16
+ },
+ {
+ "x": 590.832,
+ "y": 20.88
+ },
+ {
+ "x": 591.7280000000001,
+ "y": 14.52
+ },
+ {
+ "x": 592.816,
+ "y": 7.439999999999998
+ },
+ {
+ "x": 594.0,
+ "y": 0.0
+ },
+ {
+ "x": 595.184,
+ "y": -7.440000000000009
+ },
+ {
+ "x": 596.2719999999999,
+ "y": -14.519999999999992
+ },
+ {
+ "x": 597.168,
+ "y": -20.880000000000006
+ },
+ {
+ "x": 597.776,
+ "y": -26.16
+ },
+ {
+ "x": 598.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 590.0,
+ "y": 30.0
+ },
+ {
+ "x": 590.112,
+ "y": 26.16
+ },
+ {
+ "x": 590.4159999999999,
+ "y": 20.88
+ },
+ {
+ "x": 590.864,
+ "y": 14.52
+ },
+ {
+ "x": 591.408,
+ "y": 7.439999999999998
+ },
+ {
+ "x": 592.0,
+ "y": 0.0
+ },
+ {
+ "x": 592.592,
+ "y": -7.440000000000009
+ },
+ {
+ "x": 593.136,
+ "y": -14.519999999999992
+ },
+ {
+ "x": 593.584,
+ "y": -20.880000000000006
+ },
+ {
+ "x": 593.8879999999999,
+ "y": -26.16
+ },
+ {
+ "x": 594.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 590.0,
+ "y": 30.0
+ },
+ {
+ "x": 590.0,
+ "y": 26.16
+ },
+ {
+ "x": 590.0,
+ "y": 20.88
+ },
+ {
+ "x": 590.0,
+ "y": 14.52
+ },
+ {
+ "x": 590.0,
+ "y": 7.439999999999998
+ },
+ {
+ "x": 590.0,
+ "y": 0.0
+ },
+ {
+ "x": 590.0,
+ "y": -7.440000000000009
+ },
+ {
+ "x": 590.0,
+ "y": -14.519999999999992
+ },
+ {
+ "x": 590.0,
+ "y": -20.880000000000006
+ },
+ {
+ "x": 590.0,
+ "y": -26.16
+ },
+ {
+ "x": 590.0,
+ "y": -30.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 590.0,
+ "y": 30.0
+ },
+ {
+ "x": 589.888,
+ "y": 26.16
+ },
+ {
+ "x": 589.5840000000001,
+ "y": 20.88
+ },
+ {
+ "x": 589.136,
+ "y": 14.52
+ },
+ {
+ "x": 588.592,
+ "y": 7.439999999999998
+ },
+ {
+ "x": 588.0,
+ "y": 0.0
+ },
+ {
+ "x": 587.408,
+ "y": -7.440000000000009
+ },
+ {
+ "x": 586.864,
+ "y": -14.519999999999992
+ },
+ {
+ "x": 586.4159999999999,
+ "y": -20.880000000000006
+ },
+ {
+ "x": 586.112,
+ "y": -26.16
+ },
+ {
+ "x": 586.0,
+ "y": -30.0
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "trafficLight": {
+ "roadLinkIndices": [
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "lightphases": [
+ {
+ "time": 30,
+ "availableRoadLinks": [
+ 0,
+ 2,
+ 3,
+ 6,
+ 7,
+ 10
+ ]
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": [
+ 10,
+ 2,
+ 3,
+ 6
+ ]
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": [
+ 1,
+ 2,
+ 3,
+ 6,
+ 8,
+ 10
+ ]
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": [
+ 10,
+ 2,
+ 3,
+ 6
+ ]
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": [
+ 2,
+ 3,
+ 4,
+ 6,
+ 10,
+ 11
+ ]
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": [
+ 10,
+ 2,
+ 3,
+ 6
+ ]
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": [
+ 2,
+ 3,
+ 5,
+ 6,
+ 9,
+ 10
+ ]
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": [
+ 10,
+ 2,
+ 3,
+ 6
+ ]
+ }
+ ]
+ },
+ "virtual": false
+ },
+ {
+ "id": "intersection_4_1",
+ "point": {
+ "x": 800,
+ "y": 0
+ },
+ "width": 0,
+ "roads": [
+ "road_3_1_0",
+ "road_4_1_2"
+ ],
+ "roadLinks": [],
+ "trafficLight": {
+ "roadLinkIndices": [],
+ "lightphases": [
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ }
+ ]
+ },
+ "virtual": true
+ },
+ {
+ "id": "intersection_0_2",
+ "point": {
+ "x": -200,
+ "y": 200
+ },
+ "width": 0,
+ "roads": [
+ "road_1_2_2",
+ "road_0_2_0"
+ ],
+ "roadLinks": [],
+ "trafficLight": {
+ "roadLinkIndices": [],
+ "lightphases": [
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ }
+ ]
+ },
+ "virtual": true
+ },
+ {
+ "id": "intersection_1_2",
+ "point": {
+ "x": 0,
+ "y": 200
+ },
+ "width": 30,
+ "roads": [
+ "road_0_2_0",
+ "road_1_1_1",
+ "road_2_2_2",
+ "road_1_3_3",
+ "road_1_2_0",
+ "road_1_2_1",
+ "road_1_2_2",
+ "road_1_2_3"
+ ],
+ "roadLinks": [
+ {
+ "type": "go_straight",
+ "startRoad": "road_0_2_0",
+ "endRoad": "road_1_2_0",
+ "direction": 0,
+ "laneLinks": [
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 190.0
+ },
+ {
+ "x": -26.16,
+ "y": 190.22400000000002
+ },
+ {
+ "x": -20.88,
+ "y": 190.83200000000002
+ },
+ {
+ "x": -14.52,
+ "y": 191.728
+ },
+ {
+ "x": -7.439999999999998,
+ "y": 192.81599999999997
+ },
+ {
+ "x": 0.0,
+ "y": 194.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": 195.18400000000003
+ },
+ {
+ "x": 14.519999999999992,
+ "y": 196.272
+ },
+ {
+ "x": 20.880000000000006,
+ "y": 197.168
+ },
+ {
+ "x": 26.16,
+ "y": 197.77599999999998
+ },
+ {
+ "x": 30.0,
+ "y": 198.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 190.0
+ },
+ {
+ "x": -26.16,
+ "y": 190.112
+ },
+ {
+ "x": -20.88,
+ "y": 190.41600000000003
+ },
+ {
+ "x": -14.52,
+ "y": 190.864
+ },
+ {
+ "x": -7.439999999999998,
+ "y": 191.408
+ },
+ {
+ "x": 0.0,
+ "y": 192.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": 192.592
+ },
+ {
+ "x": 14.519999999999992,
+ "y": 193.136
+ },
+ {
+ "x": 20.880000000000006,
+ "y": 193.584
+ },
+ {
+ "x": 26.16,
+ "y": 193.88799999999998
+ },
+ {
+ "x": 30.0,
+ "y": 194.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 190.0
+ },
+ {
+ "x": -26.16,
+ "y": 190.0
+ },
+ {
+ "x": -20.88,
+ "y": 190.0
+ },
+ {
+ "x": -14.52,
+ "y": 190.0
+ },
+ {
+ "x": -7.439999999999998,
+ "y": 190.0
+ },
+ {
+ "x": 0.0,
+ "y": 190.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": 190.0
+ },
+ {
+ "x": 14.519999999999992,
+ "y": 190.0
+ },
+ {
+ "x": 20.880000000000006,
+ "y": 190.0
+ },
+ {
+ "x": 26.16,
+ "y": 190.0
+ },
+ {
+ "x": 30.0,
+ "y": 190.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 190.0
+ },
+ {
+ "x": -26.16,
+ "y": 189.888
+ },
+ {
+ "x": -20.88,
+ "y": 189.584
+ },
+ {
+ "x": -14.52,
+ "y": 189.13600000000002
+ },
+ {
+ "x": -7.439999999999998,
+ "y": 188.59199999999998
+ },
+ {
+ "x": 0.0,
+ "y": 188.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": 187.40800000000002
+ },
+ {
+ "x": 14.519999999999992,
+ "y": 186.864
+ },
+ {
+ "x": 20.880000000000006,
+ "y": 186.416
+ },
+ {
+ "x": 26.16,
+ "y": 186.112
+ },
+ {
+ "x": 30.0,
+ "y": 186.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 190.0
+ },
+ {
+ "x": -26.16,
+ "y": 189.776
+ },
+ {
+ "x": -20.88,
+ "y": 189.168
+ },
+ {
+ "x": -14.52,
+ "y": 188.27200000000002
+ },
+ {
+ "x": -7.439999999999998,
+ "y": 187.184
+ },
+ {
+ "x": 0.0,
+ "y": 186.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": 184.816
+ },
+ {
+ "x": 14.519999999999992,
+ "y": 183.728
+ },
+ {
+ "x": 20.880000000000006,
+ "y": 182.832
+ },
+ {
+ "x": 26.16,
+ "y": 182.224
+ },
+ {
+ "x": 30.0,
+ "y": 182.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 190.0
+ },
+ {
+ "x": -26.16,
+ "y": 189.66400000000002
+ },
+ {
+ "x": -20.88,
+ "y": 188.752
+ },
+ {
+ "x": -14.52,
+ "y": 187.40800000000002
+ },
+ {
+ "x": -7.439999999999998,
+ "y": 185.77599999999998
+ },
+ {
+ "x": 0.0,
+ "y": 184.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": 182.224
+ },
+ {
+ "x": 14.519999999999992,
+ "y": 180.592
+ },
+ {
+ "x": 20.880000000000006,
+ "y": 179.248
+ },
+ {
+ "x": 26.16,
+ "y": 178.33599999999998
+ },
+ {
+ "x": 30.0,
+ "y": 178.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 186.0
+ },
+ {
+ "x": -26.16,
+ "y": 186.336
+ },
+ {
+ "x": -20.88,
+ "y": 187.24800000000002
+ },
+ {
+ "x": -14.52,
+ "y": 188.592
+ },
+ {
+ "x": -7.439999999999998,
+ "y": 190.224
+ },
+ {
+ "x": 0.0,
+ "y": 192.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": 193.776
+ },
+ {
+ "x": 14.519999999999992,
+ "y": 195.408
+ },
+ {
+ "x": 20.880000000000006,
+ "y": 196.75199999999998
+ },
+ {
+ "x": 26.16,
+ "y": 197.664
+ },
+ {
+ "x": 30.0,
+ "y": 198.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 186.0
+ },
+ {
+ "x": -26.16,
+ "y": 186.224
+ },
+ {
+ "x": -20.88,
+ "y": 186.83200000000002
+ },
+ {
+ "x": -14.52,
+ "y": 187.728
+ },
+ {
+ "x": -7.439999999999998,
+ "y": 188.81599999999997
+ },
+ {
+ "x": 0.0,
+ "y": 190.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": 191.18400000000003
+ },
+ {
+ "x": 14.519999999999992,
+ "y": 192.272
+ },
+ {
+ "x": 20.880000000000006,
+ "y": 193.16799999999998
+ },
+ {
+ "x": 26.16,
+ "y": 193.77599999999998
+ },
+ {
+ "x": 30.0,
+ "y": 194.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 186.0
+ },
+ {
+ "x": -26.16,
+ "y": 186.112
+ },
+ {
+ "x": -20.88,
+ "y": 186.416
+ },
+ {
+ "x": -14.52,
+ "y": 186.86400000000003
+ },
+ {
+ "x": -7.439999999999998,
+ "y": 187.40800000000002
+ },
+ {
+ "x": 0.0,
+ "y": 188.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": 188.59199999999998
+ },
+ {
+ "x": 14.519999999999992,
+ "y": 189.136
+ },
+ {
+ "x": 20.880000000000006,
+ "y": 189.584
+ },
+ {
+ "x": 26.16,
+ "y": 189.888
+ },
+ {
+ "x": 30.0,
+ "y": 190.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 186.0
+ },
+ {
+ "x": -26.16,
+ "y": 186.0
+ },
+ {
+ "x": -20.88,
+ "y": 186.0
+ },
+ {
+ "x": -14.52,
+ "y": 186.0
+ },
+ {
+ "x": -7.439999999999998,
+ "y": 186.0
+ },
+ {
+ "x": 0.0,
+ "y": 186.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": 186.0
+ },
+ {
+ "x": 14.519999999999992,
+ "y": 186.0
+ },
+ {
+ "x": 20.880000000000006,
+ "y": 186.0
+ },
+ {
+ "x": 26.16,
+ "y": 186.0
+ },
+ {
+ "x": 30.0,
+ "y": 186.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 186.0
+ },
+ {
+ "x": -26.16,
+ "y": 185.888
+ },
+ {
+ "x": -20.88,
+ "y": 185.584
+ },
+ {
+ "x": -14.52,
+ "y": 185.13600000000002
+ },
+ {
+ "x": -7.439999999999998,
+ "y": 184.59199999999998
+ },
+ {
+ "x": 0.0,
+ "y": 184.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": 183.40800000000002
+ },
+ {
+ "x": 14.519999999999992,
+ "y": 182.864
+ },
+ {
+ "x": 20.880000000000006,
+ "y": 182.416
+ },
+ {
+ "x": 26.16,
+ "y": 182.112
+ },
+ {
+ "x": 30.0,
+ "y": 182.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 186.0
+ },
+ {
+ "x": -26.16,
+ "y": 185.776
+ },
+ {
+ "x": -20.88,
+ "y": 185.168
+ },
+ {
+ "x": -14.52,
+ "y": 184.27200000000002
+ },
+ {
+ "x": -7.439999999999998,
+ "y": 183.184
+ },
+ {
+ "x": 0.0,
+ "y": 182.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": 180.816
+ },
+ {
+ "x": 14.519999999999992,
+ "y": 179.728
+ },
+ {
+ "x": 20.880000000000006,
+ "y": 178.832
+ },
+ {
+ "x": 26.16,
+ "y": 178.224
+ },
+ {
+ "x": 30.0,
+ "y": 178.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 182.0
+ },
+ {
+ "x": -26.16,
+ "y": 182.448
+ },
+ {
+ "x": -20.88,
+ "y": 183.66400000000002
+ },
+ {
+ "x": -14.52,
+ "y": 185.45600000000002
+ },
+ {
+ "x": -7.439999999999998,
+ "y": 187.632
+ },
+ {
+ "x": 0.0,
+ "y": 190.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": 192.368
+ },
+ {
+ "x": 14.519999999999992,
+ "y": 194.54399999999998
+ },
+ {
+ "x": 20.880000000000006,
+ "y": 196.33599999999998
+ },
+ {
+ "x": 26.16,
+ "y": 197.552
+ },
+ {
+ "x": 30.0,
+ "y": 198.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 182.0
+ },
+ {
+ "x": -26.16,
+ "y": 182.33599999999998
+ },
+ {
+ "x": -20.88,
+ "y": 183.24800000000002
+ },
+ {
+ "x": -14.52,
+ "y": 184.592
+ },
+ {
+ "x": -7.439999999999998,
+ "y": 186.224
+ },
+ {
+ "x": 0.0,
+ "y": 188.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": 189.776
+ },
+ {
+ "x": 14.519999999999992,
+ "y": 191.408
+ },
+ {
+ "x": 20.880000000000006,
+ "y": 192.75199999999998
+ },
+ {
+ "x": 26.16,
+ "y": 193.664
+ },
+ {
+ "x": 30.0,
+ "y": 194.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 182.0
+ },
+ {
+ "x": -26.16,
+ "y": 182.224
+ },
+ {
+ "x": -20.88,
+ "y": 182.832
+ },
+ {
+ "x": -14.52,
+ "y": 183.728
+ },
+ {
+ "x": -7.439999999999998,
+ "y": 184.816
+ },
+ {
+ "x": 0.0,
+ "y": 186.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": 187.184
+ },
+ {
+ "x": 14.519999999999992,
+ "y": 188.272
+ },
+ {
+ "x": 20.880000000000006,
+ "y": 189.168
+ },
+ {
+ "x": 26.16,
+ "y": 189.776
+ },
+ {
+ "x": 30.0,
+ "y": 190.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 182.0
+ },
+ {
+ "x": -26.16,
+ "y": 182.112
+ },
+ {
+ "x": -20.88,
+ "y": 182.416
+ },
+ {
+ "x": -14.52,
+ "y": 182.86400000000003
+ },
+ {
+ "x": -7.439999999999998,
+ "y": 183.40800000000002
+ },
+ {
+ "x": 0.0,
+ "y": 184.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": 184.59199999999998
+ },
+ {
+ "x": 14.519999999999992,
+ "y": 185.136
+ },
+ {
+ "x": 20.880000000000006,
+ "y": 185.584
+ },
+ {
+ "x": 26.16,
+ "y": 185.888
+ },
+ {
+ "x": 30.0,
+ "y": 186.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 182.0
+ },
+ {
+ "x": -26.16,
+ "y": 182.0
+ },
+ {
+ "x": -20.88,
+ "y": 182.0
+ },
+ {
+ "x": -14.52,
+ "y": 182.00000000000003
+ },
+ {
+ "x": -7.439999999999998,
+ "y": 182.0
+ },
+ {
+ "x": 0.0,
+ "y": 182.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": 182.0
+ },
+ {
+ "x": 14.519999999999992,
+ "y": 182.0
+ },
+ {
+ "x": 20.880000000000006,
+ "y": 182.0
+ },
+ {
+ "x": 26.16,
+ "y": 182.0
+ },
+ {
+ "x": 30.0,
+ "y": 182.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 182.0
+ },
+ {
+ "x": -26.16,
+ "y": 181.888
+ },
+ {
+ "x": -20.88,
+ "y": 181.584
+ },
+ {
+ "x": -14.52,
+ "y": 181.13600000000002
+ },
+ {
+ "x": -7.439999999999998,
+ "y": 180.59199999999998
+ },
+ {
+ "x": 0.0,
+ "y": 180.0
+ },
+ {
+ "x": 7.440000000000009,
+ "y": 179.40800000000002
+ },
+ {
+ "x": 14.519999999999992,
+ "y": 178.864
+ },
+ {
+ "x": 20.880000000000006,
+ "y": 178.416
+ },
+ {
+ "x": 26.16,
+ "y": 178.112
+ },
+ {
+ "x": 30.0,
+ "y": 178.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_left",
+ "startRoad": "road_0_2_0",
+ "endRoad": "road_1_2_1",
+ "direction": 0,
+ "laneLinks": [
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 198.0
+ },
+ {
+ "x": -26.674,
+ "y": 198.62599999999998
+ },
+ {
+ "x": -22.832,
+ "y": 200.36800000000002
+ },
+ {
+ "x": -18.678,
+ "y": 203.02200000000002
+ },
+ {
+ "x": -14.415999999999999,
+ "y": 206.38400000000001
+ },
+ {
+ "x": -10.25,
+ "y": 210.25
+ },
+ {
+ "x": -6.383999999999996,
+ "y": 214.416
+ },
+ {
+ "x": -3.022000000000004,
+ "y": 218.67800000000003
+ },
+ {
+ "x": -0.3679999999999981,
+ "y": 222.83200000000002
+ },
+ {
+ "x": 1.3739999999999994,
+ "y": 226.674
+ },
+ {
+ "x": 2.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 198.0
+ },
+ {
+ "x": -26.562,
+ "y": 198.62599999999998
+ },
+ {
+ "x": -22.416,
+ "y": 200.36800000000002
+ },
+ {
+ "x": -17.814,
+ "y": 203.02200000000002
+ },
+ {
+ "x": -13.008,
+ "y": 206.38400000000001
+ },
+ {
+ "x": -8.25,
+ "y": 210.25
+ },
+ {
+ "x": -3.7919999999999954,
+ "y": 214.416
+ },
+ {
+ "x": 0.11399999999999633,
+ "y": 218.67800000000003
+ },
+ {
+ "x": 3.216000000000003,
+ "y": 222.83200000000002
+ },
+ {
+ "x": 5.262,
+ "y": 226.674
+ },
+ {
+ "x": 6.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 198.0
+ },
+ {
+ "x": -26.45,
+ "y": 198.62599999999998
+ },
+ {
+ "x": -22.0,
+ "y": 200.36800000000002
+ },
+ {
+ "x": -16.95,
+ "y": 203.02200000000002
+ },
+ {
+ "x": -11.599999999999998,
+ "y": 206.38400000000001
+ },
+ {
+ "x": -6.25,
+ "y": 210.25
+ },
+ {
+ "x": -1.1999999999999948,
+ "y": 214.416
+ },
+ {
+ "x": 3.2499999999999956,
+ "y": 218.67800000000003
+ },
+ {
+ "x": 6.8000000000000025,
+ "y": 222.83200000000002
+ },
+ {
+ "x": 9.149999999999999,
+ "y": 226.674
+ },
+ {
+ "x": 10.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 198.0
+ },
+ {
+ "x": -26.338,
+ "y": 198.62599999999998
+ },
+ {
+ "x": -21.584,
+ "y": 200.36800000000002
+ },
+ {
+ "x": -16.086,
+ "y": 203.02200000000002
+ },
+ {
+ "x": -10.191999999999998,
+ "y": 206.38400000000001
+ },
+ {
+ "x": -4.25,
+ "y": 210.25
+ },
+ {
+ "x": 1.3920000000000066,
+ "y": 214.416
+ },
+ {
+ "x": 6.385999999999996,
+ "y": 218.67800000000003
+ },
+ {
+ "x": 10.384000000000004,
+ "y": 222.83200000000002
+ },
+ {
+ "x": 13.038,
+ "y": 226.674
+ },
+ {
+ "x": 14.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 194.0
+ },
+ {
+ "x": -26.674,
+ "y": 194.73799999999997
+ },
+ {
+ "x": -22.832,
+ "y": 196.78400000000002
+ },
+ {
+ "x": -18.678,
+ "y": 199.88600000000002
+ },
+ {
+ "x": -14.415999999999999,
+ "y": 203.79200000000003
+ },
+ {
+ "x": -10.25,
+ "y": 208.25
+ },
+ {
+ "x": -6.383999999999996,
+ "y": 213.00799999999998
+ },
+ {
+ "x": -3.022000000000004,
+ "y": 217.81400000000002
+ },
+ {
+ "x": -0.3679999999999981,
+ "y": 222.41600000000003
+ },
+ {
+ "x": 1.3739999999999994,
+ "y": 226.562
+ },
+ {
+ "x": 2.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 194.0
+ },
+ {
+ "x": -26.562,
+ "y": 194.73799999999997
+ },
+ {
+ "x": -22.416,
+ "y": 196.78400000000002
+ },
+ {
+ "x": -17.814,
+ "y": 199.88600000000002
+ },
+ {
+ "x": -13.008,
+ "y": 203.79200000000003
+ },
+ {
+ "x": -8.25,
+ "y": 208.25
+ },
+ {
+ "x": -3.7919999999999954,
+ "y": 213.00799999999998
+ },
+ {
+ "x": 0.11399999999999633,
+ "y": 217.81400000000002
+ },
+ {
+ "x": 3.216000000000003,
+ "y": 222.41600000000003
+ },
+ {
+ "x": 5.262,
+ "y": 226.562
+ },
+ {
+ "x": 6.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 194.0
+ },
+ {
+ "x": -26.45,
+ "y": 194.73799999999997
+ },
+ {
+ "x": -22.0,
+ "y": 196.78400000000002
+ },
+ {
+ "x": -16.95,
+ "y": 199.88600000000002
+ },
+ {
+ "x": -11.599999999999998,
+ "y": 203.79200000000003
+ },
+ {
+ "x": -6.25,
+ "y": 208.25
+ },
+ {
+ "x": -1.1999999999999948,
+ "y": 213.00799999999998
+ },
+ {
+ "x": 3.2499999999999956,
+ "y": 217.81400000000002
+ },
+ {
+ "x": 6.8000000000000025,
+ "y": 222.41600000000003
+ },
+ {
+ "x": 9.149999999999999,
+ "y": 226.562
+ },
+ {
+ "x": 10.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 194.0
+ },
+ {
+ "x": -26.338,
+ "y": 194.73799999999997
+ },
+ {
+ "x": -21.584,
+ "y": 196.78400000000002
+ },
+ {
+ "x": -16.086,
+ "y": 199.88600000000002
+ },
+ {
+ "x": -10.191999999999998,
+ "y": 203.79200000000003
+ },
+ {
+ "x": -4.25,
+ "y": 208.25
+ },
+ {
+ "x": 1.3920000000000066,
+ "y": 213.00799999999998
+ },
+ {
+ "x": 6.385999999999996,
+ "y": 217.81400000000002
+ },
+ {
+ "x": 10.384000000000004,
+ "y": 222.41600000000003
+ },
+ {
+ "x": 13.038,
+ "y": 226.562
+ },
+ {
+ "x": 14.0,
+ "y": 230.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_right",
+ "startRoad": "road_0_2_0",
+ "endRoad": "road_1_2_3",
+ "direction": 0,
+ "laneLinks": [
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 182.0
+ },
+ {
+ "x": -26.786,
+ "y": 181.934
+ },
+ {
+ "x": -23.247999999999998,
+ "y": 181.71200000000002
+ },
+ {
+ "x": -19.541999999999998,
+ "y": 181.298
+ },
+ {
+ "x": -15.824,
+ "y": 180.656
+ },
+ {
+ "x": -12.25,
+ "y": 179.75
+ },
+ {
+ "x": -8.975999999999996,
+ "y": 178.54399999999998
+ },
+ {
+ "x": -6.158000000000003,
+ "y": 177.00199999999998
+ },
+ {
+ "x": -3.9519999999999986,
+ "y": 175.088
+ },
+ {
+ "x": -2.5140000000000002,
+ "y": 172.76600000000002
+ },
+ {
+ "x": -2.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 182.0
+ },
+ {
+ "x": -26.898,
+ "y": 181.934
+ },
+ {
+ "x": -23.663999999999998,
+ "y": 181.71200000000002
+ },
+ {
+ "x": -20.406,
+ "y": 181.298
+ },
+ {
+ "x": -17.232,
+ "y": 180.656
+ },
+ {
+ "x": -14.25,
+ "y": 179.75
+ },
+ {
+ "x": -11.567999999999998,
+ "y": 178.54399999999998
+ },
+ {
+ "x": -9.294000000000004,
+ "y": 177.00199999999998
+ },
+ {
+ "x": -7.536,
+ "y": 175.088
+ },
+ {
+ "x": -6.402,
+ "y": 172.76600000000002
+ },
+ {
+ "x": -6.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 182.0
+ },
+ {
+ "x": -27.01,
+ "y": 181.934
+ },
+ {
+ "x": -24.08,
+ "y": 181.71200000000002
+ },
+ {
+ "x": -21.27,
+ "y": 181.298
+ },
+ {
+ "x": -18.64,
+ "y": 180.656
+ },
+ {
+ "x": -16.25,
+ "y": 179.75
+ },
+ {
+ "x": -14.159999999999997,
+ "y": 178.54399999999998
+ },
+ {
+ "x": -12.430000000000003,
+ "y": 177.00199999999998
+ },
+ {
+ "x": -11.12,
+ "y": 175.088
+ },
+ {
+ "x": -10.29,
+ "y": 172.76600000000002
+ },
+ {
+ "x": -10.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 182.0
+ },
+ {
+ "x": -27.122,
+ "y": 181.934
+ },
+ {
+ "x": -24.496,
+ "y": 181.71200000000002
+ },
+ {
+ "x": -22.134,
+ "y": 181.298
+ },
+ {
+ "x": -20.048000000000002,
+ "y": 180.656
+ },
+ {
+ "x": -18.25,
+ "y": 179.75
+ },
+ {
+ "x": -16.752,
+ "y": 178.54399999999998
+ },
+ {
+ "x": -15.566000000000003,
+ "y": 177.00199999999998
+ },
+ {
+ "x": -14.704,
+ "y": 175.088
+ },
+ {
+ "x": -14.178,
+ "y": 172.76600000000002
+ },
+ {
+ "x": -14.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 178.0
+ },
+ {
+ "x": -26.786,
+ "y": 178.046
+ },
+ {
+ "x": -23.247999999999998,
+ "y": 178.12800000000001
+ },
+ {
+ "x": -19.541999999999998,
+ "y": 178.16199999999998
+ },
+ {
+ "x": -15.824,
+ "y": 178.064
+ },
+ {
+ "x": -12.25,
+ "y": 177.75
+ },
+ {
+ "x": -8.975999999999996,
+ "y": 177.136
+ },
+ {
+ "x": -6.158000000000003,
+ "y": 176.13799999999998
+ },
+ {
+ "x": -3.9519999999999986,
+ "y": 174.672
+ },
+ {
+ "x": -2.5140000000000002,
+ "y": 172.65400000000002
+ },
+ {
+ "x": -2.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 178.0
+ },
+ {
+ "x": -26.898,
+ "y": 178.046
+ },
+ {
+ "x": -23.663999999999998,
+ "y": 178.12800000000001
+ },
+ {
+ "x": -20.406,
+ "y": 178.16199999999998
+ },
+ {
+ "x": -17.232,
+ "y": 178.064
+ },
+ {
+ "x": -14.25,
+ "y": 177.75
+ },
+ {
+ "x": -11.567999999999998,
+ "y": 177.136
+ },
+ {
+ "x": -9.294000000000004,
+ "y": 176.13799999999998
+ },
+ {
+ "x": -7.536,
+ "y": 174.672
+ },
+ {
+ "x": -6.402,
+ "y": 172.65400000000002
+ },
+ {
+ "x": -6.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 178.0
+ },
+ {
+ "x": -27.01,
+ "y": 178.046
+ },
+ {
+ "x": -24.08,
+ "y": 178.12800000000001
+ },
+ {
+ "x": -21.27,
+ "y": 178.16199999999998
+ },
+ {
+ "x": -18.64,
+ "y": 178.064
+ },
+ {
+ "x": -16.25,
+ "y": 177.75
+ },
+ {
+ "x": -14.159999999999997,
+ "y": 177.136
+ },
+ {
+ "x": -12.430000000000003,
+ "y": 176.13799999999998
+ },
+ {
+ "x": -11.12,
+ "y": 174.672
+ },
+ {
+ "x": -10.29,
+ "y": 172.65400000000002
+ },
+ {
+ "x": -10.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": -30.0,
+ "y": 178.0
+ },
+ {
+ "x": -27.122,
+ "y": 178.046
+ },
+ {
+ "x": -24.496,
+ "y": 178.12800000000001
+ },
+ {
+ "x": -22.134,
+ "y": 178.16199999999998
+ },
+ {
+ "x": -20.048000000000002,
+ "y": 178.064
+ },
+ {
+ "x": -18.25,
+ "y": 177.75
+ },
+ {
+ "x": -16.752,
+ "y": 177.136
+ },
+ {
+ "x": -15.566000000000003,
+ "y": 176.13799999999998
+ },
+ {
+ "x": -14.704,
+ "y": 174.672
+ },
+ {
+ "x": -14.178,
+ "y": 172.65400000000002
+ },
+ {
+ "x": -14.0,
+ "y": 170.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_right",
+ "startRoad": "road_1_1_1",
+ "endRoad": "road_1_2_0",
+ "direction": 1,
+ "laneLinks": [
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 14.0,
+ "y": 170.0
+ },
+ {
+ "x": 14.178,
+ "y": 173.21400000000003
+ },
+ {
+ "x": 14.704,
+ "y": 176.752
+ },
+ {
+ "x": 15.566000000000003,
+ "y": 180.458
+ },
+ {
+ "x": 16.752000000000002,
+ "y": 184.176
+ },
+ {
+ "x": 18.25,
+ "y": 187.75
+ },
+ {
+ "x": 20.048000000000002,
+ "y": 191.024
+ },
+ {
+ "x": 22.133999999999997,
+ "y": 193.84199999999998
+ },
+ {
+ "x": 24.496000000000002,
+ "y": 196.048
+ },
+ {
+ "x": 27.122,
+ "y": 197.486
+ },
+ {
+ "x": 30.0,
+ "y": 198.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 14.0,
+ "y": 170.0
+ },
+ {
+ "x": 14.178,
+ "y": 173.102
+ },
+ {
+ "x": 14.704,
+ "y": 176.336
+ },
+ {
+ "x": 15.566000000000003,
+ "y": 179.594
+ },
+ {
+ "x": 16.752000000000002,
+ "y": 182.76799999999997
+ },
+ {
+ "x": 18.25,
+ "y": 185.75
+ },
+ {
+ "x": 20.048000000000002,
+ "y": 188.43200000000002
+ },
+ {
+ "x": 22.133999999999997,
+ "y": 190.706
+ },
+ {
+ "x": 24.496000000000002,
+ "y": 192.464
+ },
+ {
+ "x": 27.122,
+ "y": 193.59799999999998
+ },
+ {
+ "x": 30.0,
+ "y": 194.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 14.0,
+ "y": 170.0
+ },
+ {
+ "x": 14.178,
+ "y": 172.99
+ },
+ {
+ "x": 14.704,
+ "y": 175.92000000000002
+ },
+ {
+ "x": 15.566000000000003,
+ "y": 178.73000000000002
+ },
+ {
+ "x": 16.752000000000002,
+ "y": 181.36
+ },
+ {
+ "x": 18.25,
+ "y": 183.75
+ },
+ {
+ "x": 20.048000000000002,
+ "y": 185.83999999999997
+ },
+ {
+ "x": 22.133999999999997,
+ "y": 187.57
+ },
+ {
+ "x": 24.496000000000002,
+ "y": 188.88000000000002
+ },
+ {
+ "x": 27.122,
+ "y": 189.71
+ },
+ {
+ "x": 30.0,
+ "y": 190.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 14.0,
+ "y": 170.0
+ },
+ {
+ "x": 14.178,
+ "y": 172.87800000000001
+ },
+ {
+ "x": 14.704,
+ "y": 175.504
+ },
+ {
+ "x": 15.566000000000003,
+ "y": 177.86599999999999
+ },
+ {
+ "x": 16.752000000000002,
+ "y": 179.952
+ },
+ {
+ "x": 18.25,
+ "y": 181.75
+ },
+ {
+ "x": 20.048000000000002,
+ "y": 183.248
+ },
+ {
+ "x": 22.133999999999997,
+ "y": 184.434
+ },
+ {
+ "x": 24.496000000000002,
+ "y": 185.29600000000002
+ },
+ {
+ "x": 27.122,
+ "y": 185.822
+ },
+ {
+ "x": 30.0,
+ "y": 186.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 14.0,
+ "y": 170.0
+ },
+ {
+ "x": 14.178,
+ "y": 172.76600000000002
+ },
+ {
+ "x": 14.704,
+ "y": 175.088
+ },
+ {
+ "x": 15.566000000000003,
+ "y": 177.002
+ },
+ {
+ "x": 16.752000000000002,
+ "y": 178.54399999999998
+ },
+ {
+ "x": 18.25,
+ "y": 179.75
+ },
+ {
+ "x": 20.048000000000002,
+ "y": 180.656
+ },
+ {
+ "x": 22.133999999999997,
+ "y": 181.298
+ },
+ {
+ "x": 24.496000000000002,
+ "y": 181.71200000000002
+ },
+ {
+ "x": 27.122,
+ "y": 181.934
+ },
+ {
+ "x": 30.0,
+ "y": 182.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 14.0,
+ "y": 170.0
+ },
+ {
+ "x": 14.178,
+ "y": 172.65400000000002
+ },
+ {
+ "x": 14.704,
+ "y": 174.672
+ },
+ {
+ "x": 15.566000000000003,
+ "y": 176.138
+ },
+ {
+ "x": 16.752000000000002,
+ "y": 177.136
+ },
+ {
+ "x": 18.25,
+ "y": 177.75
+ },
+ {
+ "x": 20.048000000000002,
+ "y": 178.064
+ },
+ {
+ "x": 22.133999999999997,
+ "y": 178.162
+ },
+ {
+ "x": 24.496000000000002,
+ "y": 178.12800000000001
+ },
+ {
+ "x": 27.122,
+ "y": 178.046
+ },
+ {
+ "x": 30.0,
+ "y": 178.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "go_straight",
+ "startRoad": "road_1_1_1",
+ "endRoad": "road_1_2_1",
+ "direction": 1,
+ "laneLinks": [
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 6.0,
+ "y": 170.0
+ },
+ {
+ "x": 5.888,
+ "y": 173.84
+ },
+ {
+ "x": 5.5840000000000005,
+ "y": 179.12
+ },
+ {
+ "x": 5.136000000000001,
+ "y": 185.48000000000002
+ },
+ {
+ "x": 4.592,
+ "y": 192.56
+ },
+ {
+ "x": 4.0,
+ "y": 200.0
+ },
+ {
+ "x": 3.4079999999999995,
+ "y": 207.44
+ },
+ {
+ "x": 2.8640000000000003,
+ "y": 214.52
+ },
+ {
+ "x": 2.4159999999999995,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 2.112,
+ "y": 226.16
+ },
+ {
+ "x": 2.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 6.0,
+ "y": 170.0
+ },
+ {
+ "x": 6.0,
+ "y": 173.84
+ },
+ {
+ "x": 6.0,
+ "y": 179.12
+ },
+ {
+ "x": 6.000000000000001,
+ "y": 185.48000000000002
+ },
+ {
+ "x": 6.0,
+ "y": 192.56
+ },
+ {
+ "x": 6.0,
+ "y": 200.0
+ },
+ {
+ "x": 6.0,
+ "y": 207.44
+ },
+ {
+ "x": 6.0,
+ "y": 214.52
+ },
+ {
+ "x": 6.0,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 6.0,
+ "y": 226.16
+ },
+ {
+ "x": 6.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 6.0,
+ "y": 170.0
+ },
+ {
+ "x": 6.112,
+ "y": 173.84
+ },
+ {
+ "x": 6.416,
+ "y": 179.12
+ },
+ {
+ "x": 6.864000000000001,
+ "y": 185.48000000000002
+ },
+ {
+ "x": 7.408,
+ "y": 192.56
+ },
+ {
+ "x": 8.0,
+ "y": 200.0
+ },
+ {
+ "x": 8.592,
+ "y": 207.44
+ },
+ {
+ "x": 9.136,
+ "y": 214.52
+ },
+ {
+ "x": 9.584,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 9.887999999999998,
+ "y": 226.16
+ },
+ {
+ "x": 10.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 6.0,
+ "y": 170.0
+ },
+ {
+ "x": 6.224,
+ "y": 173.84
+ },
+ {
+ "x": 6.832000000000001,
+ "y": 179.12
+ },
+ {
+ "x": 7.7280000000000015,
+ "y": 185.48000000000002
+ },
+ {
+ "x": 8.816,
+ "y": 192.56
+ },
+ {
+ "x": 10.0,
+ "y": 200.0
+ },
+ {
+ "x": 11.184000000000001,
+ "y": 207.44
+ },
+ {
+ "x": 12.272,
+ "y": 214.52
+ },
+ {
+ "x": 13.168000000000001,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 13.776,
+ "y": 226.16
+ },
+ {
+ "x": 14.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 10.0,
+ "y": 170.0
+ },
+ {
+ "x": 9.775999999999998,
+ "y": 173.84
+ },
+ {
+ "x": 9.168000000000001,
+ "y": 179.12
+ },
+ {
+ "x": 8.272,
+ "y": 185.48000000000002
+ },
+ {
+ "x": 7.183999999999999,
+ "y": 192.56
+ },
+ {
+ "x": 6.0,
+ "y": 200.0
+ },
+ {
+ "x": 4.815999999999999,
+ "y": 207.44
+ },
+ {
+ "x": 3.7280000000000006,
+ "y": 214.52
+ },
+ {
+ "x": 2.831999999999999,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 2.224,
+ "y": 226.16
+ },
+ {
+ "x": 2.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 10.0,
+ "y": 170.0
+ },
+ {
+ "x": 9.887999999999998,
+ "y": 173.84
+ },
+ {
+ "x": 9.584000000000001,
+ "y": 179.12
+ },
+ {
+ "x": 9.136,
+ "y": 185.48000000000002
+ },
+ {
+ "x": 8.591999999999999,
+ "y": 192.56
+ },
+ {
+ "x": 8.0,
+ "y": 200.0
+ },
+ {
+ "x": 7.4079999999999995,
+ "y": 207.44
+ },
+ {
+ "x": 6.864000000000001,
+ "y": 214.52
+ },
+ {
+ "x": 6.416,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 6.112,
+ "y": 226.16
+ },
+ {
+ "x": 6.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 10.0,
+ "y": 170.0
+ },
+ {
+ "x": 9.999999999999998,
+ "y": 173.84
+ },
+ {
+ "x": 10.000000000000002,
+ "y": 179.12
+ },
+ {
+ "x": 10.0,
+ "y": 185.48000000000002
+ },
+ {
+ "x": 10.0,
+ "y": 192.56
+ },
+ {
+ "x": 10.0,
+ "y": 200.0
+ },
+ {
+ "x": 10.0,
+ "y": 207.44
+ },
+ {
+ "x": 10.0,
+ "y": 214.52
+ },
+ {
+ "x": 10.0,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 10.0,
+ "y": 226.16
+ },
+ {
+ "x": 10.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 10.0,
+ "y": 170.0
+ },
+ {
+ "x": 10.111999999999998,
+ "y": 173.84
+ },
+ {
+ "x": 10.416,
+ "y": 179.12
+ },
+ {
+ "x": 10.864,
+ "y": 185.48000000000002
+ },
+ {
+ "x": 11.408,
+ "y": 192.56
+ },
+ {
+ "x": 12.0,
+ "y": 200.0
+ },
+ {
+ "x": 12.592000000000002,
+ "y": 207.44
+ },
+ {
+ "x": 13.136,
+ "y": 214.52
+ },
+ {
+ "x": 13.584000000000001,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 13.888000000000002,
+ "y": 226.16
+ },
+ {
+ "x": 14.0,
+ "y": 230.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_left",
+ "startRoad": "road_1_1_1",
+ "endRoad": "road_1_2_2",
+ "direction": 1,
+ "laneLinks": [
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 2.0,
+ "y": 170.0
+ },
+ {
+ "x": 1.3739999999999999,
+ "y": 173.32600000000002
+ },
+ {
+ "x": -0.3680000000000003,
+ "y": 177.168
+ },
+ {
+ "x": -3.0220000000000007,
+ "y": 181.322
+ },
+ {
+ "x": -6.384000000000002,
+ "y": 185.584
+ },
+ {
+ "x": -10.25,
+ "y": 189.75
+ },
+ {
+ "x": -14.416000000000004,
+ "y": 193.61599999999999
+ },
+ {
+ "x": -18.677999999999997,
+ "y": 196.978
+ },
+ {
+ "x": -22.832000000000004,
+ "y": 199.632
+ },
+ {
+ "x": -26.674,
+ "y": 201.374
+ },
+ {
+ "x": -30.0,
+ "y": 202.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 2.0,
+ "y": 170.0
+ },
+ {
+ "x": 1.3739999999999999,
+ "y": 173.43800000000002
+ },
+ {
+ "x": -0.3680000000000003,
+ "y": 177.584
+ },
+ {
+ "x": -3.0220000000000007,
+ "y": 182.186
+ },
+ {
+ "x": -6.384000000000002,
+ "y": 186.992
+ },
+ {
+ "x": -10.25,
+ "y": 191.75
+ },
+ {
+ "x": -14.416000000000004,
+ "y": 196.208
+ },
+ {
+ "x": -18.677999999999997,
+ "y": 200.114
+ },
+ {
+ "x": -22.832000000000004,
+ "y": 203.216
+ },
+ {
+ "x": -26.674,
+ "y": 205.262
+ },
+ {
+ "x": -30.0,
+ "y": 206.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 2.0,
+ "y": 170.0
+ },
+ {
+ "x": 1.3739999999999999,
+ "y": 173.55
+ },
+ {
+ "x": -0.3680000000000003,
+ "y": 178.0
+ },
+ {
+ "x": -3.0220000000000007,
+ "y": 183.05
+ },
+ {
+ "x": -6.384000000000002,
+ "y": 188.39999999999998
+ },
+ {
+ "x": -10.25,
+ "y": 193.75
+ },
+ {
+ "x": -14.416000000000004,
+ "y": 198.8
+ },
+ {
+ "x": -18.677999999999997,
+ "y": 203.25
+ },
+ {
+ "x": -22.832000000000004,
+ "y": 206.8
+ },
+ {
+ "x": -26.674,
+ "y": 209.15
+ },
+ {
+ "x": -30.0,
+ "y": 210.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 2.0,
+ "y": 170.0
+ },
+ {
+ "x": 1.3739999999999999,
+ "y": 173.662
+ },
+ {
+ "x": -0.3680000000000003,
+ "y": 178.416
+ },
+ {
+ "x": -3.0220000000000007,
+ "y": 183.914
+ },
+ {
+ "x": -6.384000000000002,
+ "y": 189.808
+ },
+ {
+ "x": -10.25,
+ "y": 195.75
+ },
+ {
+ "x": -14.416000000000004,
+ "y": 201.392
+ },
+ {
+ "x": -18.677999999999997,
+ "y": 206.386
+ },
+ {
+ "x": -22.832000000000004,
+ "y": 210.38400000000001
+ },
+ {
+ "x": -26.674,
+ "y": 213.03799999999998
+ },
+ {
+ "x": -30.0,
+ "y": 214.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 2.0,
+ "y": 170.0
+ },
+ {
+ "x": 1.3739999999999999,
+ "y": 173.77400000000003
+ },
+ {
+ "x": -0.3680000000000003,
+ "y": 178.832
+ },
+ {
+ "x": -3.0220000000000007,
+ "y": 184.77800000000002
+ },
+ {
+ "x": -6.384000000000002,
+ "y": 191.216
+ },
+ {
+ "x": -10.25,
+ "y": 197.75
+ },
+ {
+ "x": -14.416000000000004,
+ "y": 203.984
+ },
+ {
+ "x": -18.677999999999997,
+ "y": 209.522
+ },
+ {
+ "x": -22.832000000000004,
+ "y": 213.96800000000002
+ },
+ {
+ "x": -26.674,
+ "y": 216.926
+ },
+ {
+ "x": -30.0,
+ "y": 218.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 2.0,
+ "y": 170.0
+ },
+ {
+ "x": 1.3739999999999999,
+ "y": 173.88600000000002
+ },
+ {
+ "x": -0.3680000000000003,
+ "y": 179.248
+ },
+ {
+ "x": -3.0220000000000007,
+ "y": 185.642
+ },
+ {
+ "x": -6.384000000000002,
+ "y": 192.624
+ },
+ {
+ "x": -10.25,
+ "y": 199.75
+ },
+ {
+ "x": -14.416000000000004,
+ "y": 206.576
+ },
+ {
+ "x": -18.677999999999997,
+ "y": 212.658
+ },
+ {
+ "x": -22.832000000000004,
+ "y": 217.55200000000002
+ },
+ {
+ "x": -26.674,
+ "y": 220.814
+ },
+ {
+ "x": -30.0,
+ "y": 222.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_right",
+ "startRoad": "road_2_2_2",
+ "endRoad": "road_1_2_1",
+ "direction": 2,
+ "laneLinks": [
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 218.0
+ },
+ {
+ "x": 26.786,
+ "y": 218.06599999999997
+ },
+ {
+ "x": 23.247999999999998,
+ "y": 218.288
+ },
+ {
+ "x": 19.541999999999998,
+ "y": 218.70200000000003
+ },
+ {
+ "x": 15.824,
+ "y": 219.344
+ },
+ {
+ "x": 12.25,
+ "y": 220.25
+ },
+ {
+ "x": 8.975999999999996,
+ "y": 221.45600000000002
+ },
+ {
+ "x": 6.158000000000003,
+ "y": 222.99800000000002
+ },
+ {
+ "x": 3.9519999999999986,
+ "y": 224.912
+ },
+ {
+ "x": 2.5140000000000002,
+ "y": 227.234
+ },
+ {
+ "x": 2.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 218.0
+ },
+ {
+ "x": 26.898,
+ "y": 218.06599999999997
+ },
+ {
+ "x": 23.663999999999998,
+ "y": 218.288
+ },
+ {
+ "x": 20.406,
+ "y": 218.70200000000003
+ },
+ {
+ "x": 17.232,
+ "y": 219.344
+ },
+ {
+ "x": 14.25,
+ "y": 220.25
+ },
+ {
+ "x": 11.567999999999998,
+ "y": 221.45600000000002
+ },
+ {
+ "x": 9.294000000000004,
+ "y": 222.99800000000002
+ },
+ {
+ "x": 7.536,
+ "y": 224.912
+ },
+ {
+ "x": 6.402,
+ "y": 227.234
+ },
+ {
+ "x": 6.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 218.0
+ },
+ {
+ "x": 27.01,
+ "y": 218.06599999999997
+ },
+ {
+ "x": 24.08,
+ "y": 218.288
+ },
+ {
+ "x": 21.27,
+ "y": 218.70200000000003
+ },
+ {
+ "x": 18.64,
+ "y": 219.344
+ },
+ {
+ "x": 16.25,
+ "y": 220.25
+ },
+ {
+ "x": 14.159999999999997,
+ "y": 221.45600000000002
+ },
+ {
+ "x": 12.430000000000003,
+ "y": 222.99800000000002
+ },
+ {
+ "x": 11.12,
+ "y": 224.912
+ },
+ {
+ "x": 10.29,
+ "y": 227.234
+ },
+ {
+ "x": 10.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 218.0
+ },
+ {
+ "x": 27.122,
+ "y": 218.06599999999997
+ },
+ {
+ "x": 24.496,
+ "y": 218.288
+ },
+ {
+ "x": 22.134,
+ "y": 218.70200000000003
+ },
+ {
+ "x": 20.048000000000002,
+ "y": 219.344
+ },
+ {
+ "x": 18.25,
+ "y": 220.25
+ },
+ {
+ "x": 16.752,
+ "y": 221.45600000000002
+ },
+ {
+ "x": 15.566000000000003,
+ "y": 222.99800000000002
+ },
+ {
+ "x": 14.704,
+ "y": 224.912
+ },
+ {
+ "x": 14.178,
+ "y": 227.234
+ },
+ {
+ "x": 14.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 222.0
+ },
+ {
+ "x": 26.786,
+ "y": 221.95399999999998
+ },
+ {
+ "x": 23.247999999999998,
+ "y": 221.872
+ },
+ {
+ "x": 19.541999999999998,
+ "y": 221.83800000000002
+ },
+ {
+ "x": 15.824,
+ "y": 221.93599999999998
+ },
+ {
+ "x": 12.25,
+ "y": 222.25
+ },
+ {
+ "x": 8.975999999999996,
+ "y": 222.864
+ },
+ {
+ "x": 6.158000000000003,
+ "y": 223.86200000000002
+ },
+ {
+ "x": 3.9519999999999986,
+ "y": 225.328
+ },
+ {
+ "x": 2.5140000000000002,
+ "y": 227.346
+ },
+ {
+ "x": 2.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 222.0
+ },
+ {
+ "x": 26.898,
+ "y": 221.95399999999998
+ },
+ {
+ "x": 23.663999999999998,
+ "y": 221.872
+ },
+ {
+ "x": 20.406,
+ "y": 221.83800000000002
+ },
+ {
+ "x": 17.232,
+ "y": 221.93599999999998
+ },
+ {
+ "x": 14.25,
+ "y": 222.25
+ },
+ {
+ "x": 11.567999999999998,
+ "y": 222.864
+ },
+ {
+ "x": 9.294000000000004,
+ "y": 223.86200000000002
+ },
+ {
+ "x": 7.536,
+ "y": 225.328
+ },
+ {
+ "x": 6.402,
+ "y": 227.346
+ },
+ {
+ "x": 6.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 222.0
+ },
+ {
+ "x": 27.01,
+ "y": 221.95399999999998
+ },
+ {
+ "x": 24.08,
+ "y": 221.872
+ },
+ {
+ "x": 21.27,
+ "y": 221.83800000000002
+ },
+ {
+ "x": 18.64,
+ "y": 221.93599999999998
+ },
+ {
+ "x": 16.25,
+ "y": 222.25
+ },
+ {
+ "x": 14.159999999999997,
+ "y": 222.864
+ },
+ {
+ "x": 12.430000000000003,
+ "y": 223.86200000000002
+ },
+ {
+ "x": 11.12,
+ "y": 225.328
+ },
+ {
+ "x": 10.29,
+ "y": 227.346
+ },
+ {
+ "x": 10.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 222.0
+ },
+ {
+ "x": 27.122,
+ "y": 221.95399999999998
+ },
+ {
+ "x": 24.496,
+ "y": 221.872
+ },
+ {
+ "x": 22.134,
+ "y": 221.83800000000002
+ },
+ {
+ "x": 20.048000000000002,
+ "y": 221.93599999999998
+ },
+ {
+ "x": 18.25,
+ "y": 222.25
+ },
+ {
+ "x": 16.752,
+ "y": 222.864
+ },
+ {
+ "x": 15.566000000000003,
+ "y": 223.86200000000002
+ },
+ {
+ "x": 14.704,
+ "y": 225.328
+ },
+ {
+ "x": 14.178,
+ "y": 227.346
+ },
+ {
+ "x": 14.0,
+ "y": 230.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "go_straight",
+ "startRoad": "road_2_2_2",
+ "endRoad": "road_1_2_2",
+ "direction": 2,
+ "laneLinks": [
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 210.0
+ },
+ {
+ "x": 26.16,
+ "y": 209.776
+ },
+ {
+ "x": 20.88,
+ "y": 209.168
+ },
+ {
+ "x": 14.52,
+ "y": 208.27200000000002
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 207.184
+ },
+ {
+ "x": 0.0,
+ "y": 206.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 204.81599999999997
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 203.728
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 202.832
+ },
+ {
+ "x": -26.16,
+ "y": 202.224
+ },
+ {
+ "x": -30.0,
+ "y": 202.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 210.0
+ },
+ {
+ "x": 26.16,
+ "y": 209.888
+ },
+ {
+ "x": 20.88,
+ "y": 209.584
+ },
+ {
+ "x": 14.52,
+ "y": 209.13600000000002
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 208.59199999999998
+ },
+ {
+ "x": 0.0,
+ "y": 208.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 207.40800000000002
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 206.864
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 206.416
+ },
+ {
+ "x": -26.16,
+ "y": 206.112
+ },
+ {
+ "x": -30.0,
+ "y": 206.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 210.0
+ },
+ {
+ "x": 26.16,
+ "y": 210.0
+ },
+ {
+ "x": 20.88,
+ "y": 210.0
+ },
+ {
+ "x": 14.52,
+ "y": 210.00000000000003
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 210.0
+ },
+ {
+ "x": 0.0,
+ "y": 210.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 210.0
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 210.0
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 210.0
+ },
+ {
+ "x": -26.16,
+ "y": 210.0
+ },
+ {
+ "x": -30.0,
+ "y": 210.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 210.0
+ },
+ {
+ "x": 26.16,
+ "y": 210.112
+ },
+ {
+ "x": 20.88,
+ "y": 210.416
+ },
+ {
+ "x": 14.52,
+ "y": 210.86400000000003
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 211.40800000000002
+ },
+ {
+ "x": 0.0,
+ "y": 212.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 212.59199999999998
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 213.136
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 213.584
+ },
+ {
+ "x": -26.16,
+ "y": 213.88799999999998
+ },
+ {
+ "x": -30.0,
+ "y": 214.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 210.0
+ },
+ {
+ "x": 26.16,
+ "y": 210.22400000000002
+ },
+ {
+ "x": 20.88,
+ "y": 210.832
+ },
+ {
+ "x": 14.52,
+ "y": 211.728
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 212.816
+ },
+ {
+ "x": 0.0,
+ "y": 214.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 215.18400000000003
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 216.272
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 217.168
+ },
+ {
+ "x": -26.16,
+ "y": 217.77599999999998
+ },
+ {
+ "x": -30.0,
+ "y": 218.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 210.0
+ },
+ {
+ "x": 26.16,
+ "y": 210.336
+ },
+ {
+ "x": 20.88,
+ "y": 211.248
+ },
+ {
+ "x": 14.52,
+ "y": 212.592
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 214.224
+ },
+ {
+ "x": 0.0,
+ "y": 216.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 217.776
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 219.408
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 220.752
+ },
+ {
+ "x": -26.16,
+ "y": 221.664
+ },
+ {
+ "x": -30.0,
+ "y": 222.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 214.0
+ },
+ {
+ "x": 26.16,
+ "y": 213.664
+ },
+ {
+ "x": 20.88,
+ "y": 212.752
+ },
+ {
+ "x": 14.52,
+ "y": 211.40800000000002
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 209.77599999999998
+ },
+ {
+ "x": 0.0,
+ "y": 208.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 206.224
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 204.592
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 203.248
+ },
+ {
+ "x": -26.16,
+ "y": 202.336
+ },
+ {
+ "x": -30.0,
+ "y": 202.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 214.0
+ },
+ {
+ "x": 26.16,
+ "y": 213.77599999999998
+ },
+ {
+ "x": 20.88,
+ "y": 213.168
+ },
+ {
+ "x": 14.52,
+ "y": 212.27200000000002
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 211.18399999999997
+ },
+ {
+ "x": 0.0,
+ "y": 210.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 208.816
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 207.728
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 206.832
+ },
+ {
+ "x": -26.16,
+ "y": 206.22400000000002
+ },
+ {
+ "x": -30.0,
+ "y": 206.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 214.0
+ },
+ {
+ "x": 26.16,
+ "y": 213.88799999999998
+ },
+ {
+ "x": 20.88,
+ "y": 213.584
+ },
+ {
+ "x": 14.52,
+ "y": 213.13600000000002
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 212.59199999999998
+ },
+ {
+ "x": 0.0,
+ "y": 212.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 211.40800000000002
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 210.864
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 210.416
+ },
+ {
+ "x": -26.16,
+ "y": 210.11200000000002
+ },
+ {
+ "x": -30.0,
+ "y": 210.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 214.0
+ },
+ {
+ "x": 26.16,
+ "y": 213.99999999999997
+ },
+ {
+ "x": 20.88,
+ "y": 214.0
+ },
+ {
+ "x": 14.52,
+ "y": 214.0
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 214.0
+ },
+ {
+ "x": 0.0,
+ "y": 214.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 214.0
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 214.0
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 214.0
+ },
+ {
+ "x": -26.16,
+ "y": 214.0
+ },
+ {
+ "x": -30.0,
+ "y": 214.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 214.0
+ },
+ {
+ "x": 26.16,
+ "y": 214.112
+ },
+ {
+ "x": 20.88,
+ "y": 214.416
+ },
+ {
+ "x": 14.52,
+ "y": 214.86400000000003
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 215.408
+ },
+ {
+ "x": 0.0,
+ "y": 216.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 216.592
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 217.136
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 217.584
+ },
+ {
+ "x": -26.16,
+ "y": 217.888
+ },
+ {
+ "x": -30.0,
+ "y": 218.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 214.0
+ },
+ {
+ "x": 26.16,
+ "y": 214.224
+ },
+ {
+ "x": 20.88,
+ "y": 214.832
+ },
+ {
+ "x": 14.52,
+ "y": 215.728
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 216.81599999999997
+ },
+ {
+ "x": 0.0,
+ "y": 218.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 219.184
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 220.272
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 221.168
+ },
+ {
+ "x": -26.16,
+ "y": 221.776
+ },
+ {
+ "x": -30.0,
+ "y": 222.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 218.0
+ },
+ {
+ "x": 26.16,
+ "y": 217.552
+ },
+ {
+ "x": 20.88,
+ "y": 216.336
+ },
+ {
+ "x": 14.52,
+ "y": 214.544
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 212.368
+ },
+ {
+ "x": 0.0,
+ "y": 210.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 207.632
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 205.45600000000002
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 203.664
+ },
+ {
+ "x": -26.16,
+ "y": 202.448
+ },
+ {
+ "x": -30.0,
+ "y": 202.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 218.0
+ },
+ {
+ "x": 26.16,
+ "y": 217.664
+ },
+ {
+ "x": 20.88,
+ "y": 216.752
+ },
+ {
+ "x": 14.52,
+ "y": 215.40800000000002
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 213.776
+ },
+ {
+ "x": 0.0,
+ "y": 212.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 210.224
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 208.592
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 207.248
+ },
+ {
+ "x": -26.16,
+ "y": 206.336
+ },
+ {
+ "x": -30.0,
+ "y": 206.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 218.0
+ },
+ {
+ "x": 26.16,
+ "y": 217.77599999999998
+ },
+ {
+ "x": 20.88,
+ "y": 217.168
+ },
+ {
+ "x": 14.52,
+ "y": 216.27200000000002
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 215.184
+ },
+ {
+ "x": 0.0,
+ "y": 214.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 212.81600000000003
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 211.728
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 210.832
+ },
+ {
+ "x": -26.16,
+ "y": 210.22400000000002
+ },
+ {
+ "x": -30.0,
+ "y": 210.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 218.0
+ },
+ {
+ "x": 26.16,
+ "y": 217.88799999999998
+ },
+ {
+ "x": 20.88,
+ "y": 217.584
+ },
+ {
+ "x": 14.52,
+ "y": 217.13600000000002
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 216.59199999999998
+ },
+ {
+ "x": 0.0,
+ "y": 216.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 215.40800000000002
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 214.864
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 214.416
+ },
+ {
+ "x": -26.16,
+ "y": 214.112
+ },
+ {
+ "x": -30.0,
+ "y": 214.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 218.0
+ },
+ {
+ "x": 26.16,
+ "y": 218.0
+ },
+ {
+ "x": 20.88,
+ "y": 218.0
+ },
+ {
+ "x": 14.52,
+ "y": 218.0
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 218.0
+ },
+ {
+ "x": 0.0,
+ "y": 218.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 218.0
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 218.0
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 218.0
+ },
+ {
+ "x": -26.16,
+ "y": 218.0
+ },
+ {
+ "x": -30.0,
+ "y": 218.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 218.0
+ },
+ {
+ "x": 26.16,
+ "y": 218.112
+ },
+ {
+ "x": 20.88,
+ "y": 218.416
+ },
+ {
+ "x": 14.52,
+ "y": 218.864
+ },
+ {
+ "x": 7.439999999999998,
+ "y": 219.40800000000002
+ },
+ {
+ "x": 0.0,
+ "y": 220.0
+ },
+ {
+ "x": -7.440000000000009,
+ "y": 220.59199999999998
+ },
+ {
+ "x": -14.519999999999992,
+ "y": 221.136
+ },
+ {
+ "x": -20.880000000000006,
+ "y": 221.584
+ },
+ {
+ "x": -26.16,
+ "y": 221.888
+ },
+ {
+ "x": -30.0,
+ "y": 222.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_left",
+ "startRoad": "road_2_2_2",
+ "endRoad": "road_1_2_3",
+ "direction": 2,
+ "laneLinks": [
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 202.0
+ },
+ {
+ "x": 26.674,
+ "y": 201.374
+ },
+ {
+ "x": 22.832,
+ "y": 199.632
+ },
+ {
+ "x": 18.678,
+ "y": 196.97799999999998
+ },
+ {
+ "x": 14.415999999999999,
+ "y": 193.61599999999999
+ },
+ {
+ "x": 10.25,
+ "y": 189.75
+ },
+ {
+ "x": 6.383999999999996,
+ "y": 185.584
+ },
+ {
+ "x": 3.022000000000004,
+ "y": 181.32199999999997
+ },
+ {
+ "x": 0.3679999999999981,
+ "y": 177.168
+ },
+ {
+ "x": -1.3739999999999994,
+ "y": 173.32600000000002
+ },
+ {
+ "x": -2.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 202.0
+ },
+ {
+ "x": 26.562,
+ "y": 201.374
+ },
+ {
+ "x": 22.416,
+ "y": 199.632
+ },
+ {
+ "x": 17.814,
+ "y": 196.97799999999998
+ },
+ {
+ "x": 13.008,
+ "y": 193.61599999999999
+ },
+ {
+ "x": 8.25,
+ "y": 189.75
+ },
+ {
+ "x": 3.7919999999999954,
+ "y": 185.584
+ },
+ {
+ "x": -0.11399999999999633,
+ "y": 181.32199999999997
+ },
+ {
+ "x": -3.216000000000003,
+ "y": 177.168
+ },
+ {
+ "x": -5.262,
+ "y": 173.32600000000002
+ },
+ {
+ "x": -6.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 202.0
+ },
+ {
+ "x": 26.45,
+ "y": 201.374
+ },
+ {
+ "x": 22.0,
+ "y": 199.632
+ },
+ {
+ "x": 16.95,
+ "y": 196.97799999999998
+ },
+ {
+ "x": 11.599999999999998,
+ "y": 193.61599999999999
+ },
+ {
+ "x": 6.25,
+ "y": 189.75
+ },
+ {
+ "x": 1.1999999999999948,
+ "y": 185.584
+ },
+ {
+ "x": -3.2499999999999956,
+ "y": 181.32199999999997
+ },
+ {
+ "x": -6.8000000000000025,
+ "y": 177.168
+ },
+ {
+ "x": -9.149999999999999,
+ "y": 173.32600000000002
+ },
+ {
+ "x": -10.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 202.0
+ },
+ {
+ "x": 26.338,
+ "y": 201.374
+ },
+ {
+ "x": 21.584,
+ "y": 199.632
+ },
+ {
+ "x": 16.086,
+ "y": 196.97799999999998
+ },
+ {
+ "x": 10.191999999999998,
+ "y": 193.61599999999999
+ },
+ {
+ "x": 4.25,
+ "y": 189.75
+ },
+ {
+ "x": -1.3920000000000066,
+ "y": 185.584
+ },
+ {
+ "x": -6.385999999999996,
+ "y": 181.32199999999997
+ },
+ {
+ "x": -10.384000000000004,
+ "y": 177.168
+ },
+ {
+ "x": -13.038,
+ "y": 173.32600000000002
+ },
+ {
+ "x": -14.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 206.0
+ },
+ {
+ "x": 26.674,
+ "y": 205.262
+ },
+ {
+ "x": 22.832,
+ "y": 203.216
+ },
+ {
+ "x": 18.678,
+ "y": 200.114
+ },
+ {
+ "x": 14.415999999999999,
+ "y": 196.20799999999997
+ },
+ {
+ "x": 10.25,
+ "y": 191.75
+ },
+ {
+ "x": 6.383999999999996,
+ "y": 186.992
+ },
+ {
+ "x": 3.022000000000004,
+ "y": 182.18599999999998
+ },
+ {
+ "x": 0.3679999999999981,
+ "y": 177.584
+ },
+ {
+ "x": -1.3739999999999994,
+ "y": 173.43800000000002
+ },
+ {
+ "x": -2.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 206.0
+ },
+ {
+ "x": 26.562,
+ "y": 205.262
+ },
+ {
+ "x": 22.416,
+ "y": 203.216
+ },
+ {
+ "x": 17.814,
+ "y": 200.114
+ },
+ {
+ "x": 13.008,
+ "y": 196.20799999999997
+ },
+ {
+ "x": 8.25,
+ "y": 191.75
+ },
+ {
+ "x": 3.7919999999999954,
+ "y": 186.992
+ },
+ {
+ "x": -0.11399999999999633,
+ "y": 182.18599999999998
+ },
+ {
+ "x": -3.216000000000003,
+ "y": 177.584
+ },
+ {
+ "x": -5.262,
+ "y": 173.43800000000002
+ },
+ {
+ "x": -6.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 206.0
+ },
+ {
+ "x": 26.45,
+ "y": 205.262
+ },
+ {
+ "x": 22.0,
+ "y": 203.216
+ },
+ {
+ "x": 16.95,
+ "y": 200.114
+ },
+ {
+ "x": 11.599999999999998,
+ "y": 196.20799999999997
+ },
+ {
+ "x": 6.25,
+ "y": 191.75
+ },
+ {
+ "x": 1.1999999999999948,
+ "y": 186.992
+ },
+ {
+ "x": -3.2499999999999956,
+ "y": 182.18599999999998
+ },
+ {
+ "x": -6.8000000000000025,
+ "y": 177.584
+ },
+ {
+ "x": -9.149999999999999,
+ "y": 173.43800000000002
+ },
+ {
+ "x": -10.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 30.0,
+ "y": 206.0
+ },
+ {
+ "x": 26.338,
+ "y": 205.262
+ },
+ {
+ "x": 21.584,
+ "y": 203.216
+ },
+ {
+ "x": 16.086,
+ "y": 200.114
+ },
+ {
+ "x": 10.191999999999998,
+ "y": 196.20799999999997
+ },
+ {
+ "x": 4.25,
+ "y": 191.75
+ },
+ {
+ "x": -1.3920000000000066,
+ "y": 186.992
+ },
+ {
+ "x": -6.385999999999996,
+ "y": 182.18599999999998
+ },
+ {
+ "x": -10.384000000000004,
+ "y": 177.584
+ },
+ {
+ "x": -13.038,
+ "y": 173.43800000000002
+ },
+ {
+ "x": -14.0,
+ "y": 170.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_left",
+ "startRoad": "road_1_3_3",
+ "endRoad": "road_1_2_0",
+ "direction": 3,
+ "laneLinks": [
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": -2.0,
+ "y": 230.0
+ },
+ {
+ "x": -1.3739999999999999,
+ "y": 226.674
+ },
+ {
+ "x": 0.3680000000000003,
+ "y": 222.83200000000002
+ },
+ {
+ "x": 3.0220000000000007,
+ "y": 218.678
+ },
+ {
+ "x": 6.384000000000002,
+ "y": 214.416
+ },
+ {
+ "x": 10.25,
+ "y": 210.25
+ },
+ {
+ "x": 14.416000000000004,
+ "y": 206.38400000000001
+ },
+ {
+ "x": 18.677999999999997,
+ "y": 203.022
+ },
+ {
+ "x": 22.832000000000004,
+ "y": 200.368
+ },
+ {
+ "x": 26.674,
+ "y": 198.626
+ },
+ {
+ "x": 30.0,
+ "y": 198.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": -2.0,
+ "y": 230.0
+ },
+ {
+ "x": -1.3739999999999999,
+ "y": 226.56199999999998
+ },
+ {
+ "x": 0.3680000000000003,
+ "y": 222.41600000000003
+ },
+ {
+ "x": 3.0220000000000007,
+ "y": 217.814
+ },
+ {
+ "x": 6.384000000000002,
+ "y": 213.008
+ },
+ {
+ "x": 10.25,
+ "y": 208.25
+ },
+ {
+ "x": 14.416000000000004,
+ "y": 203.792
+ },
+ {
+ "x": 18.677999999999997,
+ "y": 199.886
+ },
+ {
+ "x": 22.832000000000004,
+ "y": 196.784
+ },
+ {
+ "x": 26.674,
+ "y": 194.738
+ },
+ {
+ "x": 30.0,
+ "y": 194.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": -2.0,
+ "y": 230.0
+ },
+ {
+ "x": -1.3739999999999999,
+ "y": 226.45
+ },
+ {
+ "x": 0.3680000000000003,
+ "y": 222.0
+ },
+ {
+ "x": 3.0220000000000007,
+ "y": 216.95
+ },
+ {
+ "x": 6.384000000000002,
+ "y": 211.60000000000002
+ },
+ {
+ "x": 10.25,
+ "y": 206.25
+ },
+ {
+ "x": 14.416000000000004,
+ "y": 201.2
+ },
+ {
+ "x": 18.677999999999997,
+ "y": 196.75
+ },
+ {
+ "x": 22.832000000000004,
+ "y": 193.20000000000002
+ },
+ {
+ "x": 26.674,
+ "y": 190.85000000000002
+ },
+ {
+ "x": 30.0,
+ "y": 190.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": -2.0,
+ "y": 230.0
+ },
+ {
+ "x": -1.3739999999999999,
+ "y": 226.338
+ },
+ {
+ "x": 0.3680000000000003,
+ "y": 221.584
+ },
+ {
+ "x": 3.0220000000000007,
+ "y": 216.086
+ },
+ {
+ "x": 6.384000000000002,
+ "y": 210.192
+ },
+ {
+ "x": 10.25,
+ "y": 204.25
+ },
+ {
+ "x": 14.416000000000004,
+ "y": 198.608
+ },
+ {
+ "x": 18.677999999999997,
+ "y": 193.614
+ },
+ {
+ "x": 22.832000000000004,
+ "y": 189.616
+ },
+ {
+ "x": 26.674,
+ "y": 186.96200000000002
+ },
+ {
+ "x": 30.0,
+ "y": 186.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": -2.0,
+ "y": 230.0
+ },
+ {
+ "x": -1.3739999999999999,
+ "y": 226.226
+ },
+ {
+ "x": 0.3680000000000003,
+ "y": 221.168
+ },
+ {
+ "x": 3.0220000000000007,
+ "y": 215.222
+ },
+ {
+ "x": 6.384000000000002,
+ "y": 208.78400000000002
+ },
+ {
+ "x": 10.25,
+ "y": 202.25
+ },
+ {
+ "x": 14.416000000000004,
+ "y": 196.016
+ },
+ {
+ "x": 18.677999999999997,
+ "y": 190.478
+ },
+ {
+ "x": 22.832000000000004,
+ "y": 186.032
+ },
+ {
+ "x": 26.674,
+ "y": 183.074
+ },
+ {
+ "x": 30.0,
+ "y": 182.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": -2.0,
+ "y": 230.0
+ },
+ {
+ "x": -1.3739999999999999,
+ "y": 226.114
+ },
+ {
+ "x": 0.3680000000000003,
+ "y": 220.752
+ },
+ {
+ "x": 3.0220000000000007,
+ "y": 214.358
+ },
+ {
+ "x": 6.384000000000002,
+ "y": 207.376
+ },
+ {
+ "x": 10.25,
+ "y": 200.25
+ },
+ {
+ "x": 14.416000000000004,
+ "y": 193.42399999999998
+ },
+ {
+ "x": 18.677999999999997,
+ "y": 187.342
+ },
+ {
+ "x": 22.832000000000004,
+ "y": 182.448
+ },
+ {
+ "x": 26.674,
+ "y": 179.186
+ },
+ {
+ "x": 30.0,
+ "y": 178.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_right",
+ "startRoad": "road_1_3_3",
+ "endRoad": "road_1_2_2",
+ "direction": 3,
+ "laneLinks": [
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": -14.0,
+ "y": 230.0
+ },
+ {
+ "x": -14.178,
+ "y": 226.786
+ },
+ {
+ "x": -14.704,
+ "y": 223.24800000000002
+ },
+ {
+ "x": -15.566000000000003,
+ "y": 219.542
+ },
+ {
+ "x": -16.752000000000002,
+ "y": 215.824
+ },
+ {
+ "x": -18.25,
+ "y": 212.25
+ },
+ {
+ "x": -20.048000000000002,
+ "y": 208.976
+ },
+ {
+ "x": -22.133999999999997,
+ "y": 206.15800000000002
+ },
+ {
+ "x": -24.496000000000002,
+ "y": 203.952
+ },
+ {
+ "x": -27.122,
+ "y": 202.514
+ },
+ {
+ "x": -30.0,
+ "y": 202.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": -14.0,
+ "y": 230.0
+ },
+ {
+ "x": -14.178,
+ "y": 226.898
+ },
+ {
+ "x": -14.704,
+ "y": 223.66400000000002
+ },
+ {
+ "x": -15.566000000000003,
+ "y": 220.406
+ },
+ {
+ "x": -16.752000000000002,
+ "y": 217.23200000000003
+ },
+ {
+ "x": -18.25,
+ "y": 214.25
+ },
+ {
+ "x": -20.048000000000002,
+ "y": 211.56799999999998
+ },
+ {
+ "x": -22.133999999999997,
+ "y": 209.294
+ },
+ {
+ "x": -24.496000000000002,
+ "y": 207.536
+ },
+ {
+ "x": -27.122,
+ "y": 206.40200000000002
+ },
+ {
+ "x": -30.0,
+ "y": 206.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": -14.0,
+ "y": 230.0
+ },
+ {
+ "x": -14.178,
+ "y": 227.01
+ },
+ {
+ "x": -14.704,
+ "y": 224.08
+ },
+ {
+ "x": -15.566000000000003,
+ "y": 221.27
+ },
+ {
+ "x": -16.752000000000002,
+ "y": 218.64000000000001
+ },
+ {
+ "x": -18.25,
+ "y": 216.25
+ },
+ {
+ "x": -20.048000000000002,
+ "y": 214.16000000000003
+ },
+ {
+ "x": -22.133999999999997,
+ "y": 212.43
+ },
+ {
+ "x": -24.496000000000002,
+ "y": 211.12
+ },
+ {
+ "x": -27.122,
+ "y": 210.29000000000002
+ },
+ {
+ "x": -30.0,
+ "y": 210.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": -14.0,
+ "y": 230.0
+ },
+ {
+ "x": -14.178,
+ "y": 227.12199999999999
+ },
+ {
+ "x": -14.704,
+ "y": 224.496
+ },
+ {
+ "x": -15.566000000000003,
+ "y": 222.13400000000001
+ },
+ {
+ "x": -16.752000000000002,
+ "y": 220.048
+ },
+ {
+ "x": -18.25,
+ "y": 218.25
+ },
+ {
+ "x": -20.048000000000002,
+ "y": 216.752
+ },
+ {
+ "x": -22.133999999999997,
+ "y": 215.566
+ },
+ {
+ "x": -24.496000000000002,
+ "y": 214.704
+ },
+ {
+ "x": -27.122,
+ "y": 214.178
+ },
+ {
+ "x": -30.0,
+ "y": 214.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": -14.0,
+ "y": 230.0
+ },
+ {
+ "x": -14.178,
+ "y": 227.234
+ },
+ {
+ "x": -14.704,
+ "y": 224.912
+ },
+ {
+ "x": -15.566000000000003,
+ "y": 222.998
+ },
+ {
+ "x": -16.752000000000002,
+ "y": 221.45600000000002
+ },
+ {
+ "x": -18.25,
+ "y": 220.25
+ },
+ {
+ "x": -20.048000000000002,
+ "y": 219.344
+ },
+ {
+ "x": -22.133999999999997,
+ "y": 218.702
+ },
+ {
+ "x": -24.496000000000002,
+ "y": 218.288
+ },
+ {
+ "x": -27.122,
+ "y": 218.066
+ },
+ {
+ "x": -30.0,
+ "y": 218.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": -14.0,
+ "y": 230.0
+ },
+ {
+ "x": -14.178,
+ "y": 227.346
+ },
+ {
+ "x": -14.704,
+ "y": 225.328
+ },
+ {
+ "x": -15.566000000000003,
+ "y": 223.862
+ },
+ {
+ "x": -16.752000000000002,
+ "y": 222.86400000000003
+ },
+ {
+ "x": -18.25,
+ "y": 222.25
+ },
+ {
+ "x": -20.048000000000002,
+ "y": 221.93599999999998
+ },
+ {
+ "x": -22.133999999999997,
+ "y": 221.838
+ },
+ {
+ "x": -24.496000000000002,
+ "y": 221.872
+ },
+ {
+ "x": -27.122,
+ "y": 221.954
+ },
+ {
+ "x": -30.0,
+ "y": 222.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "go_straight",
+ "startRoad": "road_1_3_3",
+ "endRoad": "road_1_2_3",
+ "direction": 3,
+ "laneLinks": [
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": -6.0,
+ "y": 230.0
+ },
+ {
+ "x": -5.888,
+ "y": 226.16
+ },
+ {
+ "x": -5.5840000000000005,
+ "y": 220.88000000000002
+ },
+ {
+ "x": -5.136000000000001,
+ "y": 214.51999999999998
+ },
+ {
+ "x": -4.592,
+ "y": 207.44
+ },
+ {
+ "x": -4.0,
+ "y": 200.0
+ },
+ {
+ "x": -3.4079999999999995,
+ "y": 192.56
+ },
+ {
+ "x": -2.8640000000000003,
+ "y": 185.48
+ },
+ {
+ "x": -2.4159999999999995,
+ "y": 179.12
+ },
+ {
+ "x": -2.112,
+ "y": 173.84000000000003
+ },
+ {
+ "x": -2.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": -6.0,
+ "y": 230.0
+ },
+ {
+ "x": -6.0,
+ "y": 226.16
+ },
+ {
+ "x": -6.0,
+ "y": 220.88000000000002
+ },
+ {
+ "x": -6.000000000000001,
+ "y": 214.51999999999998
+ },
+ {
+ "x": -6.0,
+ "y": 207.44
+ },
+ {
+ "x": -6.0,
+ "y": 200.0
+ },
+ {
+ "x": -6.0,
+ "y": 192.56
+ },
+ {
+ "x": -6.0,
+ "y": 185.48
+ },
+ {
+ "x": -6.0,
+ "y": 179.12
+ },
+ {
+ "x": -6.0,
+ "y": 173.84000000000003
+ },
+ {
+ "x": -6.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": -6.0,
+ "y": 230.0
+ },
+ {
+ "x": -6.112,
+ "y": 226.16
+ },
+ {
+ "x": -6.416,
+ "y": 220.88000000000002
+ },
+ {
+ "x": -6.864000000000001,
+ "y": 214.51999999999998
+ },
+ {
+ "x": -7.408,
+ "y": 207.44
+ },
+ {
+ "x": -8.0,
+ "y": 200.0
+ },
+ {
+ "x": -8.592,
+ "y": 192.56
+ },
+ {
+ "x": -9.136,
+ "y": 185.48
+ },
+ {
+ "x": -9.584,
+ "y": 179.12
+ },
+ {
+ "x": -9.887999999999998,
+ "y": 173.84000000000003
+ },
+ {
+ "x": -10.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": -6.0,
+ "y": 230.0
+ },
+ {
+ "x": -6.224,
+ "y": 226.16
+ },
+ {
+ "x": -6.832000000000001,
+ "y": 220.88000000000002
+ },
+ {
+ "x": -7.7280000000000015,
+ "y": 214.51999999999998
+ },
+ {
+ "x": -8.816,
+ "y": 207.44
+ },
+ {
+ "x": -10.0,
+ "y": 200.0
+ },
+ {
+ "x": -11.184000000000001,
+ "y": 192.56
+ },
+ {
+ "x": -12.272,
+ "y": 185.48
+ },
+ {
+ "x": -13.168000000000001,
+ "y": 179.12
+ },
+ {
+ "x": -13.776,
+ "y": 173.84000000000003
+ },
+ {
+ "x": -14.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": -10.0,
+ "y": 230.0
+ },
+ {
+ "x": -9.775999999999998,
+ "y": 226.16
+ },
+ {
+ "x": -9.168000000000001,
+ "y": 220.88000000000002
+ },
+ {
+ "x": -8.272,
+ "y": 214.51999999999998
+ },
+ {
+ "x": -7.183999999999999,
+ "y": 207.44
+ },
+ {
+ "x": -6.0,
+ "y": 200.0
+ },
+ {
+ "x": -4.815999999999999,
+ "y": 192.56
+ },
+ {
+ "x": -3.7280000000000006,
+ "y": 185.48
+ },
+ {
+ "x": -2.831999999999999,
+ "y": 179.12
+ },
+ {
+ "x": -2.224,
+ "y": 173.84000000000003
+ },
+ {
+ "x": -2.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": -10.0,
+ "y": 230.0
+ },
+ {
+ "x": -9.887999999999998,
+ "y": 226.16
+ },
+ {
+ "x": -9.584000000000001,
+ "y": 220.88000000000002
+ },
+ {
+ "x": -9.136,
+ "y": 214.51999999999998
+ },
+ {
+ "x": -8.591999999999999,
+ "y": 207.44
+ },
+ {
+ "x": -8.0,
+ "y": 200.0
+ },
+ {
+ "x": -7.4079999999999995,
+ "y": 192.56
+ },
+ {
+ "x": -6.864000000000001,
+ "y": 185.48
+ },
+ {
+ "x": -6.416,
+ "y": 179.12
+ },
+ {
+ "x": -6.112,
+ "y": 173.84000000000003
+ },
+ {
+ "x": -6.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": -10.0,
+ "y": 230.0
+ },
+ {
+ "x": -9.999999999999998,
+ "y": 226.16
+ },
+ {
+ "x": -10.000000000000002,
+ "y": 220.88000000000002
+ },
+ {
+ "x": -10.0,
+ "y": 214.51999999999998
+ },
+ {
+ "x": -10.0,
+ "y": 207.44
+ },
+ {
+ "x": -10.0,
+ "y": 200.0
+ },
+ {
+ "x": -10.0,
+ "y": 192.56
+ },
+ {
+ "x": -10.0,
+ "y": 185.48
+ },
+ {
+ "x": -10.0,
+ "y": 179.12
+ },
+ {
+ "x": -10.0,
+ "y": 173.84000000000003
+ },
+ {
+ "x": -10.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": -10.0,
+ "y": 230.0
+ },
+ {
+ "x": -10.111999999999998,
+ "y": 226.16
+ },
+ {
+ "x": -10.416,
+ "y": 220.88000000000002
+ },
+ {
+ "x": -10.864,
+ "y": 214.51999999999998
+ },
+ {
+ "x": -11.408,
+ "y": 207.44
+ },
+ {
+ "x": -12.0,
+ "y": 200.0
+ },
+ {
+ "x": -12.592000000000002,
+ "y": 192.56
+ },
+ {
+ "x": -13.136,
+ "y": 185.48
+ },
+ {
+ "x": -13.584000000000001,
+ "y": 179.12
+ },
+ {
+ "x": -13.888000000000002,
+ "y": 173.84000000000003
+ },
+ {
+ "x": -14.0,
+ "y": 170.0
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "trafficLight": {
+ "roadLinkIndices": [
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "lightphases": [
+ {
+ "time": 30,
+ "availableRoadLinks": [
+ 0,
+ 2,
+ 3,
+ 6,
+ 7,
+ 10
+ ]
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": [
+ 10,
+ 2,
+ 3,
+ 6
+ ]
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": [
+ 1,
+ 2,
+ 3,
+ 6,
+ 8,
+ 10
+ ]
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": [
+ 10,
+ 2,
+ 3,
+ 6
+ ]
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": [
+ 2,
+ 3,
+ 4,
+ 6,
+ 10,
+ 11
+ ]
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": [
+ 10,
+ 2,
+ 3,
+ 6
+ ]
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": [
+ 2,
+ 3,
+ 5,
+ 6,
+ 9,
+ 10
+ ]
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": [
+ 10,
+ 2,
+ 3,
+ 6
+ ]
+ }
+ ]
+ },
+ "virtual": false
+ },
+ {
+ "id": "intersection_2_2",
+ "point": {
+ "x": 300,
+ "y": 200
+ },
+ "width": 30,
+ "roads": [
+ "road_1_2_0",
+ "road_2_1_1",
+ "road_3_2_2",
+ "road_2_3_3",
+ "road_2_2_0",
+ "road_2_2_1",
+ "road_2_2_2",
+ "road_2_2_3"
+ ],
+ "roadLinks": [
+ {
+ "type": "go_straight",
+ "startRoad": "road_1_2_0",
+ "endRoad": "road_2_2_0",
+ "direction": 0,
+ "laneLinks": [
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 190.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 190.22400000000002
+ },
+ {
+ "x": 279.12000000000006,
+ "y": 190.83200000000002
+ },
+ {
+ "x": 285.48,
+ "y": 191.728
+ },
+ {
+ "x": 292.56,
+ "y": 192.81599999999997
+ },
+ {
+ "x": 300.0,
+ "y": 194.0
+ },
+ {
+ "x": 307.44,
+ "y": 195.18400000000003
+ },
+ {
+ "x": 314.52,
+ "y": 196.272
+ },
+ {
+ "x": 320.88000000000005,
+ "y": 197.168
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 197.77599999999998
+ },
+ {
+ "x": 330.0,
+ "y": 198.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 190.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 190.112
+ },
+ {
+ "x": 279.12000000000006,
+ "y": 190.41600000000003
+ },
+ {
+ "x": 285.48,
+ "y": 190.864
+ },
+ {
+ "x": 292.56,
+ "y": 191.408
+ },
+ {
+ "x": 300.0,
+ "y": 192.0
+ },
+ {
+ "x": 307.44,
+ "y": 192.592
+ },
+ {
+ "x": 314.52,
+ "y": 193.136
+ },
+ {
+ "x": 320.88000000000005,
+ "y": 193.584
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 193.88799999999998
+ },
+ {
+ "x": 330.0,
+ "y": 194.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 190.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 190.0
+ },
+ {
+ "x": 279.12000000000006,
+ "y": 190.0
+ },
+ {
+ "x": 285.48,
+ "y": 190.0
+ },
+ {
+ "x": 292.56,
+ "y": 190.0
+ },
+ {
+ "x": 300.0,
+ "y": 190.0
+ },
+ {
+ "x": 307.44,
+ "y": 190.0
+ },
+ {
+ "x": 314.52,
+ "y": 190.0
+ },
+ {
+ "x": 320.88000000000005,
+ "y": 190.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 190.0
+ },
+ {
+ "x": 330.0,
+ "y": 190.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 190.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 189.888
+ },
+ {
+ "x": 279.12000000000006,
+ "y": 189.584
+ },
+ {
+ "x": 285.48,
+ "y": 189.13600000000002
+ },
+ {
+ "x": 292.56,
+ "y": 188.59199999999998
+ },
+ {
+ "x": 300.0,
+ "y": 188.0
+ },
+ {
+ "x": 307.44,
+ "y": 187.40800000000002
+ },
+ {
+ "x": 314.52,
+ "y": 186.864
+ },
+ {
+ "x": 320.88000000000005,
+ "y": 186.416
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 186.112
+ },
+ {
+ "x": 330.0,
+ "y": 186.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 190.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 189.776
+ },
+ {
+ "x": 279.12000000000006,
+ "y": 189.168
+ },
+ {
+ "x": 285.48,
+ "y": 188.27200000000002
+ },
+ {
+ "x": 292.56,
+ "y": 187.184
+ },
+ {
+ "x": 300.0,
+ "y": 186.0
+ },
+ {
+ "x": 307.44,
+ "y": 184.816
+ },
+ {
+ "x": 314.52,
+ "y": 183.728
+ },
+ {
+ "x": 320.88000000000005,
+ "y": 182.832
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 182.224
+ },
+ {
+ "x": 330.0,
+ "y": 182.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 190.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 189.66400000000002
+ },
+ {
+ "x": 279.12000000000006,
+ "y": 188.752
+ },
+ {
+ "x": 285.48,
+ "y": 187.40800000000002
+ },
+ {
+ "x": 292.56,
+ "y": 185.77599999999998
+ },
+ {
+ "x": 300.0,
+ "y": 184.0
+ },
+ {
+ "x": 307.44,
+ "y": 182.224
+ },
+ {
+ "x": 314.52,
+ "y": 180.592
+ },
+ {
+ "x": 320.88000000000005,
+ "y": 179.248
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 178.33599999999998
+ },
+ {
+ "x": 330.0,
+ "y": 178.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 186.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 186.336
+ },
+ {
+ "x": 279.12000000000006,
+ "y": 187.24800000000002
+ },
+ {
+ "x": 285.48,
+ "y": 188.592
+ },
+ {
+ "x": 292.56,
+ "y": 190.224
+ },
+ {
+ "x": 300.0,
+ "y": 192.0
+ },
+ {
+ "x": 307.44,
+ "y": 193.776
+ },
+ {
+ "x": 314.52,
+ "y": 195.408
+ },
+ {
+ "x": 320.88000000000005,
+ "y": 196.75199999999998
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 197.664
+ },
+ {
+ "x": 330.0,
+ "y": 198.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 186.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 186.224
+ },
+ {
+ "x": 279.12000000000006,
+ "y": 186.83200000000002
+ },
+ {
+ "x": 285.48,
+ "y": 187.728
+ },
+ {
+ "x": 292.56,
+ "y": 188.81599999999997
+ },
+ {
+ "x": 300.0,
+ "y": 190.0
+ },
+ {
+ "x": 307.44,
+ "y": 191.18400000000003
+ },
+ {
+ "x": 314.52,
+ "y": 192.272
+ },
+ {
+ "x": 320.88000000000005,
+ "y": 193.16799999999998
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 193.77599999999998
+ },
+ {
+ "x": 330.0,
+ "y": 194.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 186.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 186.112
+ },
+ {
+ "x": 279.12000000000006,
+ "y": 186.416
+ },
+ {
+ "x": 285.48,
+ "y": 186.86400000000003
+ },
+ {
+ "x": 292.56,
+ "y": 187.40800000000002
+ },
+ {
+ "x": 300.0,
+ "y": 188.0
+ },
+ {
+ "x": 307.44,
+ "y": 188.59199999999998
+ },
+ {
+ "x": 314.52,
+ "y": 189.136
+ },
+ {
+ "x": 320.88000000000005,
+ "y": 189.584
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 189.888
+ },
+ {
+ "x": 330.0,
+ "y": 190.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 186.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 186.0
+ },
+ {
+ "x": 279.12000000000006,
+ "y": 186.0
+ },
+ {
+ "x": 285.48,
+ "y": 186.0
+ },
+ {
+ "x": 292.56,
+ "y": 186.0
+ },
+ {
+ "x": 300.0,
+ "y": 186.0
+ },
+ {
+ "x": 307.44,
+ "y": 186.0
+ },
+ {
+ "x": 314.52,
+ "y": 186.0
+ },
+ {
+ "x": 320.88000000000005,
+ "y": 186.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 186.0
+ },
+ {
+ "x": 330.0,
+ "y": 186.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 186.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 185.888
+ },
+ {
+ "x": 279.12000000000006,
+ "y": 185.584
+ },
+ {
+ "x": 285.48,
+ "y": 185.13600000000002
+ },
+ {
+ "x": 292.56,
+ "y": 184.59199999999998
+ },
+ {
+ "x": 300.0,
+ "y": 184.0
+ },
+ {
+ "x": 307.44,
+ "y": 183.40800000000002
+ },
+ {
+ "x": 314.52,
+ "y": 182.864
+ },
+ {
+ "x": 320.88000000000005,
+ "y": 182.416
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 182.112
+ },
+ {
+ "x": 330.0,
+ "y": 182.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 186.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 185.776
+ },
+ {
+ "x": 279.12000000000006,
+ "y": 185.168
+ },
+ {
+ "x": 285.48,
+ "y": 184.27200000000002
+ },
+ {
+ "x": 292.56,
+ "y": 183.184
+ },
+ {
+ "x": 300.0,
+ "y": 182.0
+ },
+ {
+ "x": 307.44,
+ "y": 180.816
+ },
+ {
+ "x": 314.52,
+ "y": 179.728
+ },
+ {
+ "x": 320.88000000000005,
+ "y": 178.832
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 178.224
+ },
+ {
+ "x": 330.0,
+ "y": 178.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 182.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 182.448
+ },
+ {
+ "x": 279.12000000000006,
+ "y": 183.66400000000002
+ },
+ {
+ "x": 285.48,
+ "y": 185.45600000000002
+ },
+ {
+ "x": 292.56,
+ "y": 187.632
+ },
+ {
+ "x": 300.0,
+ "y": 190.0
+ },
+ {
+ "x": 307.44,
+ "y": 192.368
+ },
+ {
+ "x": 314.52,
+ "y": 194.54399999999998
+ },
+ {
+ "x": 320.88000000000005,
+ "y": 196.33599999999998
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 197.552
+ },
+ {
+ "x": 330.0,
+ "y": 198.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 182.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 182.33599999999998
+ },
+ {
+ "x": 279.12000000000006,
+ "y": 183.24800000000002
+ },
+ {
+ "x": 285.48,
+ "y": 184.592
+ },
+ {
+ "x": 292.56,
+ "y": 186.224
+ },
+ {
+ "x": 300.0,
+ "y": 188.0
+ },
+ {
+ "x": 307.44,
+ "y": 189.776
+ },
+ {
+ "x": 314.52,
+ "y": 191.408
+ },
+ {
+ "x": 320.88000000000005,
+ "y": 192.75199999999998
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 193.664
+ },
+ {
+ "x": 330.0,
+ "y": 194.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 182.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 182.224
+ },
+ {
+ "x": 279.12000000000006,
+ "y": 182.832
+ },
+ {
+ "x": 285.48,
+ "y": 183.728
+ },
+ {
+ "x": 292.56,
+ "y": 184.816
+ },
+ {
+ "x": 300.0,
+ "y": 186.0
+ },
+ {
+ "x": 307.44,
+ "y": 187.184
+ },
+ {
+ "x": 314.52,
+ "y": 188.272
+ },
+ {
+ "x": 320.88000000000005,
+ "y": 189.168
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 189.776
+ },
+ {
+ "x": 330.0,
+ "y": 190.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 182.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 182.112
+ },
+ {
+ "x": 279.12000000000006,
+ "y": 182.416
+ },
+ {
+ "x": 285.48,
+ "y": 182.86400000000003
+ },
+ {
+ "x": 292.56,
+ "y": 183.40800000000002
+ },
+ {
+ "x": 300.0,
+ "y": 184.0
+ },
+ {
+ "x": 307.44,
+ "y": 184.59199999999998
+ },
+ {
+ "x": 314.52,
+ "y": 185.136
+ },
+ {
+ "x": 320.88000000000005,
+ "y": 185.584
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 185.888
+ },
+ {
+ "x": 330.0,
+ "y": 186.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 182.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 182.0
+ },
+ {
+ "x": 279.12000000000006,
+ "y": 182.0
+ },
+ {
+ "x": 285.48,
+ "y": 182.00000000000003
+ },
+ {
+ "x": 292.56,
+ "y": 182.0
+ },
+ {
+ "x": 300.0,
+ "y": 182.0
+ },
+ {
+ "x": 307.44,
+ "y": 182.0
+ },
+ {
+ "x": 314.52,
+ "y": 182.0
+ },
+ {
+ "x": 320.88000000000005,
+ "y": 182.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 182.0
+ },
+ {
+ "x": 330.0,
+ "y": 182.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 182.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 181.888
+ },
+ {
+ "x": 279.12000000000006,
+ "y": 181.584
+ },
+ {
+ "x": 285.48,
+ "y": 181.13600000000002
+ },
+ {
+ "x": 292.56,
+ "y": 180.59199999999998
+ },
+ {
+ "x": 300.0,
+ "y": 180.0
+ },
+ {
+ "x": 307.44,
+ "y": 179.40800000000002
+ },
+ {
+ "x": 314.52,
+ "y": 178.864
+ },
+ {
+ "x": 320.88000000000005,
+ "y": 178.416
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 178.112
+ },
+ {
+ "x": 330.0,
+ "y": 178.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_left",
+ "startRoad": "road_1_2_0",
+ "endRoad": "road_2_2_1",
+ "direction": 0,
+ "laneLinks": [
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 198.0
+ },
+ {
+ "x": 273.326,
+ "y": 198.62599999999998
+ },
+ {
+ "x": 277.168,
+ "y": 200.36800000000002
+ },
+ {
+ "x": 281.322,
+ "y": 203.02200000000002
+ },
+ {
+ "x": 285.584,
+ "y": 206.38400000000001
+ },
+ {
+ "x": 289.75,
+ "y": 210.25
+ },
+ {
+ "x": 293.616,
+ "y": 214.416
+ },
+ {
+ "x": 296.978,
+ "y": 218.67800000000003
+ },
+ {
+ "x": 299.632,
+ "y": 222.83200000000002
+ },
+ {
+ "x": 301.37399999999997,
+ "y": 226.674
+ },
+ {
+ "x": 302.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 198.0
+ },
+ {
+ "x": 273.438,
+ "y": 198.62599999999998
+ },
+ {
+ "x": 277.584,
+ "y": 200.36800000000002
+ },
+ {
+ "x": 282.18600000000004,
+ "y": 203.02200000000002
+ },
+ {
+ "x": 286.992,
+ "y": 206.38400000000001
+ },
+ {
+ "x": 291.75,
+ "y": 210.25
+ },
+ {
+ "x": 296.20799999999997,
+ "y": 214.416
+ },
+ {
+ "x": 300.114,
+ "y": 218.67800000000003
+ },
+ {
+ "x": 303.216,
+ "y": 222.83200000000002
+ },
+ {
+ "x": 305.262,
+ "y": 226.674
+ },
+ {
+ "x": 306.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 198.0
+ },
+ {
+ "x": 273.55,
+ "y": 198.62599999999998
+ },
+ {
+ "x": 278.0,
+ "y": 200.36800000000002
+ },
+ {
+ "x": 283.05,
+ "y": 203.02200000000002
+ },
+ {
+ "x": 288.4,
+ "y": 206.38400000000001
+ },
+ {
+ "x": 293.75,
+ "y": 210.25
+ },
+ {
+ "x": 298.8,
+ "y": 214.416
+ },
+ {
+ "x": 303.25,
+ "y": 218.67800000000003
+ },
+ {
+ "x": 306.8,
+ "y": 222.83200000000002
+ },
+ {
+ "x": 309.15,
+ "y": 226.674
+ },
+ {
+ "x": 310.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 198.0
+ },
+ {
+ "x": 273.66200000000003,
+ "y": 198.62599999999998
+ },
+ {
+ "x": 278.41600000000005,
+ "y": 200.36800000000002
+ },
+ {
+ "x": 283.914,
+ "y": 203.02200000000002
+ },
+ {
+ "x": 289.808,
+ "y": 206.38400000000001
+ },
+ {
+ "x": 295.75,
+ "y": 210.25
+ },
+ {
+ "x": 301.392,
+ "y": 214.416
+ },
+ {
+ "x": 306.386,
+ "y": 218.67800000000003
+ },
+ {
+ "x": 310.384,
+ "y": 222.83200000000002
+ },
+ {
+ "x": 313.03799999999995,
+ "y": 226.674
+ },
+ {
+ "x": 314.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 194.0
+ },
+ {
+ "x": 273.326,
+ "y": 194.73799999999997
+ },
+ {
+ "x": 277.168,
+ "y": 196.78400000000002
+ },
+ {
+ "x": 281.322,
+ "y": 199.88600000000002
+ },
+ {
+ "x": 285.584,
+ "y": 203.79200000000003
+ },
+ {
+ "x": 289.75,
+ "y": 208.25
+ },
+ {
+ "x": 293.616,
+ "y": 213.00799999999998
+ },
+ {
+ "x": 296.978,
+ "y": 217.81400000000002
+ },
+ {
+ "x": 299.632,
+ "y": 222.41600000000003
+ },
+ {
+ "x": 301.37399999999997,
+ "y": 226.562
+ },
+ {
+ "x": 302.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 194.0
+ },
+ {
+ "x": 273.438,
+ "y": 194.73799999999997
+ },
+ {
+ "x": 277.584,
+ "y": 196.78400000000002
+ },
+ {
+ "x": 282.18600000000004,
+ "y": 199.88600000000002
+ },
+ {
+ "x": 286.992,
+ "y": 203.79200000000003
+ },
+ {
+ "x": 291.75,
+ "y": 208.25
+ },
+ {
+ "x": 296.20799999999997,
+ "y": 213.00799999999998
+ },
+ {
+ "x": 300.114,
+ "y": 217.81400000000002
+ },
+ {
+ "x": 303.216,
+ "y": 222.41600000000003
+ },
+ {
+ "x": 305.262,
+ "y": 226.562
+ },
+ {
+ "x": 306.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 194.0
+ },
+ {
+ "x": 273.55,
+ "y": 194.73799999999997
+ },
+ {
+ "x": 278.0,
+ "y": 196.78400000000002
+ },
+ {
+ "x": 283.05,
+ "y": 199.88600000000002
+ },
+ {
+ "x": 288.4,
+ "y": 203.79200000000003
+ },
+ {
+ "x": 293.75,
+ "y": 208.25
+ },
+ {
+ "x": 298.8,
+ "y": 213.00799999999998
+ },
+ {
+ "x": 303.25,
+ "y": 217.81400000000002
+ },
+ {
+ "x": 306.8,
+ "y": 222.41600000000003
+ },
+ {
+ "x": 309.15,
+ "y": 226.562
+ },
+ {
+ "x": 310.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 194.0
+ },
+ {
+ "x": 273.66200000000003,
+ "y": 194.73799999999997
+ },
+ {
+ "x": 278.41600000000005,
+ "y": 196.78400000000002
+ },
+ {
+ "x": 283.914,
+ "y": 199.88600000000002
+ },
+ {
+ "x": 289.808,
+ "y": 203.79200000000003
+ },
+ {
+ "x": 295.75,
+ "y": 208.25
+ },
+ {
+ "x": 301.392,
+ "y": 213.00799999999998
+ },
+ {
+ "x": 306.386,
+ "y": 217.81400000000002
+ },
+ {
+ "x": 310.384,
+ "y": 222.41600000000003
+ },
+ {
+ "x": 313.03799999999995,
+ "y": 226.562
+ },
+ {
+ "x": 314.0,
+ "y": 230.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_right",
+ "startRoad": "road_1_2_0",
+ "endRoad": "road_2_2_3",
+ "direction": 0,
+ "laneLinks": [
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 182.0
+ },
+ {
+ "x": 273.214,
+ "y": 181.934
+ },
+ {
+ "x": 276.752,
+ "y": 181.71200000000002
+ },
+ {
+ "x": 280.458,
+ "y": 181.298
+ },
+ {
+ "x": 284.176,
+ "y": 180.656
+ },
+ {
+ "x": 287.75,
+ "y": 179.75
+ },
+ {
+ "x": 291.024,
+ "y": 178.54399999999998
+ },
+ {
+ "x": 293.842,
+ "y": 177.00199999999998
+ },
+ {
+ "x": 296.048,
+ "y": 175.088
+ },
+ {
+ "x": 297.486,
+ "y": 172.76600000000002
+ },
+ {
+ "x": 298.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 182.0
+ },
+ {
+ "x": 273.10200000000003,
+ "y": 181.934
+ },
+ {
+ "x": 276.336,
+ "y": 181.71200000000002
+ },
+ {
+ "x": 279.594,
+ "y": 181.298
+ },
+ {
+ "x": 282.76800000000003,
+ "y": 180.656
+ },
+ {
+ "x": 285.75,
+ "y": 179.75
+ },
+ {
+ "x": 288.432,
+ "y": 178.54399999999998
+ },
+ {
+ "x": 290.706,
+ "y": 177.00199999999998
+ },
+ {
+ "x": 292.464,
+ "y": 175.088
+ },
+ {
+ "x": 293.59799999999996,
+ "y": 172.76600000000002
+ },
+ {
+ "x": 294.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 182.0
+ },
+ {
+ "x": 272.99,
+ "y": 181.934
+ },
+ {
+ "x": 275.92,
+ "y": 181.71200000000002
+ },
+ {
+ "x": 278.73,
+ "y": 181.298
+ },
+ {
+ "x": 281.36,
+ "y": 180.656
+ },
+ {
+ "x": 283.75,
+ "y": 179.75
+ },
+ {
+ "x": 285.84000000000003,
+ "y": 178.54399999999998
+ },
+ {
+ "x": 287.57,
+ "y": 177.00199999999998
+ },
+ {
+ "x": 288.88,
+ "y": 175.088
+ },
+ {
+ "x": 289.71,
+ "y": 172.76600000000002
+ },
+ {
+ "x": 290.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 182.0
+ },
+ {
+ "x": 272.878,
+ "y": 181.934
+ },
+ {
+ "x": 275.504,
+ "y": 181.71200000000002
+ },
+ {
+ "x": 277.866,
+ "y": 181.298
+ },
+ {
+ "x": 279.952,
+ "y": 180.656
+ },
+ {
+ "x": 281.75,
+ "y": 179.75
+ },
+ {
+ "x": 283.248,
+ "y": 178.54399999999998
+ },
+ {
+ "x": 284.434,
+ "y": 177.00199999999998
+ },
+ {
+ "x": 285.296,
+ "y": 175.088
+ },
+ {
+ "x": 285.822,
+ "y": 172.76600000000002
+ },
+ {
+ "x": 286.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 178.0
+ },
+ {
+ "x": 273.214,
+ "y": 178.046
+ },
+ {
+ "x": 276.752,
+ "y": 178.12800000000001
+ },
+ {
+ "x": 280.458,
+ "y": 178.16199999999998
+ },
+ {
+ "x": 284.176,
+ "y": 178.064
+ },
+ {
+ "x": 287.75,
+ "y": 177.75
+ },
+ {
+ "x": 291.024,
+ "y": 177.136
+ },
+ {
+ "x": 293.842,
+ "y": 176.13799999999998
+ },
+ {
+ "x": 296.048,
+ "y": 174.672
+ },
+ {
+ "x": 297.486,
+ "y": 172.65400000000002
+ },
+ {
+ "x": 298.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 178.0
+ },
+ {
+ "x": 273.10200000000003,
+ "y": 178.046
+ },
+ {
+ "x": 276.336,
+ "y": 178.12800000000001
+ },
+ {
+ "x": 279.594,
+ "y": 178.16199999999998
+ },
+ {
+ "x": 282.76800000000003,
+ "y": 178.064
+ },
+ {
+ "x": 285.75,
+ "y": 177.75
+ },
+ {
+ "x": 288.432,
+ "y": 177.136
+ },
+ {
+ "x": 290.706,
+ "y": 176.13799999999998
+ },
+ {
+ "x": 292.464,
+ "y": 174.672
+ },
+ {
+ "x": 293.59799999999996,
+ "y": 172.65400000000002
+ },
+ {
+ "x": 294.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 178.0
+ },
+ {
+ "x": 272.99,
+ "y": 178.046
+ },
+ {
+ "x": 275.92,
+ "y": 178.12800000000001
+ },
+ {
+ "x": 278.73,
+ "y": 178.16199999999998
+ },
+ {
+ "x": 281.36,
+ "y": 178.064
+ },
+ {
+ "x": 283.75,
+ "y": 177.75
+ },
+ {
+ "x": 285.84000000000003,
+ "y": 177.136
+ },
+ {
+ "x": 287.57,
+ "y": 176.13799999999998
+ },
+ {
+ "x": 288.88,
+ "y": 174.672
+ },
+ {
+ "x": 289.71,
+ "y": 172.65400000000002
+ },
+ {
+ "x": 290.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 270.0,
+ "y": 178.0
+ },
+ {
+ "x": 272.878,
+ "y": 178.046
+ },
+ {
+ "x": 275.504,
+ "y": 178.12800000000001
+ },
+ {
+ "x": 277.866,
+ "y": 178.16199999999998
+ },
+ {
+ "x": 279.952,
+ "y": 178.064
+ },
+ {
+ "x": 281.75,
+ "y": 177.75
+ },
+ {
+ "x": 283.248,
+ "y": 177.136
+ },
+ {
+ "x": 284.434,
+ "y": 176.13799999999998
+ },
+ {
+ "x": 285.296,
+ "y": 174.672
+ },
+ {
+ "x": 285.822,
+ "y": 172.65400000000002
+ },
+ {
+ "x": 286.0,
+ "y": 170.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_right",
+ "startRoad": "road_2_1_1",
+ "endRoad": "road_2_2_0",
+ "direction": 1,
+ "laneLinks": [
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 314.0,
+ "y": 170.0
+ },
+ {
+ "x": 314.178,
+ "y": 173.21400000000003
+ },
+ {
+ "x": 314.704,
+ "y": 176.752
+ },
+ {
+ "x": 315.56600000000003,
+ "y": 180.458
+ },
+ {
+ "x": 316.752,
+ "y": 184.176
+ },
+ {
+ "x": 318.25,
+ "y": 187.75
+ },
+ {
+ "x": 320.048,
+ "y": 191.024
+ },
+ {
+ "x": 322.13399999999996,
+ "y": 193.84199999999998
+ },
+ {
+ "x": 324.49600000000004,
+ "y": 196.048
+ },
+ {
+ "x": 327.122,
+ "y": 197.486
+ },
+ {
+ "x": 330.0,
+ "y": 198.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 314.0,
+ "y": 170.0
+ },
+ {
+ "x": 314.178,
+ "y": 173.102
+ },
+ {
+ "x": 314.704,
+ "y": 176.336
+ },
+ {
+ "x": 315.56600000000003,
+ "y": 179.594
+ },
+ {
+ "x": 316.752,
+ "y": 182.76799999999997
+ },
+ {
+ "x": 318.25,
+ "y": 185.75
+ },
+ {
+ "x": 320.048,
+ "y": 188.43200000000002
+ },
+ {
+ "x": 322.13399999999996,
+ "y": 190.706
+ },
+ {
+ "x": 324.49600000000004,
+ "y": 192.464
+ },
+ {
+ "x": 327.122,
+ "y": 193.59799999999998
+ },
+ {
+ "x": 330.0,
+ "y": 194.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 314.0,
+ "y": 170.0
+ },
+ {
+ "x": 314.178,
+ "y": 172.99
+ },
+ {
+ "x": 314.704,
+ "y": 175.92000000000002
+ },
+ {
+ "x": 315.56600000000003,
+ "y": 178.73000000000002
+ },
+ {
+ "x": 316.752,
+ "y": 181.36
+ },
+ {
+ "x": 318.25,
+ "y": 183.75
+ },
+ {
+ "x": 320.048,
+ "y": 185.83999999999997
+ },
+ {
+ "x": 322.13399999999996,
+ "y": 187.57
+ },
+ {
+ "x": 324.49600000000004,
+ "y": 188.88000000000002
+ },
+ {
+ "x": 327.122,
+ "y": 189.71
+ },
+ {
+ "x": 330.0,
+ "y": 190.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 314.0,
+ "y": 170.0
+ },
+ {
+ "x": 314.178,
+ "y": 172.87800000000001
+ },
+ {
+ "x": 314.704,
+ "y": 175.504
+ },
+ {
+ "x": 315.56600000000003,
+ "y": 177.86599999999999
+ },
+ {
+ "x": 316.752,
+ "y": 179.952
+ },
+ {
+ "x": 318.25,
+ "y": 181.75
+ },
+ {
+ "x": 320.048,
+ "y": 183.248
+ },
+ {
+ "x": 322.13399999999996,
+ "y": 184.434
+ },
+ {
+ "x": 324.49600000000004,
+ "y": 185.29600000000002
+ },
+ {
+ "x": 327.122,
+ "y": 185.822
+ },
+ {
+ "x": 330.0,
+ "y": 186.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 314.0,
+ "y": 170.0
+ },
+ {
+ "x": 314.178,
+ "y": 172.76600000000002
+ },
+ {
+ "x": 314.704,
+ "y": 175.088
+ },
+ {
+ "x": 315.56600000000003,
+ "y": 177.002
+ },
+ {
+ "x": 316.752,
+ "y": 178.54399999999998
+ },
+ {
+ "x": 318.25,
+ "y": 179.75
+ },
+ {
+ "x": 320.048,
+ "y": 180.656
+ },
+ {
+ "x": 322.13399999999996,
+ "y": 181.298
+ },
+ {
+ "x": 324.49600000000004,
+ "y": 181.71200000000002
+ },
+ {
+ "x": 327.122,
+ "y": 181.934
+ },
+ {
+ "x": 330.0,
+ "y": 182.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 314.0,
+ "y": 170.0
+ },
+ {
+ "x": 314.178,
+ "y": 172.65400000000002
+ },
+ {
+ "x": 314.704,
+ "y": 174.672
+ },
+ {
+ "x": 315.56600000000003,
+ "y": 176.138
+ },
+ {
+ "x": 316.752,
+ "y": 177.136
+ },
+ {
+ "x": 318.25,
+ "y": 177.75
+ },
+ {
+ "x": 320.048,
+ "y": 178.064
+ },
+ {
+ "x": 322.13399999999996,
+ "y": 178.162
+ },
+ {
+ "x": 324.49600000000004,
+ "y": 178.12800000000001
+ },
+ {
+ "x": 327.122,
+ "y": 178.046
+ },
+ {
+ "x": 330.0,
+ "y": 178.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "go_straight",
+ "startRoad": "road_2_1_1",
+ "endRoad": "road_2_2_1",
+ "direction": 1,
+ "laneLinks": [
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 306.0,
+ "y": 170.0
+ },
+ {
+ "x": 305.88800000000003,
+ "y": 173.84
+ },
+ {
+ "x": 305.584,
+ "y": 179.12
+ },
+ {
+ "x": 305.136,
+ "y": 185.48000000000002
+ },
+ {
+ "x": 304.592,
+ "y": 192.56
+ },
+ {
+ "x": 304.0,
+ "y": 200.0
+ },
+ {
+ "x": 303.408,
+ "y": 207.44
+ },
+ {
+ "x": 302.864,
+ "y": 214.52
+ },
+ {
+ "x": 302.416,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 302.11199999999997,
+ "y": 226.16
+ },
+ {
+ "x": 302.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 306.0,
+ "y": 170.0
+ },
+ {
+ "x": 306.0,
+ "y": 173.84
+ },
+ {
+ "x": 306.0,
+ "y": 179.12
+ },
+ {
+ "x": 306.0,
+ "y": 185.48000000000002
+ },
+ {
+ "x": 306.0,
+ "y": 192.56
+ },
+ {
+ "x": 306.0,
+ "y": 200.0
+ },
+ {
+ "x": 306.0,
+ "y": 207.44
+ },
+ {
+ "x": 306.0,
+ "y": 214.52
+ },
+ {
+ "x": 306.0,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 306.0,
+ "y": 226.16
+ },
+ {
+ "x": 306.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 306.0,
+ "y": 170.0
+ },
+ {
+ "x": 306.112,
+ "y": 173.84
+ },
+ {
+ "x": 306.416,
+ "y": 179.12
+ },
+ {
+ "x": 306.86400000000003,
+ "y": 185.48000000000002
+ },
+ {
+ "x": 307.408,
+ "y": 192.56
+ },
+ {
+ "x": 308.0,
+ "y": 200.0
+ },
+ {
+ "x": 308.592,
+ "y": 207.44
+ },
+ {
+ "x": 309.13599999999997,
+ "y": 214.52
+ },
+ {
+ "x": 309.584,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 309.888,
+ "y": 226.16
+ },
+ {
+ "x": 310.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 306.0,
+ "y": 170.0
+ },
+ {
+ "x": 306.22400000000005,
+ "y": 173.84
+ },
+ {
+ "x": 306.832,
+ "y": 179.12
+ },
+ {
+ "x": 307.728,
+ "y": 185.48000000000002
+ },
+ {
+ "x": 308.81600000000003,
+ "y": 192.56
+ },
+ {
+ "x": 310.0,
+ "y": 200.0
+ },
+ {
+ "x": 311.18399999999997,
+ "y": 207.44
+ },
+ {
+ "x": 312.272,
+ "y": 214.52
+ },
+ {
+ "x": 313.168,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 313.77599999999995,
+ "y": 226.16
+ },
+ {
+ "x": 314.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 310.0,
+ "y": 170.0
+ },
+ {
+ "x": 309.776,
+ "y": 173.84
+ },
+ {
+ "x": 309.168,
+ "y": 179.12
+ },
+ {
+ "x": 308.27200000000005,
+ "y": 185.48000000000002
+ },
+ {
+ "x": 307.18399999999997,
+ "y": 192.56
+ },
+ {
+ "x": 306.0,
+ "y": 200.0
+ },
+ {
+ "x": 304.816,
+ "y": 207.44
+ },
+ {
+ "x": 303.728,
+ "y": 214.52
+ },
+ {
+ "x": 302.832,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 302.224,
+ "y": 226.16
+ },
+ {
+ "x": 302.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 310.0,
+ "y": 170.0
+ },
+ {
+ "x": 309.888,
+ "y": 173.84
+ },
+ {
+ "x": 309.584,
+ "y": 179.12
+ },
+ {
+ "x": 309.136,
+ "y": 185.48000000000002
+ },
+ {
+ "x": 308.592,
+ "y": 192.56
+ },
+ {
+ "x": 308.0,
+ "y": 200.0
+ },
+ {
+ "x": 307.408,
+ "y": 207.44
+ },
+ {
+ "x": 306.864,
+ "y": 214.52
+ },
+ {
+ "x": 306.416,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 306.112,
+ "y": 226.16
+ },
+ {
+ "x": 306.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 310.0,
+ "y": 170.0
+ },
+ {
+ "x": 310.0,
+ "y": 173.84
+ },
+ {
+ "x": 310.0,
+ "y": 179.12
+ },
+ {
+ "x": 310.0,
+ "y": 185.48000000000002
+ },
+ {
+ "x": 310.0,
+ "y": 192.56
+ },
+ {
+ "x": 310.0,
+ "y": 200.0
+ },
+ {
+ "x": 310.0,
+ "y": 207.44
+ },
+ {
+ "x": 310.0,
+ "y": 214.52
+ },
+ {
+ "x": 310.0,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 310.0,
+ "y": 226.16
+ },
+ {
+ "x": 310.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 310.0,
+ "y": 170.0
+ },
+ {
+ "x": 310.11199999999997,
+ "y": 173.84
+ },
+ {
+ "x": 310.416,
+ "y": 179.12
+ },
+ {
+ "x": 310.86400000000003,
+ "y": 185.48000000000002
+ },
+ {
+ "x": 311.408,
+ "y": 192.56
+ },
+ {
+ "x": 312.0,
+ "y": 200.0
+ },
+ {
+ "x": 312.592,
+ "y": 207.44
+ },
+ {
+ "x": 313.136,
+ "y": 214.52
+ },
+ {
+ "x": 313.584,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 313.888,
+ "y": 226.16
+ },
+ {
+ "x": 314.0,
+ "y": 230.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_left",
+ "startRoad": "road_2_1_1",
+ "endRoad": "road_2_2_2",
+ "direction": 1,
+ "laneLinks": [
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 302.0,
+ "y": 170.0
+ },
+ {
+ "x": 301.37399999999997,
+ "y": 173.32600000000002
+ },
+ {
+ "x": 299.63199999999995,
+ "y": 177.168
+ },
+ {
+ "x": 296.978,
+ "y": 181.322
+ },
+ {
+ "x": 293.616,
+ "y": 185.584
+ },
+ {
+ "x": 289.75,
+ "y": 189.75
+ },
+ {
+ "x": 285.584,
+ "y": 193.61599999999999
+ },
+ {
+ "x": 281.32200000000006,
+ "y": 196.978
+ },
+ {
+ "x": 277.168,
+ "y": 199.632
+ },
+ {
+ "x": 273.326,
+ "y": 201.374
+ },
+ {
+ "x": 270.0,
+ "y": 202.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 302.0,
+ "y": 170.0
+ },
+ {
+ "x": 301.37399999999997,
+ "y": 173.43800000000002
+ },
+ {
+ "x": 299.63199999999995,
+ "y": 177.584
+ },
+ {
+ "x": 296.978,
+ "y": 182.186
+ },
+ {
+ "x": 293.616,
+ "y": 186.992
+ },
+ {
+ "x": 289.75,
+ "y": 191.75
+ },
+ {
+ "x": 285.584,
+ "y": 196.208
+ },
+ {
+ "x": 281.32200000000006,
+ "y": 200.114
+ },
+ {
+ "x": 277.168,
+ "y": 203.216
+ },
+ {
+ "x": 273.326,
+ "y": 205.262
+ },
+ {
+ "x": 270.0,
+ "y": 206.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 302.0,
+ "y": 170.0
+ },
+ {
+ "x": 301.37399999999997,
+ "y": 173.55
+ },
+ {
+ "x": 299.63199999999995,
+ "y": 178.0
+ },
+ {
+ "x": 296.978,
+ "y": 183.05
+ },
+ {
+ "x": 293.616,
+ "y": 188.39999999999998
+ },
+ {
+ "x": 289.75,
+ "y": 193.75
+ },
+ {
+ "x": 285.584,
+ "y": 198.8
+ },
+ {
+ "x": 281.32200000000006,
+ "y": 203.25
+ },
+ {
+ "x": 277.168,
+ "y": 206.8
+ },
+ {
+ "x": 273.326,
+ "y": 209.15
+ },
+ {
+ "x": 270.0,
+ "y": 210.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 302.0,
+ "y": 170.0
+ },
+ {
+ "x": 301.37399999999997,
+ "y": 173.662
+ },
+ {
+ "x": 299.63199999999995,
+ "y": 178.416
+ },
+ {
+ "x": 296.978,
+ "y": 183.914
+ },
+ {
+ "x": 293.616,
+ "y": 189.808
+ },
+ {
+ "x": 289.75,
+ "y": 195.75
+ },
+ {
+ "x": 285.584,
+ "y": 201.392
+ },
+ {
+ "x": 281.32200000000006,
+ "y": 206.386
+ },
+ {
+ "x": 277.168,
+ "y": 210.38400000000001
+ },
+ {
+ "x": 273.326,
+ "y": 213.03799999999998
+ },
+ {
+ "x": 270.0,
+ "y": 214.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 302.0,
+ "y": 170.0
+ },
+ {
+ "x": 301.37399999999997,
+ "y": 173.77400000000003
+ },
+ {
+ "x": 299.63199999999995,
+ "y": 178.832
+ },
+ {
+ "x": 296.978,
+ "y": 184.77800000000002
+ },
+ {
+ "x": 293.616,
+ "y": 191.216
+ },
+ {
+ "x": 289.75,
+ "y": 197.75
+ },
+ {
+ "x": 285.584,
+ "y": 203.984
+ },
+ {
+ "x": 281.32200000000006,
+ "y": 209.522
+ },
+ {
+ "x": 277.168,
+ "y": 213.96800000000002
+ },
+ {
+ "x": 273.326,
+ "y": 216.926
+ },
+ {
+ "x": 270.0,
+ "y": 218.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 302.0,
+ "y": 170.0
+ },
+ {
+ "x": 301.37399999999997,
+ "y": 173.88600000000002
+ },
+ {
+ "x": 299.63199999999995,
+ "y": 179.248
+ },
+ {
+ "x": 296.978,
+ "y": 185.642
+ },
+ {
+ "x": 293.616,
+ "y": 192.624
+ },
+ {
+ "x": 289.75,
+ "y": 199.75
+ },
+ {
+ "x": 285.584,
+ "y": 206.576
+ },
+ {
+ "x": 281.32200000000006,
+ "y": 212.658
+ },
+ {
+ "x": 277.168,
+ "y": 217.55200000000002
+ },
+ {
+ "x": 273.326,
+ "y": 220.814
+ },
+ {
+ "x": 270.0,
+ "y": 222.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_right",
+ "startRoad": "road_3_2_2",
+ "endRoad": "road_2_2_1",
+ "direction": 2,
+ "laneLinks": [
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 218.0
+ },
+ {
+ "x": 326.786,
+ "y": 218.06599999999997
+ },
+ {
+ "x": 323.24800000000005,
+ "y": 218.288
+ },
+ {
+ "x": 319.54200000000003,
+ "y": 218.70200000000003
+ },
+ {
+ "x": 315.824,
+ "y": 219.344
+ },
+ {
+ "x": 312.25,
+ "y": 220.25
+ },
+ {
+ "x": 308.976,
+ "y": 221.45600000000002
+ },
+ {
+ "x": 306.158,
+ "y": 222.99800000000002
+ },
+ {
+ "x": 303.952,
+ "y": 224.912
+ },
+ {
+ "x": 302.514,
+ "y": 227.234
+ },
+ {
+ "x": 302.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 218.0
+ },
+ {
+ "x": 326.89799999999997,
+ "y": 218.06599999999997
+ },
+ {
+ "x": 323.66400000000004,
+ "y": 218.288
+ },
+ {
+ "x": 320.40600000000006,
+ "y": 218.70200000000003
+ },
+ {
+ "x": 317.232,
+ "y": 219.344
+ },
+ {
+ "x": 314.25,
+ "y": 220.25
+ },
+ {
+ "x": 311.568,
+ "y": 221.45600000000002
+ },
+ {
+ "x": 309.294,
+ "y": 222.99800000000002
+ },
+ {
+ "x": 307.536,
+ "y": 224.912
+ },
+ {
+ "x": 306.40200000000004,
+ "y": 227.234
+ },
+ {
+ "x": 306.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 218.0
+ },
+ {
+ "x": 327.01,
+ "y": 218.06599999999997
+ },
+ {
+ "x": 324.08000000000004,
+ "y": 218.288
+ },
+ {
+ "x": 321.27000000000004,
+ "y": 218.70200000000003
+ },
+ {
+ "x": 318.64,
+ "y": 219.344
+ },
+ {
+ "x": 316.25,
+ "y": 220.25
+ },
+ {
+ "x": 314.16,
+ "y": 221.45600000000002
+ },
+ {
+ "x": 312.43,
+ "y": 222.99800000000002
+ },
+ {
+ "x": 311.12,
+ "y": 224.912
+ },
+ {
+ "x": 310.29,
+ "y": 227.234
+ },
+ {
+ "x": 310.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 218.0
+ },
+ {
+ "x": 327.12199999999996,
+ "y": 218.06599999999997
+ },
+ {
+ "x": 324.49600000000004,
+ "y": 218.288
+ },
+ {
+ "x": 322.134,
+ "y": 218.70200000000003
+ },
+ {
+ "x": 320.048,
+ "y": 219.344
+ },
+ {
+ "x": 318.25,
+ "y": 220.25
+ },
+ {
+ "x": 316.752,
+ "y": 221.45600000000002
+ },
+ {
+ "x": 315.56600000000003,
+ "y": 222.99800000000002
+ },
+ {
+ "x": 314.704,
+ "y": 224.912
+ },
+ {
+ "x": 314.178,
+ "y": 227.234
+ },
+ {
+ "x": 314.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 222.0
+ },
+ {
+ "x": 326.786,
+ "y": 221.95399999999998
+ },
+ {
+ "x": 323.24800000000005,
+ "y": 221.872
+ },
+ {
+ "x": 319.54200000000003,
+ "y": 221.83800000000002
+ },
+ {
+ "x": 315.824,
+ "y": 221.93599999999998
+ },
+ {
+ "x": 312.25,
+ "y": 222.25
+ },
+ {
+ "x": 308.976,
+ "y": 222.864
+ },
+ {
+ "x": 306.158,
+ "y": 223.86200000000002
+ },
+ {
+ "x": 303.952,
+ "y": 225.328
+ },
+ {
+ "x": 302.514,
+ "y": 227.346
+ },
+ {
+ "x": 302.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 222.0
+ },
+ {
+ "x": 326.89799999999997,
+ "y": 221.95399999999998
+ },
+ {
+ "x": 323.66400000000004,
+ "y": 221.872
+ },
+ {
+ "x": 320.40600000000006,
+ "y": 221.83800000000002
+ },
+ {
+ "x": 317.232,
+ "y": 221.93599999999998
+ },
+ {
+ "x": 314.25,
+ "y": 222.25
+ },
+ {
+ "x": 311.568,
+ "y": 222.864
+ },
+ {
+ "x": 309.294,
+ "y": 223.86200000000002
+ },
+ {
+ "x": 307.536,
+ "y": 225.328
+ },
+ {
+ "x": 306.40200000000004,
+ "y": 227.346
+ },
+ {
+ "x": 306.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 222.0
+ },
+ {
+ "x": 327.01,
+ "y": 221.95399999999998
+ },
+ {
+ "x": 324.08000000000004,
+ "y": 221.872
+ },
+ {
+ "x": 321.27000000000004,
+ "y": 221.83800000000002
+ },
+ {
+ "x": 318.64,
+ "y": 221.93599999999998
+ },
+ {
+ "x": 316.25,
+ "y": 222.25
+ },
+ {
+ "x": 314.16,
+ "y": 222.864
+ },
+ {
+ "x": 312.43,
+ "y": 223.86200000000002
+ },
+ {
+ "x": 311.12,
+ "y": 225.328
+ },
+ {
+ "x": 310.29,
+ "y": 227.346
+ },
+ {
+ "x": 310.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 222.0
+ },
+ {
+ "x": 327.12199999999996,
+ "y": 221.95399999999998
+ },
+ {
+ "x": 324.49600000000004,
+ "y": 221.872
+ },
+ {
+ "x": 322.134,
+ "y": 221.83800000000002
+ },
+ {
+ "x": 320.048,
+ "y": 221.93599999999998
+ },
+ {
+ "x": 318.25,
+ "y": 222.25
+ },
+ {
+ "x": 316.752,
+ "y": 222.864
+ },
+ {
+ "x": 315.56600000000003,
+ "y": 223.86200000000002
+ },
+ {
+ "x": 314.704,
+ "y": 225.328
+ },
+ {
+ "x": 314.178,
+ "y": 227.346
+ },
+ {
+ "x": 314.0,
+ "y": 230.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "go_straight",
+ "startRoad": "road_3_2_2",
+ "endRoad": "road_2_2_2",
+ "direction": 2,
+ "laneLinks": [
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 210.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 209.776
+ },
+ {
+ "x": 320.88,
+ "y": 209.168
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 208.27200000000002
+ },
+ {
+ "x": 307.44,
+ "y": 207.184
+ },
+ {
+ "x": 300.0,
+ "y": 206.0
+ },
+ {
+ "x": 292.56,
+ "y": 204.81599999999997
+ },
+ {
+ "x": 285.48,
+ "y": 203.728
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 202.832
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 202.224
+ },
+ {
+ "x": 270.0,
+ "y": 202.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 210.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 209.888
+ },
+ {
+ "x": 320.88,
+ "y": 209.584
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 209.13600000000002
+ },
+ {
+ "x": 307.44,
+ "y": 208.59199999999998
+ },
+ {
+ "x": 300.0,
+ "y": 208.0
+ },
+ {
+ "x": 292.56,
+ "y": 207.40800000000002
+ },
+ {
+ "x": 285.48,
+ "y": 206.864
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 206.416
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 206.112
+ },
+ {
+ "x": 270.0,
+ "y": 206.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 210.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 210.0
+ },
+ {
+ "x": 320.88,
+ "y": 210.0
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 210.00000000000003
+ },
+ {
+ "x": 307.44,
+ "y": 210.0
+ },
+ {
+ "x": 300.0,
+ "y": 210.0
+ },
+ {
+ "x": 292.56,
+ "y": 210.0
+ },
+ {
+ "x": 285.48,
+ "y": 210.0
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 210.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 210.0
+ },
+ {
+ "x": 270.0,
+ "y": 210.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 210.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 210.112
+ },
+ {
+ "x": 320.88,
+ "y": 210.416
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 210.86400000000003
+ },
+ {
+ "x": 307.44,
+ "y": 211.40800000000002
+ },
+ {
+ "x": 300.0,
+ "y": 212.0
+ },
+ {
+ "x": 292.56,
+ "y": 212.59199999999998
+ },
+ {
+ "x": 285.48,
+ "y": 213.136
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 213.584
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 213.88799999999998
+ },
+ {
+ "x": 270.0,
+ "y": 214.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 210.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 210.22400000000002
+ },
+ {
+ "x": 320.88,
+ "y": 210.832
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 211.728
+ },
+ {
+ "x": 307.44,
+ "y": 212.816
+ },
+ {
+ "x": 300.0,
+ "y": 214.0
+ },
+ {
+ "x": 292.56,
+ "y": 215.18400000000003
+ },
+ {
+ "x": 285.48,
+ "y": 216.272
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 217.168
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 217.77599999999998
+ },
+ {
+ "x": 270.0,
+ "y": 218.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 210.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 210.336
+ },
+ {
+ "x": 320.88,
+ "y": 211.248
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 212.592
+ },
+ {
+ "x": 307.44,
+ "y": 214.224
+ },
+ {
+ "x": 300.0,
+ "y": 216.0
+ },
+ {
+ "x": 292.56,
+ "y": 217.776
+ },
+ {
+ "x": 285.48,
+ "y": 219.408
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 220.752
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 221.664
+ },
+ {
+ "x": 270.0,
+ "y": 222.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 214.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 213.664
+ },
+ {
+ "x": 320.88,
+ "y": 212.752
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 211.40800000000002
+ },
+ {
+ "x": 307.44,
+ "y": 209.77599999999998
+ },
+ {
+ "x": 300.0,
+ "y": 208.0
+ },
+ {
+ "x": 292.56,
+ "y": 206.224
+ },
+ {
+ "x": 285.48,
+ "y": 204.592
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 203.248
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 202.336
+ },
+ {
+ "x": 270.0,
+ "y": 202.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 214.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 213.77599999999998
+ },
+ {
+ "x": 320.88,
+ "y": 213.168
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 212.27200000000002
+ },
+ {
+ "x": 307.44,
+ "y": 211.18399999999997
+ },
+ {
+ "x": 300.0,
+ "y": 210.0
+ },
+ {
+ "x": 292.56,
+ "y": 208.816
+ },
+ {
+ "x": 285.48,
+ "y": 207.728
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 206.832
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 206.22400000000002
+ },
+ {
+ "x": 270.0,
+ "y": 206.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 214.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 213.88799999999998
+ },
+ {
+ "x": 320.88,
+ "y": 213.584
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 213.13600000000002
+ },
+ {
+ "x": 307.44,
+ "y": 212.59199999999998
+ },
+ {
+ "x": 300.0,
+ "y": 212.0
+ },
+ {
+ "x": 292.56,
+ "y": 211.40800000000002
+ },
+ {
+ "x": 285.48,
+ "y": 210.864
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 210.416
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 210.11200000000002
+ },
+ {
+ "x": 270.0,
+ "y": 210.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 214.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 213.99999999999997
+ },
+ {
+ "x": 320.88,
+ "y": 214.0
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 214.0
+ },
+ {
+ "x": 307.44,
+ "y": 214.0
+ },
+ {
+ "x": 300.0,
+ "y": 214.0
+ },
+ {
+ "x": 292.56,
+ "y": 214.0
+ },
+ {
+ "x": 285.48,
+ "y": 214.0
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 214.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 214.0
+ },
+ {
+ "x": 270.0,
+ "y": 214.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 214.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 214.112
+ },
+ {
+ "x": 320.88,
+ "y": 214.416
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 214.86400000000003
+ },
+ {
+ "x": 307.44,
+ "y": 215.408
+ },
+ {
+ "x": 300.0,
+ "y": 216.0
+ },
+ {
+ "x": 292.56,
+ "y": 216.592
+ },
+ {
+ "x": 285.48,
+ "y": 217.136
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 217.584
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 217.888
+ },
+ {
+ "x": 270.0,
+ "y": 218.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 214.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 214.224
+ },
+ {
+ "x": 320.88,
+ "y": 214.832
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 215.728
+ },
+ {
+ "x": 307.44,
+ "y": 216.81599999999997
+ },
+ {
+ "x": 300.0,
+ "y": 218.0
+ },
+ {
+ "x": 292.56,
+ "y": 219.184
+ },
+ {
+ "x": 285.48,
+ "y": 220.272
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 221.168
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 221.776
+ },
+ {
+ "x": 270.0,
+ "y": 222.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 218.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 217.552
+ },
+ {
+ "x": 320.88,
+ "y": 216.336
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 214.544
+ },
+ {
+ "x": 307.44,
+ "y": 212.368
+ },
+ {
+ "x": 300.0,
+ "y": 210.0
+ },
+ {
+ "x": 292.56,
+ "y": 207.632
+ },
+ {
+ "x": 285.48,
+ "y": 205.45600000000002
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 203.664
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 202.448
+ },
+ {
+ "x": 270.0,
+ "y": 202.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 218.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 217.664
+ },
+ {
+ "x": 320.88,
+ "y": 216.752
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 215.40800000000002
+ },
+ {
+ "x": 307.44,
+ "y": 213.776
+ },
+ {
+ "x": 300.0,
+ "y": 212.0
+ },
+ {
+ "x": 292.56,
+ "y": 210.224
+ },
+ {
+ "x": 285.48,
+ "y": 208.592
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 207.248
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 206.336
+ },
+ {
+ "x": 270.0,
+ "y": 206.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 218.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 217.77599999999998
+ },
+ {
+ "x": 320.88,
+ "y": 217.168
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 216.27200000000002
+ },
+ {
+ "x": 307.44,
+ "y": 215.184
+ },
+ {
+ "x": 300.0,
+ "y": 214.0
+ },
+ {
+ "x": 292.56,
+ "y": 212.81600000000003
+ },
+ {
+ "x": 285.48,
+ "y": 211.728
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 210.832
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 210.22400000000002
+ },
+ {
+ "x": 270.0,
+ "y": 210.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 218.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 217.88799999999998
+ },
+ {
+ "x": 320.88,
+ "y": 217.584
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 217.13600000000002
+ },
+ {
+ "x": 307.44,
+ "y": 216.59199999999998
+ },
+ {
+ "x": 300.0,
+ "y": 216.0
+ },
+ {
+ "x": 292.56,
+ "y": 215.40800000000002
+ },
+ {
+ "x": 285.48,
+ "y": 214.864
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 214.416
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 214.112
+ },
+ {
+ "x": 270.0,
+ "y": 214.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 218.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 218.0
+ },
+ {
+ "x": 320.88,
+ "y": 218.0
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 218.0
+ },
+ {
+ "x": 307.44,
+ "y": 218.0
+ },
+ {
+ "x": 300.0,
+ "y": 218.0
+ },
+ {
+ "x": 292.56,
+ "y": 218.0
+ },
+ {
+ "x": 285.48,
+ "y": 218.0
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 218.0
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 218.0
+ },
+ {
+ "x": 270.0,
+ "y": 218.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 218.0
+ },
+ {
+ "x": 326.15999999999997,
+ "y": 218.112
+ },
+ {
+ "x": 320.88,
+ "y": 218.416
+ },
+ {
+ "x": 314.52000000000004,
+ "y": 218.864
+ },
+ {
+ "x": 307.44,
+ "y": 219.40800000000002
+ },
+ {
+ "x": 300.0,
+ "y": 220.0
+ },
+ {
+ "x": 292.56,
+ "y": 220.59199999999998
+ },
+ {
+ "x": 285.48,
+ "y": 221.136
+ },
+ {
+ "x": 279.11999999999995,
+ "y": 221.584
+ },
+ {
+ "x": 273.84000000000003,
+ "y": 221.888
+ },
+ {
+ "x": 270.0,
+ "y": 222.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_left",
+ "startRoad": "road_3_2_2",
+ "endRoad": "road_2_2_3",
+ "direction": 2,
+ "laneLinks": [
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 202.0
+ },
+ {
+ "x": 326.674,
+ "y": 201.374
+ },
+ {
+ "x": 322.83200000000005,
+ "y": 199.632
+ },
+ {
+ "x": 318.67800000000005,
+ "y": 196.97799999999998
+ },
+ {
+ "x": 314.416,
+ "y": 193.61599999999999
+ },
+ {
+ "x": 310.25,
+ "y": 189.75
+ },
+ {
+ "x": 306.384,
+ "y": 185.584
+ },
+ {
+ "x": 303.022,
+ "y": 181.32199999999997
+ },
+ {
+ "x": 300.368,
+ "y": 177.168
+ },
+ {
+ "x": 298.62600000000003,
+ "y": 173.32600000000002
+ },
+ {
+ "x": 298.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 202.0
+ },
+ {
+ "x": 326.562,
+ "y": 201.374
+ },
+ {
+ "x": 322.41600000000005,
+ "y": 199.632
+ },
+ {
+ "x": 317.814,
+ "y": 196.97799999999998
+ },
+ {
+ "x": 313.00800000000004,
+ "y": 193.61599999999999
+ },
+ {
+ "x": 308.25,
+ "y": 189.75
+ },
+ {
+ "x": 303.792,
+ "y": 185.584
+ },
+ {
+ "x": 299.886,
+ "y": 181.32199999999997
+ },
+ {
+ "x": 296.784,
+ "y": 177.168
+ },
+ {
+ "x": 294.738,
+ "y": 173.32600000000002
+ },
+ {
+ "x": 294.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 202.0
+ },
+ {
+ "x": 326.45,
+ "y": 201.374
+ },
+ {
+ "x": 322.00000000000006,
+ "y": 199.632
+ },
+ {
+ "x": 316.95000000000005,
+ "y": 196.97799999999998
+ },
+ {
+ "x": 311.6,
+ "y": 193.61599999999999
+ },
+ {
+ "x": 306.25,
+ "y": 189.75
+ },
+ {
+ "x": 301.2,
+ "y": 185.584
+ },
+ {
+ "x": 296.75,
+ "y": 181.32199999999997
+ },
+ {
+ "x": 293.2,
+ "y": 177.168
+ },
+ {
+ "x": 290.85,
+ "y": 173.32600000000002
+ },
+ {
+ "x": 290.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 202.0
+ },
+ {
+ "x": 326.33799999999997,
+ "y": 201.374
+ },
+ {
+ "x": 321.58400000000006,
+ "y": 199.632
+ },
+ {
+ "x": 316.086,
+ "y": 196.97799999999998
+ },
+ {
+ "x": 310.192,
+ "y": 193.61599999999999
+ },
+ {
+ "x": 304.25,
+ "y": 189.75
+ },
+ {
+ "x": 298.608,
+ "y": 185.584
+ },
+ {
+ "x": 293.61400000000003,
+ "y": 181.32199999999997
+ },
+ {
+ "x": 289.616,
+ "y": 177.168
+ },
+ {
+ "x": 286.96200000000005,
+ "y": 173.32600000000002
+ },
+ {
+ "x": 286.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 206.0
+ },
+ {
+ "x": 326.674,
+ "y": 205.262
+ },
+ {
+ "x": 322.83200000000005,
+ "y": 203.216
+ },
+ {
+ "x": 318.67800000000005,
+ "y": 200.114
+ },
+ {
+ "x": 314.416,
+ "y": 196.20799999999997
+ },
+ {
+ "x": 310.25,
+ "y": 191.75
+ },
+ {
+ "x": 306.384,
+ "y": 186.992
+ },
+ {
+ "x": 303.022,
+ "y": 182.18599999999998
+ },
+ {
+ "x": 300.368,
+ "y": 177.584
+ },
+ {
+ "x": 298.62600000000003,
+ "y": 173.43800000000002
+ },
+ {
+ "x": 298.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 206.0
+ },
+ {
+ "x": 326.562,
+ "y": 205.262
+ },
+ {
+ "x": 322.41600000000005,
+ "y": 203.216
+ },
+ {
+ "x": 317.814,
+ "y": 200.114
+ },
+ {
+ "x": 313.00800000000004,
+ "y": 196.20799999999997
+ },
+ {
+ "x": 308.25,
+ "y": 191.75
+ },
+ {
+ "x": 303.792,
+ "y": 186.992
+ },
+ {
+ "x": 299.886,
+ "y": 182.18599999999998
+ },
+ {
+ "x": 296.784,
+ "y": 177.584
+ },
+ {
+ "x": 294.738,
+ "y": 173.43800000000002
+ },
+ {
+ "x": 294.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 206.0
+ },
+ {
+ "x": 326.45,
+ "y": 205.262
+ },
+ {
+ "x": 322.00000000000006,
+ "y": 203.216
+ },
+ {
+ "x": 316.95000000000005,
+ "y": 200.114
+ },
+ {
+ "x": 311.6,
+ "y": 196.20799999999997
+ },
+ {
+ "x": 306.25,
+ "y": 191.75
+ },
+ {
+ "x": 301.2,
+ "y": 186.992
+ },
+ {
+ "x": 296.75,
+ "y": 182.18599999999998
+ },
+ {
+ "x": 293.2,
+ "y": 177.584
+ },
+ {
+ "x": 290.85,
+ "y": 173.43800000000002
+ },
+ {
+ "x": 290.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 330.0,
+ "y": 206.0
+ },
+ {
+ "x": 326.33799999999997,
+ "y": 205.262
+ },
+ {
+ "x": 321.58400000000006,
+ "y": 203.216
+ },
+ {
+ "x": 316.086,
+ "y": 200.114
+ },
+ {
+ "x": 310.192,
+ "y": 196.20799999999997
+ },
+ {
+ "x": 304.25,
+ "y": 191.75
+ },
+ {
+ "x": 298.608,
+ "y": 186.992
+ },
+ {
+ "x": 293.61400000000003,
+ "y": 182.18599999999998
+ },
+ {
+ "x": 289.616,
+ "y": 177.584
+ },
+ {
+ "x": 286.96200000000005,
+ "y": 173.43800000000002
+ },
+ {
+ "x": 286.0,
+ "y": 170.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_left",
+ "startRoad": "road_2_3_3",
+ "endRoad": "road_2_2_0",
+ "direction": 3,
+ "laneLinks": [
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 298.0,
+ "y": 230.0
+ },
+ {
+ "x": 298.62600000000003,
+ "y": 226.674
+ },
+ {
+ "x": 300.368,
+ "y": 222.83200000000002
+ },
+ {
+ "x": 303.02200000000005,
+ "y": 218.678
+ },
+ {
+ "x": 306.384,
+ "y": 214.416
+ },
+ {
+ "x": 310.25,
+ "y": 210.25
+ },
+ {
+ "x": 314.416,
+ "y": 206.38400000000001
+ },
+ {
+ "x": 318.67799999999994,
+ "y": 203.022
+ },
+ {
+ "x": 322.83200000000005,
+ "y": 200.368
+ },
+ {
+ "x": 326.674,
+ "y": 198.626
+ },
+ {
+ "x": 330.0,
+ "y": 198.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 298.0,
+ "y": 230.0
+ },
+ {
+ "x": 298.62600000000003,
+ "y": 226.56199999999998
+ },
+ {
+ "x": 300.368,
+ "y": 222.41600000000003
+ },
+ {
+ "x": 303.02200000000005,
+ "y": 217.814
+ },
+ {
+ "x": 306.384,
+ "y": 213.008
+ },
+ {
+ "x": 310.25,
+ "y": 208.25
+ },
+ {
+ "x": 314.416,
+ "y": 203.792
+ },
+ {
+ "x": 318.67799999999994,
+ "y": 199.886
+ },
+ {
+ "x": 322.83200000000005,
+ "y": 196.784
+ },
+ {
+ "x": 326.674,
+ "y": 194.738
+ },
+ {
+ "x": 330.0,
+ "y": 194.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 298.0,
+ "y": 230.0
+ },
+ {
+ "x": 298.62600000000003,
+ "y": 226.45
+ },
+ {
+ "x": 300.368,
+ "y": 222.0
+ },
+ {
+ "x": 303.02200000000005,
+ "y": 216.95
+ },
+ {
+ "x": 306.384,
+ "y": 211.60000000000002
+ },
+ {
+ "x": 310.25,
+ "y": 206.25
+ },
+ {
+ "x": 314.416,
+ "y": 201.2
+ },
+ {
+ "x": 318.67799999999994,
+ "y": 196.75
+ },
+ {
+ "x": 322.83200000000005,
+ "y": 193.20000000000002
+ },
+ {
+ "x": 326.674,
+ "y": 190.85000000000002
+ },
+ {
+ "x": 330.0,
+ "y": 190.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 298.0,
+ "y": 230.0
+ },
+ {
+ "x": 298.62600000000003,
+ "y": 226.338
+ },
+ {
+ "x": 300.368,
+ "y": 221.584
+ },
+ {
+ "x": 303.02200000000005,
+ "y": 216.086
+ },
+ {
+ "x": 306.384,
+ "y": 210.192
+ },
+ {
+ "x": 310.25,
+ "y": 204.25
+ },
+ {
+ "x": 314.416,
+ "y": 198.608
+ },
+ {
+ "x": 318.67799999999994,
+ "y": 193.614
+ },
+ {
+ "x": 322.83200000000005,
+ "y": 189.616
+ },
+ {
+ "x": 326.674,
+ "y": 186.96200000000002
+ },
+ {
+ "x": 330.0,
+ "y": 186.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 298.0,
+ "y": 230.0
+ },
+ {
+ "x": 298.62600000000003,
+ "y": 226.226
+ },
+ {
+ "x": 300.368,
+ "y": 221.168
+ },
+ {
+ "x": 303.02200000000005,
+ "y": 215.222
+ },
+ {
+ "x": 306.384,
+ "y": 208.78400000000002
+ },
+ {
+ "x": 310.25,
+ "y": 202.25
+ },
+ {
+ "x": 314.416,
+ "y": 196.016
+ },
+ {
+ "x": 318.67799999999994,
+ "y": 190.478
+ },
+ {
+ "x": 322.83200000000005,
+ "y": 186.032
+ },
+ {
+ "x": 326.674,
+ "y": 183.074
+ },
+ {
+ "x": 330.0,
+ "y": 182.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 298.0,
+ "y": 230.0
+ },
+ {
+ "x": 298.62600000000003,
+ "y": 226.114
+ },
+ {
+ "x": 300.368,
+ "y": 220.752
+ },
+ {
+ "x": 303.02200000000005,
+ "y": 214.358
+ },
+ {
+ "x": 306.384,
+ "y": 207.376
+ },
+ {
+ "x": 310.25,
+ "y": 200.25
+ },
+ {
+ "x": 314.416,
+ "y": 193.42399999999998
+ },
+ {
+ "x": 318.67799999999994,
+ "y": 187.342
+ },
+ {
+ "x": 322.83200000000005,
+ "y": 182.448
+ },
+ {
+ "x": 326.674,
+ "y": 179.186
+ },
+ {
+ "x": 330.0,
+ "y": 178.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_right",
+ "startRoad": "road_2_3_3",
+ "endRoad": "road_2_2_2",
+ "direction": 3,
+ "laneLinks": [
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 286.0,
+ "y": 230.0
+ },
+ {
+ "x": 285.822,
+ "y": 226.786
+ },
+ {
+ "x": 285.296,
+ "y": 223.24800000000002
+ },
+ {
+ "x": 284.434,
+ "y": 219.542
+ },
+ {
+ "x": 283.248,
+ "y": 215.824
+ },
+ {
+ "x": 281.75,
+ "y": 212.25
+ },
+ {
+ "x": 279.952,
+ "y": 208.976
+ },
+ {
+ "x": 277.86600000000004,
+ "y": 206.15800000000002
+ },
+ {
+ "x": 275.50399999999996,
+ "y": 203.952
+ },
+ {
+ "x": 272.878,
+ "y": 202.514
+ },
+ {
+ "x": 270.0,
+ "y": 202.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 286.0,
+ "y": 230.0
+ },
+ {
+ "x": 285.822,
+ "y": 226.898
+ },
+ {
+ "x": 285.296,
+ "y": 223.66400000000002
+ },
+ {
+ "x": 284.434,
+ "y": 220.406
+ },
+ {
+ "x": 283.248,
+ "y": 217.23200000000003
+ },
+ {
+ "x": 281.75,
+ "y": 214.25
+ },
+ {
+ "x": 279.952,
+ "y": 211.56799999999998
+ },
+ {
+ "x": 277.86600000000004,
+ "y": 209.294
+ },
+ {
+ "x": 275.50399999999996,
+ "y": 207.536
+ },
+ {
+ "x": 272.878,
+ "y": 206.40200000000002
+ },
+ {
+ "x": 270.0,
+ "y": 206.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 286.0,
+ "y": 230.0
+ },
+ {
+ "x": 285.822,
+ "y": 227.01
+ },
+ {
+ "x": 285.296,
+ "y": 224.08
+ },
+ {
+ "x": 284.434,
+ "y": 221.27
+ },
+ {
+ "x": 283.248,
+ "y": 218.64000000000001
+ },
+ {
+ "x": 281.75,
+ "y": 216.25
+ },
+ {
+ "x": 279.952,
+ "y": 214.16000000000003
+ },
+ {
+ "x": 277.86600000000004,
+ "y": 212.43
+ },
+ {
+ "x": 275.50399999999996,
+ "y": 211.12
+ },
+ {
+ "x": 272.878,
+ "y": 210.29000000000002
+ },
+ {
+ "x": 270.0,
+ "y": 210.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 286.0,
+ "y": 230.0
+ },
+ {
+ "x": 285.822,
+ "y": 227.12199999999999
+ },
+ {
+ "x": 285.296,
+ "y": 224.496
+ },
+ {
+ "x": 284.434,
+ "y": 222.13400000000001
+ },
+ {
+ "x": 283.248,
+ "y": 220.048
+ },
+ {
+ "x": 281.75,
+ "y": 218.25
+ },
+ {
+ "x": 279.952,
+ "y": 216.752
+ },
+ {
+ "x": 277.86600000000004,
+ "y": 215.566
+ },
+ {
+ "x": 275.50399999999996,
+ "y": 214.704
+ },
+ {
+ "x": 272.878,
+ "y": 214.178
+ },
+ {
+ "x": 270.0,
+ "y": 214.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 286.0,
+ "y": 230.0
+ },
+ {
+ "x": 285.822,
+ "y": 227.234
+ },
+ {
+ "x": 285.296,
+ "y": 224.912
+ },
+ {
+ "x": 284.434,
+ "y": 222.998
+ },
+ {
+ "x": 283.248,
+ "y": 221.45600000000002
+ },
+ {
+ "x": 281.75,
+ "y": 220.25
+ },
+ {
+ "x": 279.952,
+ "y": 219.344
+ },
+ {
+ "x": 277.86600000000004,
+ "y": 218.702
+ },
+ {
+ "x": 275.50399999999996,
+ "y": 218.288
+ },
+ {
+ "x": 272.878,
+ "y": 218.066
+ },
+ {
+ "x": 270.0,
+ "y": 218.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 286.0,
+ "y": 230.0
+ },
+ {
+ "x": 285.822,
+ "y": 227.346
+ },
+ {
+ "x": 285.296,
+ "y": 225.328
+ },
+ {
+ "x": 284.434,
+ "y": 223.862
+ },
+ {
+ "x": 283.248,
+ "y": 222.86400000000003
+ },
+ {
+ "x": 281.75,
+ "y": 222.25
+ },
+ {
+ "x": 279.952,
+ "y": 221.93599999999998
+ },
+ {
+ "x": 277.86600000000004,
+ "y": 221.838
+ },
+ {
+ "x": 275.50399999999996,
+ "y": 221.872
+ },
+ {
+ "x": 272.878,
+ "y": 221.954
+ },
+ {
+ "x": 270.0,
+ "y": 222.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "go_straight",
+ "startRoad": "road_2_3_3",
+ "endRoad": "road_2_2_3",
+ "direction": 3,
+ "laneLinks": [
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 294.0,
+ "y": 230.0
+ },
+ {
+ "x": 294.11199999999997,
+ "y": 226.16
+ },
+ {
+ "x": 294.416,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 294.86400000000003,
+ "y": 214.51999999999998
+ },
+ {
+ "x": 295.408,
+ "y": 207.44
+ },
+ {
+ "x": 296.0,
+ "y": 200.0
+ },
+ {
+ "x": 296.592,
+ "y": 192.56
+ },
+ {
+ "x": 297.136,
+ "y": 185.48
+ },
+ {
+ "x": 297.584,
+ "y": 179.12
+ },
+ {
+ "x": 297.88800000000003,
+ "y": 173.84000000000003
+ },
+ {
+ "x": 298.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 294.0,
+ "y": 230.0
+ },
+ {
+ "x": 294.0,
+ "y": 226.16
+ },
+ {
+ "x": 294.0,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 294.0,
+ "y": 214.51999999999998
+ },
+ {
+ "x": 294.0,
+ "y": 207.44
+ },
+ {
+ "x": 294.0,
+ "y": 200.0
+ },
+ {
+ "x": 294.0,
+ "y": 192.56
+ },
+ {
+ "x": 294.0,
+ "y": 185.48
+ },
+ {
+ "x": 294.0,
+ "y": 179.12
+ },
+ {
+ "x": 294.0,
+ "y": 173.84000000000003
+ },
+ {
+ "x": 294.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 294.0,
+ "y": 230.0
+ },
+ {
+ "x": 293.888,
+ "y": 226.16
+ },
+ {
+ "x": 293.584,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 293.136,
+ "y": 214.51999999999998
+ },
+ {
+ "x": 292.592,
+ "y": 207.44
+ },
+ {
+ "x": 292.0,
+ "y": 200.0
+ },
+ {
+ "x": 291.408,
+ "y": 192.56
+ },
+ {
+ "x": 290.86400000000003,
+ "y": 185.48
+ },
+ {
+ "x": 290.416,
+ "y": 179.12
+ },
+ {
+ "x": 290.112,
+ "y": 173.84000000000003
+ },
+ {
+ "x": 290.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 294.0,
+ "y": 230.0
+ },
+ {
+ "x": 293.77599999999995,
+ "y": 226.16
+ },
+ {
+ "x": 293.168,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 292.27200000000005,
+ "y": 214.51999999999998
+ },
+ {
+ "x": 291.18399999999997,
+ "y": 207.44
+ },
+ {
+ "x": 290.0,
+ "y": 200.0
+ },
+ {
+ "x": 288.816,
+ "y": 192.56
+ },
+ {
+ "x": 287.728,
+ "y": 185.48
+ },
+ {
+ "x": 286.832,
+ "y": 179.12
+ },
+ {
+ "x": 286.22400000000005,
+ "y": 173.84000000000003
+ },
+ {
+ "x": 286.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 290.0,
+ "y": 230.0
+ },
+ {
+ "x": 290.224,
+ "y": 226.16
+ },
+ {
+ "x": 290.83200000000005,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 291.728,
+ "y": 214.51999999999998
+ },
+ {
+ "x": 292.81600000000003,
+ "y": 207.44
+ },
+ {
+ "x": 294.0,
+ "y": 200.0
+ },
+ {
+ "x": 295.18399999999997,
+ "y": 192.56
+ },
+ {
+ "x": 296.272,
+ "y": 185.48
+ },
+ {
+ "x": 297.168,
+ "y": 179.12
+ },
+ {
+ "x": 297.776,
+ "y": 173.84000000000003
+ },
+ {
+ "x": 298.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 290.0,
+ "y": 230.0
+ },
+ {
+ "x": 290.112,
+ "y": 226.16
+ },
+ {
+ "x": 290.41600000000005,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 290.86400000000003,
+ "y": 214.51999999999998
+ },
+ {
+ "x": 291.408,
+ "y": 207.44
+ },
+ {
+ "x": 292.0,
+ "y": 200.0
+ },
+ {
+ "x": 292.592,
+ "y": 192.56
+ },
+ {
+ "x": 293.136,
+ "y": 185.48
+ },
+ {
+ "x": 293.584,
+ "y": 179.12
+ },
+ {
+ "x": 293.888,
+ "y": 173.84000000000003
+ },
+ {
+ "x": 294.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 290.0,
+ "y": 230.0
+ },
+ {
+ "x": 290.0,
+ "y": 226.16
+ },
+ {
+ "x": 290.00000000000006,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 290.0,
+ "y": 214.51999999999998
+ },
+ {
+ "x": 290.0,
+ "y": 207.44
+ },
+ {
+ "x": 290.0,
+ "y": 200.0
+ },
+ {
+ "x": 290.0,
+ "y": 192.56
+ },
+ {
+ "x": 290.0,
+ "y": 185.48
+ },
+ {
+ "x": 290.0,
+ "y": 179.12
+ },
+ {
+ "x": 290.0,
+ "y": 173.84000000000003
+ },
+ {
+ "x": 290.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 290.0,
+ "y": 230.0
+ },
+ {
+ "x": 289.888,
+ "y": 226.16
+ },
+ {
+ "x": 289.58400000000006,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 289.136,
+ "y": 214.51999999999998
+ },
+ {
+ "x": 288.592,
+ "y": 207.44
+ },
+ {
+ "x": 288.0,
+ "y": 200.0
+ },
+ {
+ "x": 287.408,
+ "y": 192.56
+ },
+ {
+ "x": 286.86400000000003,
+ "y": 185.48
+ },
+ {
+ "x": 286.416,
+ "y": 179.12
+ },
+ {
+ "x": 286.112,
+ "y": 173.84000000000003
+ },
+ {
+ "x": 286.0,
+ "y": 170.0
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "trafficLight": {
+ "roadLinkIndices": [
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "lightphases": [
+ {
+ "time": 30,
+ "availableRoadLinks": [
+ 0,
+ 2,
+ 3,
+ 6,
+ 7,
+ 10
+ ]
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": [
+ 10,
+ 2,
+ 3,
+ 6
+ ]
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": [
+ 1,
+ 2,
+ 3,
+ 6,
+ 8,
+ 10
+ ]
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": [
+ 10,
+ 2,
+ 3,
+ 6
+ ]
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": [
+ 2,
+ 3,
+ 4,
+ 6,
+ 10,
+ 11
+ ]
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": [
+ 10,
+ 2,
+ 3,
+ 6
+ ]
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": [
+ 2,
+ 3,
+ 5,
+ 6,
+ 9,
+ 10
+ ]
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": [
+ 10,
+ 2,
+ 3,
+ 6
+ ]
+ }
+ ]
+ },
+ "virtual": false
+ },
+ {
+ "id": "intersection_3_2",
+ "point": {
+ "x": 600,
+ "y": 200
+ },
+ "width": 30,
+ "roads": [
+ "road_2_2_0",
+ "road_3_1_1",
+ "road_4_2_2",
+ "road_3_3_3",
+ "road_3_2_0",
+ "road_3_2_1",
+ "road_3_2_2",
+ "road_3_2_3"
+ ],
+ "roadLinks": [
+ {
+ "type": "go_straight",
+ "startRoad": "road_2_2_0",
+ "endRoad": "road_3_2_0",
+ "direction": 0,
+ "laneLinks": [
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 190.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 190.22400000000002
+ },
+ {
+ "x": 579.12,
+ "y": 190.83200000000002
+ },
+ {
+ "x": 585.48,
+ "y": 191.728
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 192.81599999999997
+ },
+ {
+ "x": 600.0,
+ "y": 194.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 195.18400000000003
+ },
+ {
+ "x": 614.5200000000001,
+ "y": 196.272
+ },
+ {
+ "x": 620.88,
+ "y": 197.168
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 197.77599999999998
+ },
+ {
+ "x": 630.0,
+ "y": 198.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 190.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 190.112
+ },
+ {
+ "x": 579.12,
+ "y": 190.41600000000003
+ },
+ {
+ "x": 585.48,
+ "y": 190.864
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 191.408
+ },
+ {
+ "x": 600.0,
+ "y": 192.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 192.592
+ },
+ {
+ "x": 614.5200000000001,
+ "y": 193.136
+ },
+ {
+ "x": 620.88,
+ "y": 193.584
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 193.88799999999998
+ },
+ {
+ "x": 630.0,
+ "y": 194.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 190.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 190.0
+ },
+ {
+ "x": 579.12,
+ "y": 190.0
+ },
+ {
+ "x": 585.48,
+ "y": 190.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 190.0
+ },
+ {
+ "x": 600.0,
+ "y": 190.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 190.0
+ },
+ {
+ "x": 614.5200000000001,
+ "y": 190.0
+ },
+ {
+ "x": 620.88,
+ "y": 190.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 190.0
+ },
+ {
+ "x": 630.0,
+ "y": 190.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 190.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 189.888
+ },
+ {
+ "x": 579.12,
+ "y": 189.584
+ },
+ {
+ "x": 585.48,
+ "y": 189.13600000000002
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 188.59199999999998
+ },
+ {
+ "x": 600.0,
+ "y": 188.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 187.40800000000002
+ },
+ {
+ "x": 614.5200000000001,
+ "y": 186.864
+ },
+ {
+ "x": 620.88,
+ "y": 186.416
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 186.112
+ },
+ {
+ "x": 630.0,
+ "y": 186.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 190.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 189.776
+ },
+ {
+ "x": 579.12,
+ "y": 189.168
+ },
+ {
+ "x": 585.48,
+ "y": 188.27200000000002
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 187.184
+ },
+ {
+ "x": 600.0,
+ "y": 186.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 184.816
+ },
+ {
+ "x": 614.5200000000001,
+ "y": 183.728
+ },
+ {
+ "x": 620.88,
+ "y": 182.832
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 182.224
+ },
+ {
+ "x": 630.0,
+ "y": 182.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 190.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 189.66400000000002
+ },
+ {
+ "x": 579.12,
+ "y": 188.752
+ },
+ {
+ "x": 585.48,
+ "y": 187.40800000000002
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 185.77599999999998
+ },
+ {
+ "x": 600.0,
+ "y": 184.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 182.224
+ },
+ {
+ "x": 614.5200000000001,
+ "y": 180.592
+ },
+ {
+ "x": 620.88,
+ "y": 179.248
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 178.33599999999998
+ },
+ {
+ "x": 630.0,
+ "y": 178.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 186.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 186.336
+ },
+ {
+ "x": 579.12,
+ "y": 187.24800000000002
+ },
+ {
+ "x": 585.48,
+ "y": 188.592
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 190.224
+ },
+ {
+ "x": 600.0,
+ "y": 192.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 193.776
+ },
+ {
+ "x": 614.5200000000001,
+ "y": 195.408
+ },
+ {
+ "x": 620.88,
+ "y": 196.75199999999998
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 197.664
+ },
+ {
+ "x": 630.0,
+ "y": 198.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 186.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 186.224
+ },
+ {
+ "x": 579.12,
+ "y": 186.83200000000002
+ },
+ {
+ "x": 585.48,
+ "y": 187.728
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 188.81599999999997
+ },
+ {
+ "x": 600.0,
+ "y": 190.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 191.18400000000003
+ },
+ {
+ "x": 614.5200000000001,
+ "y": 192.272
+ },
+ {
+ "x": 620.88,
+ "y": 193.16799999999998
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 193.77599999999998
+ },
+ {
+ "x": 630.0,
+ "y": 194.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 186.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 186.112
+ },
+ {
+ "x": 579.12,
+ "y": 186.416
+ },
+ {
+ "x": 585.48,
+ "y": 186.86400000000003
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 187.40800000000002
+ },
+ {
+ "x": 600.0,
+ "y": 188.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 188.59199999999998
+ },
+ {
+ "x": 614.5200000000001,
+ "y": 189.136
+ },
+ {
+ "x": 620.88,
+ "y": 189.584
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 189.888
+ },
+ {
+ "x": 630.0,
+ "y": 190.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 186.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 186.0
+ },
+ {
+ "x": 579.12,
+ "y": 186.0
+ },
+ {
+ "x": 585.48,
+ "y": 186.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 186.0
+ },
+ {
+ "x": 600.0,
+ "y": 186.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 186.0
+ },
+ {
+ "x": 614.5200000000001,
+ "y": 186.0
+ },
+ {
+ "x": 620.88,
+ "y": 186.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 186.0
+ },
+ {
+ "x": 630.0,
+ "y": 186.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 186.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 185.888
+ },
+ {
+ "x": 579.12,
+ "y": 185.584
+ },
+ {
+ "x": 585.48,
+ "y": 185.13600000000002
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 184.59199999999998
+ },
+ {
+ "x": 600.0,
+ "y": 184.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 183.40800000000002
+ },
+ {
+ "x": 614.5200000000001,
+ "y": 182.864
+ },
+ {
+ "x": 620.88,
+ "y": 182.416
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 182.112
+ },
+ {
+ "x": 630.0,
+ "y": 182.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 186.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 185.776
+ },
+ {
+ "x": 579.12,
+ "y": 185.168
+ },
+ {
+ "x": 585.48,
+ "y": 184.27200000000002
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 183.184
+ },
+ {
+ "x": 600.0,
+ "y": 182.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 180.816
+ },
+ {
+ "x": 614.5200000000001,
+ "y": 179.728
+ },
+ {
+ "x": 620.88,
+ "y": 178.832
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 178.224
+ },
+ {
+ "x": 630.0,
+ "y": 178.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 182.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 182.448
+ },
+ {
+ "x": 579.12,
+ "y": 183.66400000000002
+ },
+ {
+ "x": 585.48,
+ "y": 185.45600000000002
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 187.632
+ },
+ {
+ "x": 600.0,
+ "y": 190.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 192.368
+ },
+ {
+ "x": 614.5200000000001,
+ "y": 194.54399999999998
+ },
+ {
+ "x": 620.88,
+ "y": 196.33599999999998
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 197.552
+ },
+ {
+ "x": 630.0,
+ "y": 198.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 182.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 182.33599999999998
+ },
+ {
+ "x": 579.12,
+ "y": 183.24800000000002
+ },
+ {
+ "x": 585.48,
+ "y": 184.592
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 186.224
+ },
+ {
+ "x": 600.0,
+ "y": 188.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 189.776
+ },
+ {
+ "x": 614.5200000000001,
+ "y": 191.408
+ },
+ {
+ "x": 620.88,
+ "y": 192.75199999999998
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 193.664
+ },
+ {
+ "x": 630.0,
+ "y": 194.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 182.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 182.224
+ },
+ {
+ "x": 579.12,
+ "y": 182.832
+ },
+ {
+ "x": 585.48,
+ "y": 183.728
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 184.816
+ },
+ {
+ "x": 600.0,
+ "y": 186.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 187.184
+ },
+ {
+ "x": 614.5200000000001,
+ "y": 188.272
+ },
+ {
+ "x": 620.88,
+ "y": 189.168
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 189.776
+ },
+ {
+ "x": 630.0,
+ "y": 190.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 182.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 182.112
+ },
+ {
+ "x": 579.12,
+ "y": 182.416
+ },
+ {
+ "x": 585.48,
+ "y": 182.86400000000003
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 183.40800000000002
+ },
+ {
+ "x": 600.0,
+ "y": 184.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 184.59199999999998
+ },
+ {
+ "x": 614.5200000000001,
+ "y": 185.136
+ },
+ {
+ "x": 620.88,
+ "y": 185.584
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 185.888
+ },
+ {
+ "x": 630.0,
+ "y": 186.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 182.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 182.0
+ },
+ {
+ "x": 579.12,
+ "y": 182.0
+ },
+ {
+ "x": 585.48,
+ "y": 182.00000000000003
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 182.0
+ },
+ {
+ "x": 600.0,
+ "y": 182.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 182.0
+ },
+ {
+ "x": 614.5200000000001,
+ "y": 182.0
+ },
+ {
+ "x": 620.88,
+ "y": 182.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 182.0
+ },
+ {
+ "x": 630.0,
+ "y": 182.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 182.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 181.888
+ },
+ {
+ "x": 579.12,
+ "y": 181.584
+ },
+ {
+ "x": 585.48,
+ "y": 181.13600000000002
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 180.59199999999998
+ },
+ {
+ "x": 600.0,
+ "y": 180.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 179.40800000000002
+ },
+ {
+ "x": 614.5200000000001,
+ "y": 178.864
+ },
+ {
+ "x": 620.88,
+ "y": 178.416
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 178.112
+ },
+ {
+ "x": 630.0,
+ "y": 178.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_left",
+ "startRoad": "road_2_2_0",
+ "endRoad": "road_3_2_1",
+ "direction": 0,
+ "laneLinks": [
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 198.0
+ },
+ {
+ "x": 573.3259999999999,
+ "y": 198.62599999999998
+ },
+ {
+ "x": 577.1680000000001,
+ "y": 200.36800000000002
+ },
+ {
+ "x": 581.322,
+ "y": 203.02200000000002
+ },
+ {
+ "x": 585.5840000000001,
+ "y": 206.38400000000001
+ },
+ {
+ "x": 589.75,
+ "y": 210.25
+ },
+ {
+ "x": 593.616,
+ "y": 214.416
+ },
+ {
+ "x": 596.9780000000001,
+ "y": 218.67800000000003
+ },
+ {
+ "x": 599.632,
+ "y": 222.83200000000002
+ },
+ {
+ "x": 601.374,
+ "y": 226.674
+ },
+ {
+ "x": 602.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 198.0
+ },
+ {
+ "x": 573.4379999999999,
+ "y": 198.62599999999998
+ },
+ {
+ "x": 577.5840000000001,
+ "y": 200.36800000000002
+ },
+ {
+ "x": 582.186,
+ "y": 203.02200000000002
+ },
+ {
+ "x": 586.992,
+ "y": 206.38400000000001
+ },
+ {
+ "x": 591.75,
+ "y": 210.25
+ },
+ {
+ "x": 596.2080000000001,
+ "y": 214.416
+ },
+ {
+ "x": 600.114,
+ "y": 218.67800000000003
+ },
+ {
+ "x": 603.216,
+ "y": 222.83200000000002
+ },
+ {
+ "x": 605.2620000000001,
+ "y": 226.674
+ },
+ {
+ "x": 606.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 198.0
+ },
+ {
+ "x": 573.55,
+ "y": 198.62599999999998
+ },
+ {
+ "x": 578.0000000000001,
+ "y": 200.36800000000002
+ },
+ {
+ "x": 583.0500000000001,
+ "y": 203.02200000000002
+ },
+ {
+ "x": 588.4,
+ "y": 206.38400000000001
+ },
+ {
+ "x": 593.75,
+ "y": 210.25
+ },
+ {
+ "x": 598.8,
+ "y": 214.416
+ },
+ {
+ "x": 603.25,
+ "y": 218.67800000000003
+ },
+ {
+ "x": 606.8,
+ "y": 222.83200000000002
+ },
+ {
+ "x": 609.15,
+ "y": 226.674
+ },
+ {
+ "x": 610.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 198.0
+ },
+ {
+ "x": 573.6619999999999,
+ "y": 198.62599999999998
+ },
+ {
+ "x": 578.416,
+ "y": 200.36800000000002
+ },
+ {
+ "x": 583.914,
+ "y": 203.02200000000002
+ },
+ {
+ "x": 589.808,
+ "y": 206.38400000000001
+ },
+ {
+ "x": 595.75,
+ "y": 210.25
+ },
+ {
+ "x": 601.392,
+ "y": 214.416
+ },
+ {
+ "x": 606.386,
+ "y": 218.67800000000003
+ },
+ {
+ "x": 610.384,
+ "y": 222.83200000000002
+ },
+ {
+ "x": 613.038,
+ "y": 226.674
+ },
+ {
+ "x": 614.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 194.0
+ },
+ {
+ "x": 573.3259999999999,
+ "y": 194.73799999999997
+ },
+ {
+ "x": 577.1680000000001,
+ "y": 196.78400000000002
+ },
+ {
+ "x": 581.322,
+ "y": 199.88600000000002
+ },
+ {
+ "x": 585.5840000000001,
+ "y": 203.79200000000003
+ },
+ {
+ "x": 589.75,
+ "y": 208.25
+ },
+ {
+ "x": 593.616,
+ "y": 213.00799999999998
+ },
+ {
+ "x": 596.9780000000001,
+ "y": 217.81400000000002
+ },
+ {
+ "x": 599.632,
+ "y": 222.41600000000003
+ },
+ {
+ "x": 601.374,
+ "y": 226.562
+ },
+ {
+ "x": 602.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 194.0
+ },
+ {
+ "x": 573.4379999999999,
+ "y": 194.73799999999997
+ },
+ {
+ "x": 577.5840000000001,
+ "y": 196.78400000000002
+ },
+ {
+ "x": 582.186,
+ "y": 199.88600000000002
+ },
+ {
+ "x": 586.992,
+ "y": 203.79200000000003
+ },
+ {
+ "x": 591.75,
+ "y": 208.25
+ },
+ {
+ "x": 596.2080000000001,
+ "y": 213.00799999999998
+ },
+ {
+ "x": 600.114,
+ "y": 217.81400000000002
+ },
+ {
+ "x": 603.216,
+ "y": 222.41600000000003
+ },
+ {
+ "x": 605.2620000000001,
+ "y": 226.562
+ },
+ {
+ "x": 606.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 194.0
+ },
+ {
+ "x": 573.55,
+ "y": 194.73799999999997
+ },
+ {
+ "x": 578.0000000000001,
+ "y": 196.78400000000002
+ },
+ {
+ "x": 583.0500000000001,
+ "y": 199.88600000000002
+ },
+ {
+ "x": 588.4,
+ "y": 203.79200000000003
+ },
+ {
+ "x": 593.75,
+ "y": 208.25
+ },
+ {
+ "x": 598.8,
+ "y": 213.00799999999998
+ },
+ {
+ "x": 603.25,
+ "y": 217.81400000000002
+ },
+ {
+ "x": 606.8,
+ "y": 222.41600000000003
+ },
+ {
+ "x": 609.15,
+ "y": 226.562
+ },
+ {
+ "x": 610.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 194.0
+ },
+ {
+ "x": 573.6619999999999,
+ "y": 194.73799999999997
+ },
+ {
+ "x": 578.416,
+ "y": 196.78400000000002
+ },
+ {
+ "x": 583.914,
+ "y": 199.88600000000002
+ },
+ {
+ "x": 589.808,
+ "y": 203.79200000000003
+ },
+ {
+ "x": 595.75,
+ "y": 208.25
+ },
+ {
+ "x": 601.392,
+ "y": 213.00799999999998
+ },
+ {
+ "x": 606.386,
+ "y": 217.81400000000002
+ },
+ {
+ "x": 610.384,
+ "y": 222.41600000000003
+ },
+ {
+ "x": 613.038,
+ "y": 226.562
+ },
+ {
+ "x": 614.0,
+ "y": 230.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_right",
+ "startRoad": "road_2_2_0",
+ "endRoad": "road_3_2_3",
+ "direction": 0,
+ "laneLinks": [
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 182.0
+ },
+ {
+ "x": 573.2139999999999,
+ "y": 181.934
+ },
+ {
+ "x": 576.7520000000001,
+ "y": 181.71200000000002
+ },
+ {
+ "x": 580.4580000000001,
+ "y": 181.298
+ },
+ {
+ "x": 584.176,
+ "y": 180.656
+ },
+ {
+ "x": 587.75,
+ "y": 179.75
+ },
+ {
+ "x": 591.024,
+ "y": 178.54399999999998
+ },
+ {
+ "x": 593.842,
+ "y": 177.00199999999998
+ },
+ {
+ "x": 596.048,
+ "y": 175.088
+ },
+ {
+ "x": 597.486,
+ "y": 172.76600000000002
+ },
+ {
+ "x": 598.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 182.0
+ },
+ {
+ "x": 573.1019999999999,
+ "y": 181.934
+ },
+ {
+ "x": 576.336,
+ "y": 181.71200000000002
+ },
+ {
+ "x": 579.594,
+ "y": 181.298
+ },
+ {
+ "x": 582.768,
+ "y": 180.656
+ },
+ {
+ "x": 585.75,
+ "y": 179.75
+ },
+ {
+ "x": 588.432,
+ "y": 178.54399999999998
+ },
+ {
+ "x": 590.706,
+ "y": 177.00199999999998
+ },
+ {
+ "x": 592.4639999999999,
+ "y": 175.088
+ },
+ {
+ "x": 593.598,
+ "y": 172.76600000000002
+ },
+ {
+ "x": 594.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 182.0
+ },
+ {
+ "x": 572.9899999999999,
+ "y": 181.934
+ },
+ {
+ "x": 575.9200000000001,
+ "y": 181.71200000000002
+ },
+ {
+ "x": 578.73,
+ "y": 181.298
+ },
+ {
+ "x": 581.36,
+ "y": 180.656
+ },
+ {
+ "x": 583.75,
+ "y": 179.75
+ },
+ {
+ "x": 585.8399999999999,
+ "y": 178.54399999999998
+ },
+ {
+ "x": 587.5699999999999,
+ "y": 177.00199999999998
+ },
+ {
+ "x": 588.88,
+ "y": 175.088
+ },
+ {
+ "x": 589.71,
+ "y": 172.76600000000002
+ },
+ {
+ "x": 590.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 182.0
+ },
+ {
+ "x": 572.8779999999999,
+ "y": 181.934
+ },
+ {
+ "x": 575.5040000000001,
+ "y": 181.71200000000002
+ },
+ {
+ "x": 577.866,
+ "y": 181.298
+ },
+ {
+ "x": 579.952,
+ "y": 180.656
+ },
+ {
+ "x": 581.75,
+ "y": 179.75
+ },
+ {
+ "x": 583.248,
+ "y": 178.54399999999998
+ },
+ {
+ "x": 584.434,
+ "y": 177.00199999999998
+ },
+ {
+ "x": 585.2959999999999,
+ "y": 175.088
+ },
+ {
+ "x": 585.822,
+ "y": 172.76600000000002
+ },
+ {
+ "x": 586.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 178.0
+ },
+ {
+ "x": 573.2139999999999,
+ "y": 178.046
+ },
+ {
+ "x": 576.7520000000001,
+ "y": 178.12800000000001
+ },
+ {
+ "x": 580.4580000000001,
+ "y": 178.16199999999998
+ },
+ {
+ "x": 584.176,
+ "y": 178.064
+ },
+ {
+ "x": 587.75,
+ "y": 177.75
+ },
+ {
+ "x": 591.024,
+ "y": 177.136
+ },
+ {
+ "x": 593.842,
+ "y": 176.13799999999998
+ },
+ {
+ "x": 596.048,
+ "y": 174.672
+ },
+ {
+ "x": 597.486,
+ "y": 172.65400000000002
+ },
+ {
+ "x": 598.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 178.0
+ },
+ {
+ "x": 573.1019999999999,
+ "y": 178.046
+ },
+ {
+ "x": 576.336,
+ "y": 178.12800000000001
+ },
+ {
+ "x": 579.594,
+ "y": 178.16199999999998
+ },
+ {
+ "x": 582.768,
+ "y": 178.064
+ },
+ {
+ "x": 585.75,
+ "y": 177.75
+ },
+ {
+ "x": 588.432,
+ "y": 177.136
+ },
+ {
+ "x": 590.706,
+ "y": 176.13799999999998
+ },
+ {
+ "x": 592.4639999999999,
+ "y": 174.672
+ },
+ {
+ "x": 593.598,
+ "y": 172.65400000000002
+ },
+ {
+ "x": 594.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 178.0
+ },
+ {
+ "x": 572.9899999999999,
+ "y": 178.046
+ },
+ {
+ "x": 575.9200000000001,
+ "y": 178.12800000000001
+ },
+ {
+ "x": 578.73,
+ "y": 178.16199999999998
+ },
+ {
+ "x": 581.36,
+ "y": 178.064
+ },
+ {
+ "x": 583.75,
+ "y": 177.75
+ },
+ {
+ "x": 585.8399999999999,
+ "y": 177.136
+ },
+ {
+ "x": 587.5699999999999,
+ "y": 176.13799999999998
+ },
+ {
+ "x": 588.88,
+ "y": 174.672
+ },
+ {
+ "x": 589.71,
+ "y": 172.65400000000002
+ },
+ {
+ "x": 590.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 570.0,
+ "y": 178.0
+ },
+ {
+ "x": 572.8779999999999,
+ "y": 178.046
+ },
+ {
+ "x": 575.5040000000001,
+ "y": 178.12800000000001
+ },
+ {
+ "x": 577.866,
+ "y": 178.16199999999998
+ },
+ {
+ "x": 579.952,
+ "y": 178.064
+ },
+ {
+ "x": 581.75,
+ "y": 177.75
+ },
+ {
+ "x": 583.248,
+ "y": 177.136
+ },
+ {
+ "x": 584.434,
+ "y": 176.13799999999998
+ },
+ {
+ "x": 585.2959999999999,
+ "y": 174.672
+ },
+ {
+ "x": 585.822,
+ "y": 172.65400000000002
+ },
+ {
+ "x": 586.0,
+ "y": 170.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_right",
+ "startRoad": "road_3_1_1",
+ "endRoad": "road_3_2_0",
+ "direction": 1,
+ "laneLinks": [
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 614.0,
+ "y": 170.0
+ },
+ {
+ "x": 614.178,
+ "y": 173.21400000000003
+ },
+ {
+ "x": 614.704,
+ "y": 176.752
+ },
+ {
+ "x": 615.566,
+ "y": 180.458
+ },
+ {
+ "x": 616.7520000000001,
+ "y": 184.176
+ },
+ {
+ "x": 618.25,
+ "y": 187.75
+ },
+ {
+ "x": 620.0479999999999,
+ "y": 191.024
+ },
+ {
+ "x": 622.134,
+ "y": 193.84199999999998
+ },
+ {
+ "x": 624.496,
+ "y": 196.048
+ },
+ {
+ "x": 627.1220000000001,
+ "y": 197.486
+ },
+ {
+ "x": 630.0,
+ "y": 198.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 614.0,
+ "y": 170.0
+ },
+ {
+ "x": 614.178,
+ "y": 173.102
+ },
+ {
+ "x": 614.704,
+ "y": 176.336
+ },
+ {
+ "x": 615.566,
+ "y": 179.594
+ },
+ {
+ "x": 616.7520000000001,
+ "y": 182.76799999999997
+ },
+ {
+ "x": 618.25,
+ "y": 185.75
+ },
+ {
+ "x": 620.0479999999999,
+ "y": 188.43200000000002
+ },
+ {
+ "x": 622.134,
+ "y": 190.706
+ },
+ {
+ "x": 624.496,
+ "y": 192.464
+ },
+ {
+ "x": 627.1220000000001,
+ "y": 193.59799999999998
+ },
+ {
+ "x": 630.0,
+ "y": 194.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 614.0,
+ "y": 170.0
+ },
+ {
+ "x": 614.178,
+ "y": 172.99
+ },
+ {
+ "x": 614.704,
+ "y": 175.92000000000002
+ },
+ {
+ "x": 615.566,
+ "y": 178.73000000000002
+ },
+ {
+ "x": 616.7520000000001,
+ "y": 181.36
+ },
+ {
+ "x": 618.25,
+ "y": 183.75
+ },
+ {
+ "x": 620.0479999999999,
+ "y": 185.83999999999997
+ },
+ {
+ "x": 622.134,
+ "y": 187.57
+ },
+ {
+ "x": 624.496,
+ "y": 188.88000000000002
+ },
+ {
+ "x": 627.1220000000001,
+ "y": 189.71
+ },
+ {
+ "x": 630.0,
+ "y": 190.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 614.0,
+ "y": 170.0
+ },
+ {
+ "x": 614.178,
+ "y": 172.87800000000001
+ },
+ {
+ "x": 614.704,
+ "y": 175.504
+ },
+ {
+ "x": 615.566,
+ "y": 177.86599999999999
+ },
+ {
+ "x": 616.7520000000001,
+ "y": 179.952
+ },
+ {
+ "x": 618.25,
+ "y": 181.75
+ },
+ {
+ "x": 620.0479999999999,
+ "y": 183.248
+ },
+ {
+ "x": 622.134,
+ "y": 184.434
+ },
+ {
+ "x": 624.496,
+ "y": 185.29600000000002
+ },
+ {
+ "x": 627.1220000000001,
+ "y": 185.822
+ },
+ {
+ "x": 630.0,
+ "y": 186.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 614.0,
+ "y": 170.0
+ },
+ {
+ "x": 614.178,
+ "y": 172.76600000000002
+ },
+ {
+ "x": 614.704,
+ "y": 175.088
+ },
+ {
+ "x": 615.566,
+ "y": 177.002
+ },
+ {
+ "x": 616.7520000000001,
+ "y": 178.54399999999998
+ },
+ {
+ "x": 618.25,
+ "y": 179.75
+ },
+ {
+ "x": 620.0479999999999,
+ "y": 180.656
+ },
+ {
+ "x": 622.134,
+ "y": 181.298
+ },
+ {
+ "x": 624.496,
+ "y": 181.71200000000002
+ },
+ {
+ "x": 627.1220000000001,
+ "y": 181.934
+ },
+ {
+ "x": 630.0,
+ "y": 182.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 614.0,
+ "y": 170.0
+ },
+ {
+ "x": 614.178,
+ "y": 172.65400000000002
+ },
+ {
+ "x": 614.704,
+ "y": 174.672
+ },
+ {
+ "x": 615.566,
+ "y": 176.138
+ },
+ {
+ "x": 616.7520000000001,
+ "y": 177.136
+ },
+ {
+ "x": 618.25,
+ "y": 177.75
+ },
+ {
+ "x": 620.0479999999999,
+ "y": 178.064
+ },
+ {
+ "x": 622.134,
+ "y": 178.162
+ },
+ {
+ "x": 624.496,
+ "y": 178.12800000000001
+ },
+ {
+ "x": 627.1220000000001,
+ "y": 178.046
+ },
+ {
+ "x": 630.0,
+ "y": 178.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "go_straight",
+ "startRoad": "road_3_1_1",
+ "endRoad": "road_3_2_1",
+ "direction": 1,
+ "laneLinks": [
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 606.0,
+ "y": 170.0
+ },
+ {
+ "x": 605.888,
+ "y": 173.84
+ },
+ {
+ "x": 605.5840000000001,
+ "y": 179.12
+ },
+ {
+ "x": 605.1360000000001,
+ "y": 185.48000000000002
+ },
+ {
+ "x": 604.592,
+ "y": 192.56
+ },
+ {
+ "x": 604.0,
+ "y": 200.0
+ },
+ {
+ "x": 603.408,
+ "y": 207.44
+ },
+ {
+ "x": 602.864,
+ "y": 214.52
+ },
+ {
+ "x": 602.4159999999999,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 602.112,
+ "y": 226.16
+ },
+ {
+ "x": 602.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 606.0,
+ "y": 170.0
+ },
+ {
+ "x": 606.0,
+ "y": 173.84
+ },
+ {
+ "x": 606.0,
+ "y": 179.12
+ },
+ {
+ "x": 606.0,
+ "y": 185.48000000000002
+ },
+ {
+ "x": 606.0,
+ "y": 192.56
+ },
+ {
+ "x": 606.0,
+ "y": 200.0
+ },
+ {
+ "x": 606.0,
+ "y": 207.44
+ },
+ {
+ "x": 606.0,
+ "y": 214.52
+ },
+ {
+ "x": 606.0,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 606.0,
+ "y": 226.16
+ },
+ {
+ "x": 606.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 606.0,
+ "y": 170.0
+ },
+ {
+ "x": 606.1120000000001,
+ "y": 173.84
+ },
+ {
+ "x": 606.416,
+ "y": 179.12
+ },
+ {
+ "x": 606.864,
+ "y": 185.48000000000002
+ },
+ {
+ "x": 607.408,
+ "y": 192.56
+ },
+ {
+ "x": 608.0,
+ "y": 200.0
+ },
+ {
+ "x": 608.592,
+ "y": 207.44
+ },
+ {
+ "x": 609.136,
+ "y": 214.52
+ },
+ {
+ "x": 609.584,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 609.8879999999999,
+ "y": 226.16
+ },
+ {
+ "x": 610.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 606.0,
+ "y": 170.0
+ },
+ {
+ "x": 606.224,
+ "y": 173.84
+ },
+ {
+ "x": 606.832,
+ "y": 179.12
+ },
+ {
+ "x": 607.7280000000001,
+ "y": 185.48000000000002
+ },
+ {
+ "x": 608.816,
+ "y": 192.56
+ },
+ {
+ "x": 610.0,
+ "y": 200.0
+ },
+ {
+ "x": 611.184,
+ "y": 207.44
+ },
+ {
+ "x": 612.272,
+ "y": 214.52
+ },
+ {
+ "x": 613.168,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 613.776,
+ "y": 226.16
+ },
+ {
+ "x": 614.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 610.0,
+ "y": 170.0
+ },
+ {
+ "x": 609.776,
+ "y": 173.84
+ },
+ {
+ "x": 609.1680000000001,
+ "y": 179.12
+ },
+ {
+ "x": 608.272,
+ "y": 185.48000000000002
+ },
+ {
+ "x": 607.184,
+ "y": 192.56
+ },
+ {
+ "x": 606.0,
+ "y": 200.0
+ },
+ {
+ "x": 604.816,
+ "y": 207.44
+ },
+ {
+ "x": 603.7280000000001,
+ "y": 214.52
+ },
+ {
+ "x": 602.832,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 602.224,
+ "y": 226.16
+ },
+ {
+ "x": 602.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 610.0,
+ "y": 170.0
+ },
+ {
+ "x": 609.8879999999999,
+ "y": 173.84
+ },
+ {
+ "x": 609.5840000000001,
+ "y": 179.12
+ },
+ {
+ "x": 609.136,
+ "y": 185.48000000000002
+ },
+ {
+ "x": 608.5920000000001,
+ "y": 192.56
+ },
+ {
+ "x": 608.0,
+ "y": 200.0
+ },
+ {
+ "x": 607.408,
+ "y": 207.44
+ },
+ {
+ "x": 606.864,
+ "y": 214.52
+ },
+ {
+ "x": 606.416,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 606.1120000000001,
+ "y": 226.16
+ },
+ {
+ "x": 606.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 610.0,
+ "y": 170.0
+ },
+ {
+ "x": 610.0,
+ "y": 173.84
+ },
+ {
+ "x": 610.0000000000001,
+ "y": 179.12
+ },
+ {
+ "x": 610.0,
+ "y": 185.48000000000002
+ },
+ {
+ "x": 610.0,
+ "y": 192.56
+ },
+ {
+ "x": 610.0,
+ "y": 200.0
+ },
+ {
+ "x": 610.0,
+ "y": 207.44
+ },
+ {
+ "x": 610.0,
+ "y": 214.52
+ },
+ {
+ "x": 610.0,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 610.0,
+ "y": 226.16
+ },
+ {
+ "x": 610.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 610.0,
+ "y": 170.0
+ },
+ {
+ "x": 610.112,
+ "y": 173.84
+ },
+ {
+ "x": 610.416,
+ "y": 179.12
+ },
+ {
+ "x": 610.864,
+ "y": 185.48000000000002
+ },
+ {
+ "x": 611.408,
+ "y": 192.56
+ },
+ {
+ "x": 612.0,
+ "y": 200.0
+ },
+ {
+ "x": 612.592,
+ "y": 207.44
+ },
+ {
+ "x": 613.136,
+ "y": 214.52
+ },
+ {
+ "x": 613.5840000000001,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 613.888,
+ "y": 226.16
+ },
+ {
+ "x": 614.0,
+ "y": 230.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_left",
+ "startRoad": "road_3_1_1",
+ "endRoad": "road_3_2_2",
+ "direction": 1,
+ "laneLinks": [
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 602.0,
+ "y": 170.0
+ },
+ {
+ "x": 601.374,
+ "y": 173.32600000000002
+ },
+ {
+ "x": 599.6320000000001,
+ "y": 177.168
+ },
+ {
+ "x": 596.9780000000001,
+ "y": 181.322
+ },
+ {
+ "x": 593.616,
+ "y": 185.584
+ },
+ {
+ "x": 589.75,
+ "y": 189.75
+ },
+ {
+ "x": 585.5840000000001,
+ "y": 193.61599999999999
+ },
+ {
+ "x": 581.322,
+ "y": 196.978
+ },
+ {
+ "x": 577.168,
+ "y": 199.632
+ },
+ {
+ "x": 573.3259999999999,
+ "y": 201.374
+ },
+ {
+ "x": 570.0,
+ "y": 202.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 602.0,
+ "y": 170.0
+ },
+ {
+ "x": 601.374,
+ "y": 173.43800000000002
+ },
+ {
+ "x": 599.6320000000001,
+ "y": 177.584
+ },
+ {
+ "x": 596.9780000000001,
+ "y": 182.186
+ },
+ {
+ "x": 593.616,
+ "y": 186.992
+ },
+ {
+ "x": 589.75,
+ "y": 191.75
+ },
+ {
+ "x": 585.5840000000001,
+ "y": 196.208
+ },
+ {
+ "x": 581.322,
+ "y": 200.114
+ },
+ {
+ "x": 577.168,
+ "y": 203.216
+ },
+ {
+ "x": 573.3259999999999,
+ "y": 205.262
+ },
+ {
+ "x": 570.0,
+ "y": 206.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 602.0,
+ "y": 170.0
+ },
+ {
+ "x": 601.374,
+ "y": 173.55
+ },
+ {
+ "x": 599.6320000000001,
+ "y": 178.0
+ },
+ {
+ "x": 596.9780000000001,
+ "y": 183.05
+ },
+ {
+ "x": 593.616,
+ "y": 188.39999999999998
+ },
+ {
+ "x": 589.75,
+ "y": 193.75
+ },
+ {
+ "x": 585.5840000000001,
+ "y": 198.8
+ },
+ {
+ "x": 581.322,
+ "y": 203.25
+ },
+ {
+ "x": 577.168,
+ "y": 206.8
+ },
+ {
+ "x": 573.3259999999999,
+ "y": 209.15
+ },
+ {
+ "x": 570.0,
+ "y": 210.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 602.0,
+ "y": 170.0
+ },
+ {
+ "x": 601.374,
+ "y": 173.662
+ },
+ {
+ "x": 599.6320000000001,
+ "y": 178.416
+ },
+ {
+ "x": 596.9780000000001,
+ "y": 183.914
+ },
+ {
+ "x": 593.616,
+ "y": 189.808
+ },
+ {
+ "x": 589.75,
+ "y": 195.75
+ },
+ {
+ "x": 585.5840000000001,
+ "y": 201.392
+ },
+ {
+ "x": 581.322,
+ "y": 206.386
+ },
+ {
+ "x": 577.168,
+ "y": 210.38400000000001
+ },
+ {
+ "x": 573.3259999999999,
+ "y": 213.03799999999998
+ },
+ {
+ "x": 570.0,
+ "y": 214.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 602.0,
+ "y": 170.0
+ },
+ {
+ "x": 601.374,
+ "y": 173.77400000000003
+ },
+ {
+ "x": 599.6320000000001,
+ "y": 178.832
+ },
+ {
+ "x": 596.9780000000001,
+ "y": 184.77800000000002
+ },
+ {
+ "x": 593.616,
+ "y": 191.216
+ },
+ {
+ "x": 589.75,
+ "y": 197.75
+ },
+ {
+ "x": 585.5840000000001,
+ "y": 203.984
+ },
+ {
+ "x": 581.322,
+ "y": 209.522
+ },
+ {
+ "x": 577.168,
+ "y": 213.96800000000002
+ },
+ {
+ "x": 573.3259999999999,
+ "y": 216.926
+ },
+ {
+ "x": 570.0,
+ "y": 218.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 602.0,
+ "y": 170.0
+ },
+ {
+ "x": 601.374,
+ "y": 173.88600000000002
+ },
+ {
+ "x": 599.6320000000001,
+ "y": 179.248
+ },
+ {
+ "x": 596.9780000000001,
+ "y": 185.642
+ },
+ {
+ "x": 593.616,
+ "y": 192.624
+ },
+ {
+ "x": 589.75,
+ "y": 199.75
+ },
+ {
+ "x": 585.5840000000001,
+ "y": 206.576
+ },
+ {
+ "x": 581.322,
+ "y": 212.658
+ },
+ {
+ "x": 577.168,
+ "y": 217.55200000000002
+ },
+ {
+ "x": 573.3259999999999,
+ "y": 220.814
+ },
+ {
+ "x": 570.0,
+ "y": 222.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_right",
+ "startRoad": "road_4_2_2",
+ "endRoad": "road_3_2_1",
+ "direction": 2,
+ "laneLinks": [
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 218.0
+ },
+ {
+ "x": 626.7860000000001,
+ "y": 218.06599999999997
+ },
+ {
+ "x": 623.248,
+ "y": 218.288
+ },
+ {
+ "x": 619.542,
+ "y": 218.70200000000003
+ },
+ {
+ "x": 615.8240000000001,
+ "y": 219.344
+ },
+ {
+ "x": 612.25,
+ "y": 220.25
+ },
+ {
+ "x": 608.976,
+ "y": 221.45600000000002
+ },
+ {
+ "x": 606.158,
+ "y": 222.99800000000002
+ },
+ {
+ "x": 603.952,
+ "y": 224.912
+ },
+ {
+ "x": 602.514,
+ "y": 227.234
+ },
+ {
+ "x": 602.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 218.0
+ },
+ {
+ "x": 626.898,
+ "y": 218.06599999999997
+ },
+ {
+ "x": 623.664,
+ "y": 218.288
+ },
+ {
+ "x": 620.406,
+ "y": 218.70200000000003
+ },
+ {
+ "x": 617.232,
+ "y": 219.344
+ },
+ {
+ "x": 614.25,
+ "y": 220.25
+ },
+ {
+ "x": 611.568,
+ "y": 221.45600000000002
+ },
+ {
+ "x": 609.294,
+ "y": 222.99800000000002
+ },
+ {
+ "x": 607.5360000000001,
+ "y": 224.912
+ },
+ {
+ "x": 606.402,
+ "y": 227.234
+ },
+ {
+ "x": 606.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 218.0
+ },
+ {
+ "x": 627.0100000000001,
+ "y": 218.06599999999997
+ },
+ {
+ "x": 624.08,
+ "y": 218.288
+ },
+ {
+ "x": 621.27,
+ "y": 218.70200000000003
+ },
+ {
+ "x": 618.64,
+ "y": 219.344
+ },
+ {
+ "x": 616.25,
+ "y": 220.25
+ },
+ {
+ "x": 614.16,
+ "y": 221.45600000000002
+ },
+ {
+ "x": 612.4300000000001,
+ "y": 222.99800000000002
+ },
+ {
+ "x": 611.12,
+ "y": 224.912
+ },
+ {
+ "x": 610.29,
+ "y": 227.234
+ },
+ {
+ "x": 610.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 218.0
+ },
+ {
+ "x": 627.1220000000001,
+ "y": 218.06599999999997
+ },
+ {
+ "x": 624.496,
+ "y": 218.288
+ },
+ {
+ "x": 622.134,
+ "y": 218.70200000000003
+ },
+ {
+ "x": 620.048,
+ "y": 219.344
+ },
+ {
+ "x": 618.25,
+ "y": 220.25
+ },
+ {
+ "x": 616.752,
+ "y": 221.45600000000002
+ },
+ {
+ "x": 615.566,
+ "y": 222.99800000000002
+ },
+ {
+ "x": 614.7040000000001,
+ "y": 224.912
+ },
+ {
+ "x": 614.178,
+ "y": 227.234
+ },
+ {
+ "x": 614.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 222.0
+ },
+ {
+ "x": 626.7860000000001,
+ "y": 221.95399999999998
+ },
+ {
+ "x": 623.248,
+ "y": 221.872
+ },
+ {
+ "x": 619.542,
+ "y": 221.83800000000002
+ },
+ {
+ "x": 615.8240000000001,
+ "y": 221.93599999999998
+ },
+ {
+ "x": 612.25,
+ "y": 222.25
+ },
+ {
+ "x": 608.976,
+ "y": 222.864
+ },
+ {
+ "x": 606.158,
+ "y": 223.86200000000002
+ },
+ {
+ "x": 603.952,
+ "y": 225.328
+ },
+ {
+ "x": 602.514,
+ "y": 227.346
+ },
+ {
+ "x": 602.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 222.0
+ },
+ {
+ "x": 626.898,
+ "y": 221.95399999999998
+ },
+ {
+ "x": 623.664,
+ "y": 221.872
+ },
+ {
+ "x": 620.406,
+ "y": 221.83800000000002
+ },
+ {
+ "x": 617.232,
+ "y": 221.93599999999998
+ },
+ {
+ "x": 614.25,
+ "y": 222.25
+ },
+ {
+ "x": 611.568,
+ "y": 222.864
+ },
+ {
+ "x": 609.294,
+ "y": 223.86200000000002
+ },
+ {
+ "x": 607.5360000000001,
+ "y": 225.328
+ },
+ {
+ "x": 606.402,
+ "y": 227.346
+ },
+ {
+ "x": 606.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 222.0
+ },
+ {
+ "x": 627.0100000000001,
+ "y": 221.95399999999998
+ },
+ {
+ "x": 624.08,
+ "y": 221.872
+ },
+ {
+ "x": 621.27,
+ "y": 221.83800000000002
+ },
+ {
+ "x": 618.64,
+ "y": 221.93599999999998
+ },
+ {
+ "x": 616.25,
+ "y": 222.25
+ },
+ {
+ "x": 614.16,
+ "y": 222.864
+ },
+ {
+ "x": 612.4300000000001,
+ "y": 223.86200000000002
+ },
+ {
+ "x": 611.12,
+ "y": 225.328
+ },
+ {
+ "x": 610.29,
+ "y": 227.346
+ },
+ {
+ "x": 610.0,
+ "y": 230.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 5,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 222.0
+ },
+ {
+ "x": 627.1220000000001,
+ "y": 221.95399999999998
+ },
+ {
+ "x": 624.496,
+ "y": 221.872
+ },
+ {
+ "x": 622.134,
+ "y": 221.83800000000002
+ },
+ {
+ "x": 620.048,
+ "y": 221.93599999999998
+ },
+ {
+ "x": 618.25,
+ "y": 222.25
+ },
+ {
+ "x": 616.752,
+ "y": 222.864
+ },
+ {
+ "x": 615.566,
+ "y": 223.86200000000002
+ },
+ {
+ "x": 614.7040000000001,
+ "y": 225.328
+ },
+ {
+ "x": 614.178,
+ "y": 227.346
+ },
+ {
+ "x": 614.0,
+ "y": 230.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "go_straight",
+ "startRoad": "road_4_2_2",
+ "endRoad": "road_3_2_2",
+ "direction": 2,
+ "laneLinks": [
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 210.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 209.776
+ },
+ {
+ "x": 620.88,
+ "y": 209.168
+ },
+ {
+ "x": 614.52,
+ "y": 208.27200000000002
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 207.184
+ },
+ {
+ "x": 600.0,
+ "y": 206.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 204.81599999999997
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 203.728
+ },
+ {
+ "x": 579.12,
+ "y": 202.832
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 202.224
+ },
+ {
+ "x": 570.0,
+ "y": 202.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 210.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 209.888
+ },
+ {
+ "x": 620.88,
+ "y": 209.584
+ },
+ {
+ "x": 614.52,
+ "y": 209.13600000000002
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 208.59199999999998
+ },
+ {
+ "x": 600.0,
+ "y": 208.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 207.40800000000002
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 206.864
+ },
+ {
+ "x": 579.12,
+ "y": 206.416
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 206.112
+ },
+ {
+ "x": 570.0,
+ "y": 206.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 210.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 210.0
+ },
+ {
+ "x": 620.88,
+ "y": 210.0
+ },
+ {
+ "x": 614.52,
+ "y": 210.00000000000003
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 210.0
+ },
+ {
+ "x": 600.0,
+ "y": 210.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 210.0
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 210.0
+ },
+ {
+ "x": 579.12,
+ "y": 210.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 210.0
+ },
+ {
+ "x": 570.0,
+ "y": 210.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 210.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 210.112
+ },
+ {
+ "x": 620.88,
+ "y": 210.416
+ },
+ {
+ "x": 614.52,
+ "y": 210.86400000000003
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 211.40800000000002
+ },
+ {
+ "x": 600.0,
+ "y": 212.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 212.59199999999998
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 213.136
+ },
+ {
+ "x": 579.12,
+ "y": 213.584
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 213.88799999999998
+ },
+ {
+ "x": 570.0,
+ "y": 214.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 210.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 210.22400000000002
+ },
+ {
+ "x": 620.88,
+ "y": 210.832
+ },
+ {
+ "x": 614.52,
+ "y": 211.728
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 212.816
+ },
+ {
+ "x": 600.0,
+ "y": 214.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 215.18400000000003
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 216.272
+ },
+ {
+ "x": 579.12,
+ "y": 217.168
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 217.77599999999998
+ },
+ {
+ "x": 570.0,
+ "y": 218.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 210.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 210.336
+ },
+ {
+ "x": 620.88,
+ "y": 211.248
+ },
+ {
+ "x": 614.52,
+ "y": 212.592
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 214.224
+ },
+ {
+ "x": 600.0,
+ "y": 216.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 217.776
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 219.408
+ },
+ {
+ "x": 579.12,
+ "y": 220.752
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 221.664
+ },
+ {
+ "x": 570.0,
+ "y": 222.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 214.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 213.664
+ },
+ {
+ "x": 620.88,
+ "y": 212.752
+ },
+ {
+ "x": 614.52,
+ "y": 211.40800000000002
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 209.77599999999998
+ },
+ {
+ "x": 600.0,
+ "y": 208.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 206.224
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 204.592
+ },
+ {
+ "x": 579.12,
+ "y": 203.248
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 202.336
+ },
+ {
+ "x": 570.0,
+ "y": 202.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 214.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 213.77599999999998
+ },
+ {
+ "x": 620.88,
+ "y": 213.168
+ },
+ {
+ "x": 614.52,
+ "y": 212.27200000000002
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 211.18399999999997
+ },
+ {
+ "x": 600.0,
+ "y": 210.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 208.816
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 207.728
+ },
+ {
+ "x": 579.12,
+ "y": 206.832
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 206.22400000000002
+ },
+ {
+ "x": 570.0,
+ "y": 206.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 214.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 213.88799999999998
+ },
+ {
+ "x": 620.88,
+ "y": 213.584
+ },
+ {
+ "x": 614.52,
+ "y": 213.13600000000002
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 212.59199999999998
+ },
+ {
+ "x": 600.0,
+ "y": 212.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 211.40800000000002
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 210.864
+ },
+ {
+ "x": 579.12,
+ "y": 210.416
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 210.11200000000002
+ },
+ {
+ "x": 570.0,
+ "y": 210.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 214.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 213.99999999999997
+ },
+ {
+ "x": 620.88,
+ "y": 214.0
+ },
+ {
+ "x": 614.52,
+ "y": 214.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 214.0
+ },
+ {
+ "x": 600.0,
+ "y": 214.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 214.0
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 214.0
+ },
+ {
+ "x": 579.12,
+ "y": 214.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 214.0
+ },
+ {
+ "x": 570.0,
+ "y": 214.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 214.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 214.112
+ },
+ {
+ "x": 620.88,
+ "y": 214.416
+ },
+ {
+ "x": 614.52,
+ "y": 214.86400000000003
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 215.408
+ },
+ {
+ "x": 600.0,
+ "y": 216.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 216.592
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 217.136
+ },
+ {
+ "x": 579.12,
+ "y": 217.584
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 217.888
+ },
+ {
+ "x": 570.0,
+ "y": 218.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 214.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 214.224
+ },
+ {
+ "x": 620.88,
+ "y": 214.832
+ },
+ {
+ "x": 614.52,
+ "y": 215.728
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 216.81599999999997
+ },
+ {
+ "x": 600.0,
+ "y": 218.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 219.184
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 220.272
+ },
+ {
+ "x": 579.12,
+ "y": 221.168
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 221.776
+ },
+ {
+ "x": 570.0,
+ "y": 222.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 218.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 217.552
+ },
+ {
+ "x": 620.88,
+ "y": 216.336
+ },
+ {
+ "x": 614.52,
+ "y": 214.544
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 212.368
+ },
+ {
+ "x": 600.0,
+ "y": 210.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 207.632
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 205.45600000000002
+ },
+ {
+ "x": 579.12,
+ "y": 203.664
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 202.448
+ },
+ {
+ "x": 570.0,
+ "y": 202.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 218.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 217.664
+ },
+ {
+ "x": 620.88,
+ "y": 216.752
+ },
+ {
+ "x": 614.52,
+ "y": 215.40800000000002
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 213.776
+ },
+ {
+ "x": 600.0,
+ "y": 212.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 210.224
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 208.592
+ },
+ {
+ "x": 579.12,
+ "y": 207.248
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 206.336
+ },
+ {
+ "x": 570.0,
+ "y": 206.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 218.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 217.77599999999998
+ },
+ {
+ "x": 620.88,
+ "y": 217.168
+ },
+ {
+ "x": 614.52,
+ "y": 216.27200000000002
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 215.184
+ },
+ {
+ "x": 600.0,
+ "y": 214.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 212.81600000000003
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 211.728
+ },
+ {
+ "x": 579.12,
+ "y": 210.832
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 210.22400000000002
+ },
+ {
+ "x": 570.0,
+ "y": 210.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 218.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 217.88799999999998
+ },
+ {
+ "x": 620.88,
+ "y": 217.584
+ },
+ {
+ "x": 614.52,
+ "y": 217.13600000000002
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 216.59199999999998
+ },
+ {
+ "x": 600.0,
+ "y": 216.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 215.40800000000002
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 214.864
+ },
+ {
+ "x": 579.12,
+ "y": 214.416
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 214.112
+ },
+ {
+ "x": 570.0,
+ "y": 214.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 218.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 218.0
+ },
+ {
+ "x": 620.88,
+ "y": 218.0
+ },
+ {
+ "x": 614.52,
+ "y": 218.0
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 218.0
+ },
+ {
+ "x": 600.0,
+ "y": 218.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 218.0
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 218.0
+ },
+ {
+ "x": 579.12,
+ "y": 218.0
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 218.0
+ },
+ {
+ "x": 570.0,
+ "y": 218.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 4,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 218.0
+ },
+ {
+ "x": 626.1600000000001,
+ "y": 218.112
+ },
+ {
+ "x": 620.88,
+ "y": 218.416
+ },
+ {
+ "x": 614.52,
+ "y": 218.864
+ },
+ {
+ "x": 607.4399999999999,
+ "y": 219.40800000000002
+ },
+ {
+ "x": 600.0,
+ "y": 220.0
+ },
+ {
+ "x": 592.5600000000001,
+ "y": 220.59199999999998
+ },
+ {
+ "x": 585.4799999999999,
+ "y": 221.136
+ },
+ {
+ "x": 579.12,
+ "y": 221.584
+ },
+ {
+ "x": 573.8399999999999,
+ "y": 221.888
+ },
+ {
+ "x": 570.0,
+ "y": 222.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_left",
+ "startRoad": "road_4_2_2",
+ "endRoad": "road_3_2_3",
+ "direction": 2,
+ "laneLinks": [
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 202.0
+ },
+ {
+ "x": 626.6740000000001,
+ "y": 201.374
+ },
+ {
+ "x": 622.832,
+ "y": 199.632
+ },
+ {
+ "x": 618.678,
+ "y": 196.97799999999998
+ },
+ {
+ "x": 614.416,
+ "y": 193.61599999999999
+ },
+ {
+ "x": 610.25,
+ "y": 189.75
+ },
+ {
+ "x": 606.384,
+ "y": 185.584
+ },
+ {
+ "x": 603.0219999999999,
+ "y": 181.32199999999997
+ },
+ {
+ "x": 600.368,
+ "y": 177.168
+ },
+ {
+ "x": 598.626,
+ "y": 173.32600000000002
+ },
+ {
+ "x": 598.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 202.0
+ },
+ {
+ "x": 626.562,
+ "y": 201.374
+ },
+ {
+ "x": 622.4159999999999,
+ "y": 199.632
+ },
+ {
+ "x": 617.814,
+ "y": 196.97799999999998
+ },
+ {
+ "x": 613.008,
+ "y": 193.61599999999999
+ },
+ {
+ "x": 608.25,
+ "y": 189.75
+ },
+ {
+ "x": 603.792,
+ "y": 185.584
+ },
+ {
+ "x": 599.886,
+ "y": 181.32199999999997
+ },
+ {
+ "x": 596.784,
+ "y": 177.168
+ },
+ {
+ "x": 594.7379999999999,
+ "y": 173.32600000000002
+ },
+ {
+ "x": 594.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 202.0
+ },
+ {
+ "x": 626.45,
+ "y": 201.374
+ },
+ {
+ "x": 622.0,
+ "y": 199.632
+ },
+ {
+ "x": 616.95,
+ "y": 196.97799999999998
+ },
+ {
+ "x": 611.6,
+ "y": 193.61599999999999
+ },
+ {
+ "x": 606.25,
+ "y": 189.75
+ },
+ {
+ "x": 601.1999999999999,
+ "y": 185.584
+ },
+ {
+ "x": 596.75,
+ "y": 181.32199999999997
+ },
+ {
+ "x": 593.2,
+ "y": 177.168
+ },
+ {
+ "x": 590.85,
+ "y": 173.32600000000002
+ },
+ {
+ "x": 590.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 202.0
+ },
+ {
+ "x": 626.3380000000001,
+ "y": 201.374
+ },
+ {
+ "x": 621.5840000000001,
+ "y": 199.632
+ },
+ {
+ "x": 616.086,
+ "y": 196.97799999999998
+ },
+ {
+ "x": 610.192,
+ "y": 193.61599999999999
+ },
+ {
+ "x": 604.25,
+ "y": 189.75
+ },
+ {
+ "x": 598.608,
+ "y": 185.584
+ },
+ {
+ "x": 593.614,
+ "y": 181.32199999999997
+ },
+ {
+ "x": 589.616,
+ "y": 177.168
+ },
+ {
+ "x": 586.962,
+ "y": 173.32600000000002
+ },
+ {
+ "x": 586.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 206.0
+ },
+ {
+ "x": 626.6740000000001,
+ "y": 205.262
+ },
+ {
+ "x": 622.832,
+ "y": 203.216
+ },
+ {
+ "x": 618.678,
+ "y": 200.114
+ },
+ {
+ "x": 614.416,
+ "y": 196.20799999999997
+ },
+ {
+ "x": 610.25,
+ "y": 191.75
+ },
+ {
+ "x": 606.384,
+ "y": 186.992
+ },
+ {
+ "x": 603.0219999999999,
+ "y": 182.18599999999998
+ },
+ {
+ "x": 600.368,
+ "y": 177.584
+ },
+ {
+ "x": 598.626,
+ "y": 173.43800000000002
+ },
+ {
+ "x": 598.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 206.0
+ },
+ {
+ "x": 626.562,
+ "y": 205.262
+ },
+ {
+ "x": 622.4159999999999,
+ "y": 203.216
+ },
+ {
+ "x": 617.814,
+ "y": 200.114
+ },
+ {
+ "x": 613.008,
+ "y": 196.20799999999997
+ },
+ {
+ "x": 608.25,
+ "y": 191.75
+ },
+ {
+ "x": 603.792,
+ "y": 186.992
+ },
+ {
+ "x": 599.886,
+ "y": 182.18599999999998
+ },
+ {
+ "x": 596.784,
+ "y": 177.584
+ },
+ {
+ "x": 594.7379999999999,
+ "y": 173.43800000000002
+ },
+ {
+ "x": 594.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 206.0
+ },
+ {
+ "x": 626.45,
+ "y": 205.262
+ },
+ {
+ "x": 622.0,
+ "y": 203.216
+ },
+ {
+ "x": 616.95,
+ "y": 200.114
+ },
+ {
+ "x": 611.6,
+ "y": 196.20799999999997
+ },
+ {
+ "x": 606.25,
+ "y": 191.75
+ },
+ {
+ "x": 601.1999999999999,
+ "y": 186.992
+ },
+ {
+ "x": 596.75,
+ "y": 182.18599999999998
+ },
+ {
+ "x": 593.2,
+ "y": 177.584
+ },
+ {
+ "x": 590.85,
+ "y": 173.43800000000002
+ },
+ {
+ "x": 590.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 630.0,
+ "y": 206.0
+ },
+ {
+ "x": 626.3380000000001,
+ "y": 205.262
+ },
+ {
+ "x": 621.5840000000001,
+ "y": 203.216
+ },
+ {
+ "x": 616.086,
+ "y": 200.114
+ },
+ {
+ "x": 610.192,
+ "y": 196.20799999999997
+ },
+ {
+ "x": 604.25,
+ "y": 191.75
+ },
+ {
+ "x": 598.608,
+ "y": 186.992
+ },
+ {
+ "x": 593.614,
+ "y": 182.18599999999998
+ },
+ {
+ "x": 589.616,
+ "y": 177.584
+ },
+ {
+ "x": 586.962,
+ "y": 173.43800000000002
+ },
+ {
+ "x": 586.0,
+ "y": 170.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_left",
+ "startRoad": "road_3_3_3",
+ "endRoad": "road_3_2_0",
+ "direction": 3,
+ "laneLinks": [
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 598.0,
+ "y": 230.0
+ },
+ {
+ "x": 598.626,
+ "y": 226.674
+ },
+ {
+ "x": 600.3679999999999,
+ "y": 222.83200000000002
+ },
+ {
+ "x": 603.022,
+ "y": 218.678
+ },
+ {
+ "x": 606.384,
+ "y": 214.416
+ },
+ {
+ "x": 610.25,
+ "y": 210.25
+ },
+ {
+ "x": 614.4159999999999,
+ "y": 206.38400000000001
+ },
+ {
+ "x": 618.678,
+ "y": 203.022
+ },
+ {
+ "x": 622.832,
+ "y": 200.368
+ },
+ {
+ "x": 626.6740000000001,
+ "y": 198.626
+ },
+ {
+ "x": 630.0,
+ "y": 198.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 598.0,
+ "y": 230.0
+ },
+ {
+ "x": 598.626,
+ "y": 226.56199999999998
+ },
+ {
+ "x": 600.3679999999999,
+ "y": 222.41600000000003
+ },
+ {
+ "x": 603.022,
+ "y": 217.814
+ },
+ {
+ "x": 606.384,
+ "y": 213.008
+ },
+ {
+ "x": 610.25,
+ "y": 208.25
+ },
+ {
+ "x": 614.4159999999999,
+ "y": 203.792
+ },
+ {
+ "x": 618.678,
+ "y": 199.886
+ },
+ {
+ "x": 622.832,
+ "y": 196.784
+ },
+ {
+ "x": 626.6740000000001,
+ "y": 194.738
+ },
+ {
+ "x": 630.0,
+ "y": 194.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 598.0,
+ "y": 230.0
+ },
+ {
+ "x": 598.626,
+ "y": 226.45
+ },
+ {
+ "x": 600.3679999999999,
+ "y": 222.0
+ },
+ {
+ "x": 603.022,
+ "y": 216.95
+ },
+ {
+ "x": 606.384,
+ "y": 211.60000000000002
+ },
+ {
+ "x": 610.25,
+ "y": 206.25
+ },
+ {
+ "x": 614.4159999999999,
+ "y": 201.2
+ },
+ {
+ "x": 618.678,
+ "y": 196.75
+ },
+ {
+ "x": 622.832,
+ "y": 193.20000000000002
+ },
+ {
+ "x": 626.6740000000001,
+ "y": 190.85000000000002
+ },
+ {
+ "x": 630.0,
+ "y": 190.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 598.0,
+ "y": 230.0
+ },
+ {
+ "x": 598.626,
+ "y": 226.338
+ },
+ {
+ "x": 600.3679999999999,
+ "y": 221.584
+ },
+ {
+ "x": 603.022,
+ "y": 216.086
+ },
+ {
+ "x": 606.384,
+ "y": 210.192
+ },
+ {
+ "x": 610.25,
+ "y": 204.25
+ },
+ {
+ "x": 614.4159999999999,
+ "y": 198.608
+ },
+ {
+ "x": 618.678,
+ "y": 193.614
+ },
+ {
+ "x": 622.832,
+ "y": 189.616
+ },
+ {
+ "x": 626.6740000000001,
+ "y": 186.96200000000002
+ },
+ {
+ "x": 630.0,
+ "y": 186.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 598.0,
+ "y": 230.0
+ },
+ {
+ "x": 598.626,
+ "y": 226.226
+ },
+ {
+ "x": 600.3679999999999,
+ "y": 221.168
+ },
+ {
+ "x": 603.022,
+ "y": 215.222
+ },
+ {
+ "x": 606.384,
+ "y": 208.78400000000002
+ },
+ {
+ "x": 610.25,
+ "y": 202.25
+ },
+ {
+ "x": 614.4159999999999,
+ "y": 196.016
+ },
+ {
+ "x": 618.678,
+ "y": 190.478
+ },
+ {
+ "x": 622.832,
+ "y": 186.032
+ },
+ {
+ "x": 626.6740000000001,
+ "y": 183.074
+ },
+ {
+ "x": 630.0,
+ "y": 182.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 0,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 598.0,
+ "y": 230.0
+ },
+ {
+ "x": 598.626,
+ "y": 226.114
+ },
+ {
+ "x": 600.3679999999999,
+ "y": 220.752
+ },
+ {
+ "x": 603.022,
+ "y": 214.358
+ },
+ {
+ "x": 606.384,
+ "y": 207.376
+ },
+ {
+ "x": 610.25,
+ "y": 200.25
+ },
+ {
+ "x": 614.4159999999999,
+ "y": 193.42399999999998
+ },
+ {
+ "x": 618.678,
+ "y": 187.342
+ },
+ {
+ "x": 622.832,
+ "y": 182.448
+ },
+ {
+ "x": 626.6740000000001,
+ "y": 179.186
+ },
+ {
+ "x": 630.0,
+ "y": 178.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "turn_right",
+ "startRoad": "road_3_3_3",
+ "endRoad": "road_3_2_2",
+ "direction": 3,
+ "laneLinks": [
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 586.0,
+ "y": 230.0
+ },
+ {
+ "x": 585.822,
+ "y": 226.786
+ },
+ {
+ "x": 585.296,
+ "y": 223.24800000000002
+ },
+ {
+ "x": 584.4340000000001,
+ "y": 219.542
+ },
+ {
+ "x": 583.2479999999999,
+ "y": 215.824
+ },
+ {
+ "x": 581.75,
+ "y": 212.25
+ },
+ {
+ "x": 579.9520000000001,
+ "y": 208.976
+ },
+ {
+ "x": 577.866,
+ "y": 206.15800000000002
+ },
+ {
+ "x": 575.504,
+ "y": 203.952
+ },
+ {
+ "x": 572.8779999999999,
+ "y": 202.514
+ },
+ {
+ "x": 570.0,
+ "y": 202.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 586.0,
+ "y": 230.0
+ },
+ {
+ "x": 585.822,
+ "y": 226.898
+ },
+ {
+ "x": 585.296,
+ "y": 223.66400000000002
+ },
+ {
+ "x": 584.4340000000001,
+ "y": 220.406
+ },
+ {
+ "x": 583.2479999999999,
+ "y": 217.23200000000003
+ },
+ {
+ "x": 581.75,
+ "y": 214.25
+ },
+ {
+ "x": 579.9520000000001,
+ "y": 211.56799999999998
+ },
+ {
+ "x": 577.866,
+ "y": 209.294
+ },
+ {
+ "x": 575.504,
+ "y": 207.536
+ },
+ {
+ "x": 572.8779999999999,
+ "y": 206.40200000000002
+ },
+ {
+ "x": 570.0,
+ "y": 206.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 586.0,
+ "y": 230.0
+ },
+ {
+ "x": 585.822,
+ "y": 227.01
+ },
+ {
+ "x": 585.296,
+ "y": 224.08
+ },
+ {
+ "x": 584.4340000000001,
+ "y": 221.27
+ },
+ {
+ "x": 583.2479999999999,
+ "y": 218.64000000000001
+ },
+ {
+ "x": 581.75,
+ "y": 216.25
+ },
+ {
+ "x": 579.9520000000001,
+ "y": 214.16000000000003
+ },
+ {
+ "x": 577.866,
+ "y": 212.43
+ },
+ {
+ "x": 575.504,
+ "y": 211.12
+ },
+ {
+ "x": 572.8779999999999,
+ "y": 210.29000000000002
+ },
+ {
+ "x": 570.0,
+ "y": 210.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 586.0,
+ "y": 230.0
+ },
+ {
+ "x": 585.822,
+ "y": 227.12199999999999
+ },
+ {
+ "x": 585.296,
+ "y": 224.496
+ },
+ {
+ "x": 584.4340000000001,
+ "y": 222.13400000000001
+ },
+ {
+ "x": 583.2479999999999,
+ "y": 220.048
+ },
+ {
+ "x": 581.75,
+ "y": 218.25
+ },
+ {
+ "x": 579.9520000000001,
+ "y": 216.752
+ },
+ {
+ "x": 577.866,
+ "y": 215.566
+ },
+ {
+ "x": 575.504,
+ "y": 214.704
+ },
+ {
+ "x": 572.8779999999999,
+ "y": 214.178
+ },
+ {
+ "x": 570.0,
+ "y": 214.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 4,
+ "points": [
+ {
+ "x": 586.0,
+ "y": 230.0
+ },
+ {
+ "x": 585.822,
+ "y": 227.234
+ },
+ {
+ "x": 585.296,
+ "y": 224.912
+ },
+ {
+ "x": 584.4340000000001,
+ "y": 222.998
+ },
+ {
+ "x": 583.2479999999999,
+ "y": 221.45600000000002
+ },
+ {
+ "x": 581.75,
+ "y": 220.25
+ },
+ {
+ "x": 579.9520000000001,
+ "y": 219.344
+ },
+ {
+ "x": 577.866,
+ "y": 218.702
+ },
+ {
+ "x": 575.504,
+ "y": 218.288
+ },
+ {
+ "x": 572.8779999999999,
+ "y": 218.066
+ },
+ {
+ "x": 570.0,
+ "y": 218.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 3,
+ "endLaneIndex": 5,
+ "points": [
+ {
+ "x": 586.0,
+ "y": 230.0
+ },
+ {
+ "x": 585.822,
+ "y": 227.346
+ },
+ {
+ "x": 585.296,
+ "y": 225.328
+ },
+ {
+ "x": 584.4340000000001,
+ "y": 223.862
+ },
+ {
+ "x": 583.2479999999999,
+ "y": 222.86400000000003
+ },
+ {
+ "x": 581.75,
+ "y": 222.25
+ },
+ {
+ "x": 579.9520000000001,
+ "y": 221.93599999999998
+ },
+ {
+ "x": 577.866,
+ "y": 221.838
+ },
+ {
+ "x": 575.504,
+ "y": 221.872
+ },
+ {
+ "x": 572.8779999999999,
+ "y": 221.954
+ },
+ {
+ "x": 570.0,
+ "y": 222.0
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "go_straight",
+ "startRoad": "road_3_3_3",
+ "endRoad": "road_3_2_3",
+ "direction": 3,
+ "laneLinks": [
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 594.0,
+ "y": 230.0
+ },
+ {
+ "x": 594.112,
+ "y": 226.16
+ },
+ {
+ "x": 594.416,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 594.864,
+ "y": 214.51999999999998
+ },
+ {
+ "x": 595.408,
+ "y": 207.44
+ },
+ {
+ "x": 596.0,
+ "y": 200.0
+ },
+ {
+ "x": 596.592,
+ "y": 192.56
+ },
+ {
+ "x": 597.136,
+ "y": 185.48
+ },
+ {
+ "x": 597.5840000000001,
+ "y": 179.12
+ },
+ {
+ "x": 597.888,
+ "y": 173.84000000000003
+ },
+ {
+ "x": 598.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 594.0,
+ "y": 230.0
+ },
+ {
+ "x": 593.9999999999999,
+ "y": 226.16
+ },
+ {
+ "x": 594.0,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 594.0,
+ "y": 214.51999999999998
+ },
+ {
+ "x": 594.0,
+ "y": 207.44
+ },
+ {
+ "x": 594.0,
+ "y": 200.0
+ },
+ {
+ "x": 594.0,
+ "y": 192.56
+ },
+ {
+ "x": 594.0,
+ "y": 185.48
+ },
+ {
+ "x": 594.0,
+ "y": 179.12
+ },
+ {
+ "x": 594.0,
+ "y": 173.84000000000003
+ },
+ {
+ "x": 594.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 594.0,
+ "y": 230.0
+ },
+ {
+ "x": 593.8879999999999,
+ "y": 226.16
+ },
+ {
+ "x": 593.5840000000001,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 593.1360000000001,
+ "y": 214.51999999999998
+ },
+ {
+ "x": 592.592,
+ "y": 207.44
+ },
+ {
+ "x": 592.0,
+ "y": 200.0
+ },
+ {
+ "x": 591.4079999999999,
+ "y": 192.56
+ },
+ {
+ "x": 590.864,
+ "y": 185.48
+ },
+ {
+ "x": 590.416,
+ "y": 179.12
+ },
+ {
+ "x": 590.1120000000001,
+ "y": 173.84000000000003
+ },
+ {
+ "x": 590.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 1,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 594.0,
+ "y": 230.0
+ },
+ {
+ "x": 593.776,
+ "y": 226.16
+ },
+ {
+ "x": 593.1680000000001,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 592.272,
+ "y": 214.51999999999998
+ },
+ {
+ "x": 591.184,
+ "y": 207.44
+ },
+ {
+ "x": 590.0,
+ "y": 200.0
+ },
+ {
+ "x": 588.816,
+ "y": 192.56
+ },
+ {
+ "x": 587.7280000000001,
+ "y": 185.48
+ },
+ {
+ "x": 586.832,
+ "y": 179.12
+ },
+ {
+ "x": 586.224,
+ "y": 173.84000000000003
+ },
+ {
+ "x": 586.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 0,
+ "points": [
+ {
+ "x": 590.0,
+ "y": 230.0
+ },
+ {
+ "x": 590.224,
+ "y": 226.16
+ },
+ {
+ "x": 590.832,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 591.7280000000001,
+ "y": 214.51999999999998
+ },
+ {
+ "x": 592.816,
+ "y": 207.44
+ },
+ {
+ "x": 594.0,
+ "y": 200.0
+ },
+ {
+ "x": 595.184,
+ "y": 192.56
+ },
+ {
+ "x": 596.2719999999999,
+ "y": 185.48
+ },
+ {
+ "x": 597.168,
+ "y": 179.12
+ },
+ {
+ "x": 597.776,
+ "y": 173.84000000000003
+ },
+ {
+ "x": 598.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 1,
+ "points": [
+ {
+ "x": 590.0,
+ "y": 230.0
+ },
+ {
+ "x": 590.112,
+ "y": 226.16
+ },
+ {
+ "x": 590.4159999999999,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 590.864,
+ "y": 214.51999999999998
+ },
+ {
+ "x": 591.408,
+ "y": 207.44
+ },
+ {
+ "x": 592.0,
+ "y": 200.0
+ },
+ {
+ "x": 592.592,
+ "y": 192.56
+ },
+ {
+ "x": 593.136,
+ "y": 185.48
+ },
+ {
+ "x": 593.584,
+ "y": 179.12
+ },
+ {
+ "x": 593.8879999999999,
+ "y": 173.84000000000003
+ },
+ {
+ "x": 594.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 2,
+ "points": [
+ {
+ "x": 590.0,
+ "y": 230.0
+ },
+ {
+ "x": 590.0,
+ "y": 226.16
+ },
+ {
+ "x": 590.0,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 590.0,
+ "y": 214.51999999999998
+ },
+ {
+ "x": 590.0,
+ "y": 207.44
+ },
+ {
+ "x": 590.0,
+ "y": 200.0
+ },
+ {
+ "x": 590.0,
+ "y": 192.56
+ },
+ {
+ "x": 590.0,
+ "y": 185.48
+ },
+ {
+ "x": 590.0,
+ "y": 179.12
+ },
+ {
+ "x": 590.0,
+ "y": 173.84000000000003
+ },
+ {
+ "x": 590.0,
+ "y": 170.0
+ }
+ ]
+ },
+ {
+ "startLaneIndex": 2,
+ "endLaneIndex": 3,
+ "points": [
+ {
+ "x": 590.0,
+ "y": 230.0
+ },
+ {
+ "x": 589.888,
+ "y": 226.16
+ },
+ {
+ "x": 589.5840000000001,
+ "y": 220.88000000000002
+ },
+ {
+ "x": 589.136,
+ "y": 214.51999999999998
+ },
+ {
+ "x": 588.592,
+ "y": 207.44
+ },
+ {
+ "x": 588.0,
+ "y": 200.0
+ },
+ {
+ "x": 587.408,
+ "y": 192.56
+ },
+ {
+ "x": 586.864,
+ "y": 185.48
+ },
+ {
+ "x": 586.4159999999999,
+ "y": 179.12
+ },
+ {
+ "x": 586.112,
+ "y": 173.84000000000003
+ },
+ {
+ "x": 586.0,
+ "y": 170.0
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "trafficLight": {
+ "roadLinkIndices": [
+ 0,
+ 1,
+ 2,
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11
+ ],
+ "lightphases": [
+ {
+ "time": 30,
+ "availableRoadLinks": [
+ 0,
+ 2,
+ 3,
+ 6,
+ 7,
+ 10
+ ]
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": [
+ 10,
+ 2,
+ 3,
+ 6
+ ]
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": [
+ 1,
+ 2,
+ 3,
+ 6,
+ 8,
+ 10
+ ]
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": [
+ 10,
+ 2,
+ 3,
+ 6
+ ]
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": [
+ 2,
+ 3,
+ 4,
+ 6,
+ 10,
+ 11
+ ]
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": [
+ 10,
+ 2,
+ 3,
+ 6
+ ]
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": [
+ 2,
+ 3,
+ 5,
+ 6,
+ 9,
+ 10
+ ]
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": [
+ 10,
+ 2,
+ 3,
+ 6
+ ]
+ }
+ ]
+ },
+ "virtual": false
+ },
+ {
+ "id": "intersection_4_2",
+ "point": {
+ "x": 800,
+ "y": 200
+ },
+ "width": 0,
+ "roads": [
+ "road_3_2_0",
+ "road_4_2_2"
+ ],
+ "roadLinks": [],
+ "trafficLight": {
+ "roadLinkIndices": [],
+ "lightphases": [
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ }
+ ]
+ },
+ "virtual": true
+ },
+ {
+ "id": "intersection_1_3",
+ "point": {
+ "x": 0,
+ "y": 300
+ },
+ "width": 0,
+ "roads": [
+ "road_1_2_1",
+ "road_1_3_3"
+ ],
+ "roadLinks": [],
+ "trafficLight": {
+ "roadLinkIndices": [],
+ "lightphases": [
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ }
+ ]
+ },
+ "virtual": true
+ },
+ {
+ "id": "intersection_2_3",
+ "point": {
+ "x": 300,
+ "y": 300
+ },
+ "width": 0,
+ "roads": [
+ "road_2_2_1",
+ "road_2_3_3"
+ ],
+ "roadLinks": [],
+ "trafficLight": {
+ "roadLinkIndices": [],
+ "lightphases": [
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ }
+ ]
+ },
+ "virtual": true
+ },
+ {
+ "id": "intersection_3_3",
+ "point": {
+ "x": 600,
+ "y": 300
+ },
+ "width": 0,
+ "roads": [
+ "road_3_2_1",
+ "road_3_3_3"
+ ],
+ "roadLinks": [],
+ "trafficLight": {
+ "roadLinkIndices": [],
+ "lightphases": [
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 30,
+ "availableRoadLinks": []
+ },
+ {
+ "time": 5,
+ "availableRoadLinks": []
+ }
+ ]
+ },
+ "virtual": true
+ }
+ ],
+ "roads": [
+ {
+ "id": "road_1_0_1",
+ "points": [
+ {
+ "x": 0,
+ "y": -100
+ },
+ {
+ "x": 0,
+ "y": 0
+ }
+ ],
+ "num_left_lanes": 1,
+ "num_straight_lanes": 2,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_1_0",
+ "endIntersection": "intersection_1_1"
+ },
+ {
+ "id": "road_2_0_1",
+ "points": [
+ {
+ "x": 300,
+ "y": -100
+ },
+ {
+ "x": 300,
+ "y": 0
+ }
+ ],
+ "num_left_lanes": 1,
+ "num_straight_lanes": 2,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_2_0",
+ "endIntersection": "intersection_2_1"
+ },
+ {
+ "id": "road_3_0_1",
+ "points": [
+ {
+ "x": 600,
+ "y": -100
+ },
+ {
+ "x": 600,
+ "y": 0
+ }
+ ],
+ "num_left_lanes": 1,
+ "num_straight_lanes": 2,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_3_0",
+ "endIntersection": "intersection_3_1"
+ },
+ {
+ "id": "road_0_1_0",
+ "points": [
+ {
+ "x": -200,
+ "y": 0
+ },
+ {
+ "x": 0,
+ "y": 0
+ }
+ ],
+ "num_left_lanes": 2,
+ "num_straight_lanes": 3,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_0_1",
+ "endIntersection": "intersection_1_1"
+ },
+ {
+ "id": "road_1_1_0",
+ "points": [
+ {
+ "x": 0,
+ "y": 0
+ },
+ {
+ "x": 300,
+ "y": 0
+ }
+ ],
+ "num_left_lanes": 2,
+ "num_straight_lanes": 3,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_1_1",
+ "endIntersection": "intersection_2_1"
+ },
+ {
+ "id": "road_1_1_1",
+ "points": [
+ {
+ "x": 0,
+ "y": 0
+ },
+ {
+ "x": 0,
+ "y": 200
+ }
+ ],
+ "num_left_lanes": 1,
+ "num_straight_lanes": 2,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_1_1",
+ "endIntersection": "intersection_1_2"
+ },
+ {
+ "id": "road_1_1_2",
+ "points": [
+ {
+ "x": 0,
+ "y": 0
+ },
+ {
+ "x": -200,
+ "y": 0
+ }
+ ],
+ "num_left_lanes": 2,
+ "num_straight_lanes": 3,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_1_1",
+ "endIntersection": "intersection_0_1"
+ },
+ {
+ "id": "road_1_1_3",
+ "points": [
+ {
+ "x": 0,
+ "y": 0
+ },
+ {
+ "x": 0,
+ "y": -100
+ }
+ ],
+ "num_left_lanes": 1,
+ "num_straight_lanes": 2,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_1_1",
+ "endIntersection": "intersection_1_0"
+ },
+ {
+ "id": "road_2_1_0",
+ "points": [
+ {
+ "x": 300,
+ "y": 0
+ },
+ {
+ "x": 600,
+ "y": 0
+ }
+ ],
+ "num_left_lanes": 2,
+ "num_straight_lanes": 3,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_2_1",
+ "endIntersection": "intersection_3_1"
+ },
+ {
+ "id": "road_2_1_1",
+ "points": [
+ {
+ "x": 300,
+ "y": 0
+ },
+ {
+ "x": 300,
+ "y": 200
+ }
+ ],
+ "num_left_lanes": 1,
+ "num_straight_lanes": 2,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_2_1",
+ "endIntersection": "intersection_2_2"
+ },
+ {
+ "id": "road_2_1_2",
+ "points": [
+ {
+ "x": 300,
+ "y": 0
+ },
+ {
+ "x": 0,
+ "y": 0
+ }
+ ],
+ "num_left_lanes": 2,
+ "num_straight_lanes": 3,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_2_1",
+ "endIntersection": "intersection_1_1"
+ },
+ {
+ "id": "road_2_1_3",
+ "points": [
+ {
+ "x": 300,
+ "y": 0
+ },
+ {
+ "x": 300,
+ "y": -100
+ }
+ ],
+ "num_left_lanes": 1,
+ "num_straight_lanes": 2,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_2_1",
+ "endIntersection": "intersection_2_0"
+ },
+ {
+ "id": "road_3_1_0",
+ "points": [
+ {
+ "x": 600,
+ "y": 0
+ },
+ {
+ "x": 800,
+ "y": 0
+ }
+ ],
+ "num_left_lanes": 2,
+ "num_straight_lanes": 3,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_3_1",
+ "endIntersection": "intersection_4_1"
+ },
+ {
+ "id": "road_3_1_1",
+ "points": [
+ {
+ "x": 600,
+ "y": 0
+ },
+ {
+ "x": 600,
+ "y": 200
+ }
+ ],
+ "num_left_lanes": 1,
+ "num_straight_lanes": 2,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_3_1",
+ "endIntersection": "intersection_3_2"
+ },
+ {
+ "id": "road_3_1_2",
+ "points": [
+ {
+ "x": 600,
+ "y": 0
+ },
+ {
+ "x": 300,
+ "y": 0
+ }
+ ],
+ "num_left_lanes": 2,
+ "num_straight_lanes": 3,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_3_1",
+ "endIntersection": "intersection_2_1"
+ },
+ {
+ "id": "road_3_1_3",
+ "points": [
+ {
+ "x": 600,
+ "y": 0
+ },
+ {
+ "x": 600,
+ "y": -100
+ }
+ ],
+ "num_left_lanes": 1,
+ "num_straight_lanes": 2,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_3_1",
+ "endIntersection": "intersection_3_0"
+ },
+ {
+ "id": "road_4_1_2",
+ "points": [
+ {
+ "x": 800,
+ "y": 0
+ },
+ {
+ "x": 600,
+ "y": 0
+ }
+ ],
+ "num_left_lanes": 2,
+ "num_straight_lanes": 3,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_4_1",
+ "endIntersection": "intersection_3_1"
+ },
+ {
+ "id": "road_0_2_0",
+ "points": [
+ {
+ "x": -200,
+ "y": 200
+ },
+ {
+ "x": 0,
+ "y": 200
+ }
+ ],
+ "num_left_lanes": 2,
+ "num_straight_lanes": 3,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_0_2",
+ "endIntersection": "intersection_1_2"
+ },
+ {
+ "id": "road_1_2_0",
+ "points": [
+ {
+ "x": 0,
+ "y": 200
+ },
+ {
+ "x": 300,
+ "y": 200
+ }
+ ],
+ "num_left_lanes": 2,
+ "num_straight_lanes": 3,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_1_2",
+ "endIntersection": "intersection_2_2"
+ },
+ {
+ "id": "road_1_2_1",
+ "points": [
+ {
+ "x": 0,
+ "y": 200
+ },
+ {
+ "x": 0,
+ "y": 300
+ }
+ ],
+ "num_left_lanes": 1,
+ "num_straight_lanes": 2,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_1_2",
+ "endIntersection": "intersection_1_3"
+ },
+ {
+ "id": "road_1_2_2",
+ "points": [
+ {
+ "x": 0,
+ "y": 200
+ },
+ {
+ "x": -200,
+ "y": 200
+ }
+ ],
+ "num_left_lanes": 2,
+ "num_straight_lanes": 3,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_1_2",
+ "endIntersection": "intersection_0_2"
+ },
+ {
+ "id": "road_1_2_3",
+ "points": [
+ {
+ "x": 0,
+ "y": 200
+ },
+ {
+ "x": 0,
+ "y": 0
+ }
+ ],
+ "num_left_lanes": 1,
+ "num_straight_lanes": 2,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_1_2",
+ "endIntersection": "intersection_1_1"
+ },
+ {
+ "id": "road_2_2_0",
+ "points": [
+ {
+ "x": 300,
+ "y": 200
+ },
+ {
+ "x": 600,
+ "y": 200
+ }
+ ],
+ "num_left_lanes": 2,
+ "num_straight_lanes": 3,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_2_2",
+ "endIntersection": "intersection_3_2"
+ },
+ {
+ "id": "road_2_2_1",
+ "points": [
+ {
+ "x": 300,
+ "y": 200
+ },
+ {
+ "x": 300,
+ "y": 300
+ }
+ ],
+ "num_left_lanes": 1,
+ "num_straight_lanes": 2,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_2_2",
+ "endIntersection": "intersection_2_3"
+ },
+ {
+ "id": "road_2_2_2",
+ "points": [
+ {
+ "x": 300,
+ "y": 200
+ },
+ {
+ "x": 0,
+ "y": 200
+ }
+ ],
+ "num_left_lanes": 2,
+ "num_straight_lanes": 3,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_2_2",
+ "endIntersection": "intersection_1_2"
+ },
+ {
+ "id": "road_2_2_3",
+ "points": [
+ {
+ "x": 300,
+ "y": 200
+ },
+ {
+ "x": 300,
+ "y": 0
+ }
+ ],
+ "num_left_lanes": 1,
+ "num_straight_lanes": 2,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_2_2",
+ "endIntersection": "intersection_2_1"
+ },
+ {
+ "id": "road_3_2_0",
+ "points": [
+ {
+ "x": 600,
+ "y": 200
+ },
+ {
+ "x": 800,
+ "y": 200
+ }
+ ],
+ "num_left_lanes": 2,
+ "num_straight_lanes": 3,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_3_2",
+ "endIntersection": "intersection_4_2"
+ },
+ {
+ "id": "road_3_2_1",
+ "points": [
+ {
+ "x": 600,
+ "y": 200
+ },
+ {
+ "x": 600,
+ "y": 300
+ }
+ ],
+ "num_left_lanes": 1,
+ "num_straight_lanes": 2,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_3_2",
+ "endIntersection": "intersection_3_3"
+ },
+ {
+ "id": "road_3_2_2",
+ "points": [
+ {
+ "x": 600,
+ "y": 200
+ },
+ {
+ "x": 300,
+ "y": 200
+ }
+ ],
+ "num_left_lanes": 2,
+ "num_straight_lanes": 3,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_3_2",
+ "endIntersection": "intersection_2_2"
+ },
+ {
+ "id": "road_3_2_3",
+ "points": [
+ {
+ "x": 600,
+ "y": 200
+ },
+ {
+ "x": 600,
+ "y": 0
+ }
+ ],
+ "num_left_lanes": 1,
+ "num_straight_lanes": 2,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_3_2",
+ "endIntersection": "intersection_3_1"
+ },
+ {
+ "id": "road_4_2_2",
+ "points": [
+ {
+ "x": 800,
+ "y": 200
+ },
+ {
+ "x": 600,
+ "y": 200
+ }
+ ],
+ "num_left_lanes": 2,
+ "num_straight_lanes": 3,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_4_2",
+ "endIntersection": "intersection_3_2"
+ },
+ {
+ "id": "road_1_3_3",
+ "points": [
+ {
+ "x": 0,
+ "y": 300
+ },
+ {
+ "x": 0,
+ "y": 200
+ }
+ ],
+ "num_left_lanes": 1,
+ "num_straight_lanes": 2,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_1_3",
+ "endIntersection": "intersection_1_2"
+ },
+ {
+ "id": "road_2_3_3",
+ "points": [
+ {
+ "x": 300,
+ "y": 300
+ },
+ {
+ "x": 300,
+ "y": 200
+ }
+ ],
+ "num_left_lanes": 1,
+ "num_straight_lanes": 2,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_2_3",
+ "endIntersection": "intersection_2_2"
+ },
+ {
+ "id": "road_3_3_3",
+ "points": [
+ {
+ "x": 600,
+ "y": 300
+ },
+ {
+ "x": 600,
+ "y": 200
+ }
+ ],
+ "num_left_lanes": 1,
+ "num_straight_lanes": 2,
+ "num_right_lanes": 1,
+ "lanes": [
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ },
+ {
+ "width": 4,
+ "maxSpeed": 16.67
+ }
+ ],
+ "startIntersection": "intersection_3_3",
+ "endIntersection": "intersection_3_2"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/smartcross/envs/crossing.py b/smartcross/envs/crossing.py
index 6367ac8..d0e4346 100644
--- a/smartcross/envs/crossing.py
+++ b/smartcross/envs/crossing.py
@@ -17,7 +17,7 @@ def __init__(self, tls_id: str, env: 'BaseEnv') -> None:
self._lane_vehicle_dict = {}
self._previous_lane_vehicle_dict = {}
- signal_definition = traci.trafficlight.getCompleteRedYellowGreenDefinition(self._id)[0]
+ signal_definition = traci.trafficlight.getAllProgramLogics(self._id)[0]
self._green_phases = []
self._yellow_phases = []
for idx, phase in enumerate(signal_definition.phases):
@@ -140,9 +140,9 @@ def get_lane_delay_time(self):
def get_pressure(self):
pressure = 0
for lane in self._incoming_lanes:
- pressure += traci.lane.getLastStepVehicleNumber(lane)
+ pressure += traci.lane.getLastStepHaltingNumber(lane)
for lane in self._outgoing_lanes:
- pressure -= traci.lane.getLastStepVehicleNumber(lane)
+ pressure -= traci.lane.getLastStepHaltingNumber(lane)
return abs(pressure)
@property
diff --git a/smartcross/envs/obs/sumo_obs.py b/smartcross/envs/obs/sumo_obs.py
index 3fd9aac..e824473 100644
--- a/smartcross/envs/obs/sumo_obs.py
+++ b/smartcross/envs/obs/sumo_obs.py
@@ -1,10 +1,13 @@
from typing import Dict, List
import numpy as np
+import gym
from ding.envs import BaseEnv
from ding.envs.common.env_element import EnvElementInfo
from ding.envs.common import EnvElement
+from smartcross.utils.env_utils import squeeze_obs
+
ALL_OBS_TPYE = set(['phase', 'lane_pos_vec', 'traffic_volumn', 'queue_len'])
@@ -51,6 +54,7 @@ def _init(self, env: BaseEnv, cfg: Dict) -> None:
if self._use_centralized_obs:
self._shape = sum(obs_shape)
+ self._space = gym.spaces.Box(low=0, high=1, shape=(self._shape, ), dtype=np.float32)
else:
global_state_shape = sum(obs_shape)
if self._padding:
@@ -63,10 +67,17 @@ def _init(self, env: BaseEnv, cfg: Dict) -> None:
'global_state': global_state_shape,
'action_mask': self._tl_num
}
+ self._space = gym.spaces.Dict(
+ {
+ 'agent_state': gym.spaces.Box(low=0, high=1, shape=(agent_state_shape, )),
+ 'global_state': gym.spaces.Box(low=0, high=1, shape=(global_state_shape, )),
+ 'action_mask': gym.spaces.Box(low=0, high=1, shape=(self._tl_num, )),
+ }
+ )
self._value = {
'min': 0,
'max': 1,
- 'dtype': float,
+ 'dtype': np.float32,
}
def _get_tls_feature(self, tl_id: int) -> Dict:
@@ -100,7 +111,7 @@ def _to_agent_processor(self) -> Dict:
tl_obs = padding_obs_by_fearure(tl_obs, self._tl_feature_shape)
tl_obs = [element for lis in tl_obs.values() for element in lis]
agent_obs.append(tl_obs)
- action_num = self._core.info().act_space.value['max']
+ action_num = np.max(self._core.action_space.nvec)
action_mask = [1] * action_num
return {
'global_state': np.array([global_obs] * tl_num),
@@ -114,6 +125,10 @@ def __repr__(self) -> str:
def _details(self) -> str:
return '{}'.format(self._shape)
+ @property
+ def space(self):
+ return self._space
+
def max_dict(dict1: Dict, dict2: Dict) -> Dict:
assert len(dict1) == len(dict2)
@@ -131,15 +146,3 @@ def padding_obs_by_fearure(tl_obs: Dict, tl_feature_shape: Dict) -> Dict:
if len(tl_obs[feature]) < tl_feature_shape[feature]:
tl_obs[feature] += [0] * (tl_feature_shape[feature] - len(tl_obs[feature]))
return tl_obs
-
-
-def squeeze_obs(obs: Dict) -> List:
- assert obs is not None
- if isinstance(obs, dict):
- return [value for key in sorted(obs) for value in squeeze_obs(obs[key])]
- elif isinstance(obs, (tuple, list, set)):
- return [value for item in obs for value in squeeze_obs(item)]
- elif isinstance(obs, (int, float, str)):
- return (obs, )
- else:
- raise ValueError('Cannot process type: {}, {}'.format(type(obs), obs))
diff --git a/smartcross/envs/obs/sumo_obs_runner.py b/smartcross/envs/obs/sumo_obs_runner.py
index e67f41f..4b077a0 100644
--- a/smartcross/envs/obs/sumo_obs_runner.py
+++ b/smartcross/envs/obs/sumo_obs_runner.py
@@ -20,7 +20,7 @@ def _init(self, engine: BaseEnv, cfg: dict) -> None:
Overview:
init the sumo observation helper with the given config file
Arguments:
- - cfg(:obj:`EasyDict`): config, you can refer to `envs/sumo/sumo_env_default_config.yaml`
+ - cfg(:obj:`EasyDict`): config, you can refer to `envs/sumo_wj3_default_config.yaml`
"""
# set self._core and other state variable
self._engine = engine
@@ -45,3 +45,7 @@ def reset(self) -> None:
reset obs runner, and return the initial obs
"""
return to_ndarray(self._obs, dtype=np.float32)
+
+ @property
+ def space(self):
+ return self._core.space
diff --git a/smartcross/envs/reward/sumo_reward.py b/smartcross/envs/reward/sumo_reward.py
index 82fa44e..a38c4ac 100644
--- a/smartcross/envs/reward/sumo_reward.py
+++ b/smartcross/envs/reward/sumo_reward.py
@@ -22,7 +22,7 @@ def _init(self, env: BaseEnv, cfg: Dict) -> None:
Overview:
init the sumo reward environment with the given config file
Arguments:
- - cfg(:obj:`EasyDict`): config, you can refer to `envs/sumo/sumo_env_default_config.yaml`
+ - cfg(:obj:`EasyDict`): config, you can refer to `envs/sumo_wj3_default_config.yaml`
"""
self._env = env
self._cfg = cfg
diff --git a/smartcross/envs/reward/sumo_reward_runner.py b/smartcross/envs/reward/sumo_reward_runner.py
index bbce310..914bac6 100644
--- a/smartcross/envs/reward/sumo_reward_runner.py
+++ b/smartcross/envs/reward/sumo_reward_runner.py
@@ -21,7 +21,7 @@ def _init(self, engine: BaseEnv, cfg: dict) -> None:
Overview:
init the sumo reward environment with the given config file
Arguments:
- - cfg(:obj:`EasyDict`): config, you can refer to `envs/sumo/sumo_env_default_config.yaml`
+ - cfg(:obj:`EasyDict`): config, you can refer to `envs/sumo_wj3_default_config.yaml`
"""
self._engine = engine
self._core = SumoReward(engine, cfg)
diff --git a/smartcross/envs/rl_arterial_7roads/route/1100/2_eg.rou.xml b/smartcross/envs/rl_arterial_7roads/route/1100/2_eg.rou.xml
deleted file mode 100644
index 03f41df..0000000
--- a/smartcross/envs/rl_arterial_7roads/route/1100/2_eg.rou.xml
+++ /dev/null
@@ -1,14490 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/smartcross/envs/sumo_rl_arterial_7roads_default_config.yaml b/smartcross/envs/sumo_arterial7_default_config.yaml
similarity index 85%
rename from smartcross/envs/sumo_rl_arterial_7roads_default_config.yaml
rename to smartcross/envs/sumo_arterial7_default_config.yaml
index b9395bf..fe493b2 100644
--- a/smartcross/envs/sumo_rl_arterial_7roads_default_config.yaml
+++ b/smartcross/envs/sumo_arterial7_default_config.yaml
@@ -1,5 +1,5 @@
env:
- sumocfg_path: 'rl_arterial_7roads/standard.sumocfg'
+ sumocfg_path: 'sumo_arterial_7roads/standard.sumocfg'
gui: False
inference: False
dynamic_flow: False
@@ -19,4 +19,4 @@ env:
reward:
use_centralized_reward: True
reward_type:
- pressure: 0.1
\ No newline at end of file
+ pressure: 1.0
\ No newline at end of file
diff --git a/smartcross/envs/sumo_arterial7_multi_agent_config.yaml b/smartcross/envs/sumo_arterial7_multi_agent_config.yaml
new file mode 100644
index 0000000..4a49cf1
--- /dev/null
+++ b/smartcross/envs/sumo_arterial7_multi_agent_config.yaml
@@ -0,0 +1,22 @@
+env:
+ sumocfg_path: 'sumo_arterial_7roads/standard.sumocfg'
+ gui: False
+ inference: False
+ dynamic_flow: True
+ flow_range: [900, 1900, 100]
+ max_episode_steps: 1600
+ green_duration: 10
+ yellow_duration: 3
+ tls: ['1', '3', '4', '5', '7', '6', '2']
+ obs:
+ obs_type: [phase, traffic_volumn, queue_len]
+ queue_len_ratio: 7.5
+ use_centralized_obs: False
+ padding: True
+ action:
+ action_type: change
+ use_multi_discrete: True
+ reward:
+ use_centralized_reward: True
+ reward_type:
+ pressure: 0.1
\ No newline at end of file
diff --git a/smartcross/envs/rl_arterial_7roads/standard.net.xml b/smartcross/envs/sumo_arterial_7roads/standard.net.xml
similarity index 100%
rename from smartcross/envs/rl_arterial_7roads/standard.net.xml
rename to smartcross/envs/sumo_arterial_7roads/standard.net.xml
diff --git a/smartcross/envs/rl_arterial_7roads/standard.sumocfg b/smartcross/envs/sumo_arterial_7roads/standard.sumocfg
similarity index 100%
rename from smartcross/envs/rl_arterial_7roads/standard.sumocfg
rename to smartcross/envs/sumo_arterial_7roads/standard.sumocfg
diff --git a/smartcross/envs/sumo_env.py b/smartcross/envs/sumo_env.py
index d4a841f..edc2755 100644
--- a/smartcross/envs/sumo_env.py
+++ b/smartcross/envs/sumo_env.py
@@ -1,6 +1,7 @@
import os
import sys
import time
+import gym
from typing import Dict, Any, List, Tuple, Union
import numpy as np
import random
@@ -8,7 +9,7 @@
import traci
from sumolib import checkBinary
-from ding.envs import BaseEnv, BaseEnvTimestep, BaseEnvInfo
+from ding.envs import BaseEnv, BaseEnvTimestep # , BaseEnvInfo
from ding.utils import ENV_REGISTRY
from ding.torch_utils import to_ndarray, to_tensor
from smartcross.envs.crossing import Crossing
@@ -46,6 +47,9 @@ def __init__(self, cfg: Dict) -> None:
self._action_runner = SumoActionRunner(self, cfg.action)
self._reward_runner = SumoRewardRunner(self, cfg.reward)
self.close()
+ self._observation_space = self._obs_runner.space
+ self._action_space = self._action_runner.space
+ self._reward_space = gym.spaces.Box(low=-float('inf'), high=0, shape=(1, ), dtype=np.float32)
def _launch_env(self, gui: bool = False) -> None:
# set gui=True can get visualization simulation result with sumo, apply gui=False in the normal training
@@ -111,6 +115,8 @@ def reset(self) -> Any:
self._action_runner.reset()
self._obs_runner.reset()
self._reward_runner.reset()
+ if self._launch_env_flag:
+ self.close()
self._launch_env(self._gui)
for tl in self._cfg.tls:
self._crosses[tl] = Crossing(tl, self)
@@ -146,19 +152,31 @@ def close(self) -> None:
self._launch_env_flag = False
traci.close()
- def info(self) -> 'BaseEnvInfo':
- info_data = {
- 'agent_num': len(self._tls),
- 'obs_space': self._obs_runner.info,
- 'act_space': self._action_runner.info,
- 'rew_space': len(self._tls),
- 'use_wrappers': False
- }
- return BaseEnvInfo(**info_data)
+ # def info(self) -> 'BaseEnvInfo':
+ # info_data = {
+ # 'agent_num': len(self._tls),
+ # 'obs_space': self._obs_runner.info,
+ # 'act_space': self._action_runner.info,
+ # 'rew_space': self._reward_runner.info,
+ # 'use_wrappers': False
+ # }
+ # return BaseEnvInfo(**info_data)
def __repr__(self) -> str:
return "SumoEnv"
+ @property
+ def observation_space(self) -> gym.spaces.Space:
+ return self._observation_space
+
+ @property
+ def action_space(self) -> gym.spaces.Space:
+ return self._action_space
+
+ @property
+ def reward_space(self) -> gym.spaces.Space:
+ return self._reward_space
+
@property
def vehicle_info(self) -> Dict[str, Dict]:
return self._vehicle_info_dict
diff --git a/smartcross/envs/wj3/detector/detector1_lane_end.add.xml b/smartcross/envs/sumo_wj3/detector/detector1_lane_end.add.xml
similarity index 100%
rename from smartcross/envs/wj3/detector/detector1_lane_end.add.xml
rename to smartcross/envs/sumo_wj3/detector/detector1_lane_end.add.xml
diff --git a/smartcross/envs/wj3/detector/detector1_lane_start.add.xml b/smartcross/envs/sumo_wj3/detector/detector1_lane_start.add.xml
similarity index 100%
rename from smartcross/envs/wj3/detector/detector1_lane_start.add.xml
rename to smartcross/envs/sumo_wj3/detector/detector1_lane_start.add.xml
diff --git a/smartcross/envs/wj3/detector/detector2_length_49_freq_60.add.xml b/smartcross/envs/sumo_wj3/detector/detector2_length_49_freq_60.add.xml
similarity index 100%
rename from smartcross/envs/wj3/detector/detector2_length_49_freq_60.add.xml
rename to smartcross/envs/sumo_wj3/detector/detector2_length_49_freq_60.add.xml
diff --git a/smartcross/envs/wj3/detector/detector2_length_7_freq_1.add.xml b/smartcross/envs/sumo_wj3/detector/detector2_length_7_freq_1.add.xml
similarity index 100%
rename from smartcross/envs/wj3/detector/detector2_length_7_freq_1.add.xml
rename to smartcross/envs/sumo_wj3/detector/detector2_length_7_freq_1.add.xml
diff --git a/smartcross/envs/wj3/detector/detector3.add.xml b/smartcross/envs/sumo_wj3/detector/detector3.add.xml
similarity index 100%
rename from smartcross/envs/wj3/detector/detector3.add.xml
rename to smartcross/envs/sumo_wj3/detector/detector3.add.xml
diff --git a/smartcross/envs/wj3/edge_measure.add.xml b/smartcross/envs/sumo_wj3/edge_measure.add.xml
similarity index 100%
rename from smartcross/envs/wj3/edge_measure.add.xml
rename to smartcross/envs/sumo_wj3/edge_measure.add.xml
diff --git a/smartcross/envs/wj3/rl_wj.ini b/smartcross/envs/sumo_wj3/rl_wj.ini
similarity index 100%
rename from smartcross/envs/wj3/rl_wj.ini
rename to smartcross/envs/sumo_wj3/rl_wj.ini
diff --git a/smartcross/envs/wj3/rl_wj.net.xml b/smartcross/envs/sumo_wj3/rl_wj.net.xml
similarity index 100%
rename from smartcross/envs/wj3/rl_wj.net.xml
rename to smartcross/envs/sumo_wj3/rl_wj.net.xml
diff --git a/smartcross/envs/wj3/rl_wj.sumocfg b/smartcross/envs/sumo_wj3/rl_wj.sumocfg
similarity index 100%
rename from smartcross/envs/wj3/rl_wj.sumocfg
rename to smartcross/envs/sumo_wj3/rl_wj.sumocfg
diff --git a/smartcross/envs/wj3/summary.xml b/smartcross/envs/sumo_wj3/summary.xml
similarity index 100%
rename from smartcross/envs/wj3/summary.xml
rename to smartcross/envs/sumo_wj3/summary.xml
diff --git a/smartcross/envs/wj3/testflow.rou.xml b/smartcross/envs/sumo_wj3/testflow.rou.xml
similarity index 100%
rename from smartcross/envs/wj3/testflow.rou.xml
rename to smartcross/envs/sumo_wj3/testflow.rou.xml
diff --git a/smartcross/envs/wj3/testflow.trip.xml b/smartcross/envs/sumo_wj3/testflow.trip.xml
similarity index 100%
rename from smartcross/envs/wj3/testflow.trip.xml
rename to smartcross/envs/sumo_wj3/testflow.trip.xml
diff --git a/smartcross/envs/wj3/testflow.turndefs.xml b/smartcross/envs/sumo_wj3/testflow.turndefs.xml
similarity index 100%
rename from smartcross/envs/wj3/testflow.turndefs.xml
rename to smartcross/envs/sumo_wj3/testflow.turndefs.xml
diff --git a/smartcross/envs/sumo_wj3_default_config.yaml b/smartcross/envs/sumo_wj3_default_config.yaml
index 6553ef6..f342faa 100644
--- a/smartcross/envs/sumo_wj3_default_config.yaml
+++ b/smartcross/envs/sumo_wj3_default_config.yaml
@@ -1,5 +1,5 @@
env:
- sumocfg_path: 'wj3/rl_wj.sumocfg'
+ sumocfg_path: 'sumo_wj3/rl_wj.sumocfg'
gui: False
inference: False
max_episode_steps: 1500
diff --git a/smartcross/envs/sumo_wj3_multi_agent_config.yaml b/smartcross/envs/sumo_wj3_multi_agent_config.yaml
new file mode 100644
index 0000000..a86dfd9
--- /dev/null
+++ b/smartcross/envs/sumo_wj3_multi_agent_config.yaml
@@ -0,0 +1,24 @@
+env:
+ sumocfg_path: 'sumo_wj3/rl_wj.sumocfg'
+ gui: False
+ inference: False
+ max_episode_steps: 1500
+ green_duration: 10
+ yellow_duration: 3
+ tls: ['ftddj_wjj', 'ftddj_frj', 'htddj_gsndj']
+ obs:
+ obs_type: [phase, lane_pos_vec]
+ lane_grid_num: 10
+ traffic_volumn_ratio: 7.5
+ use_centralized_obs: False
+ padding: True
+ action:
+ action_type: change
+ use_multi_discrete: True
+ reward:
+ use_centralized_reward: True
+ reward_type:
+ queue_len: 1.0
+ # wait_time: 1.0
+ # delay_time: 1.0
+ # pressure: 1.0
\ No newline at end of file
diff --git a/smartcross/envs/tests/test_cityflow_env.py b/smartcross/envs/tests/test_cityflow_env.py
new file mode 100644
index 0000000..b613544
--- /dev/null
+++ b/smartcross/envs/tests/test_cityflow_env.py
@@ -0,0 +1,43 @@
+import os
+import numpy as np
+import pytest
+import torch
+import yaml
+from easydict import EasyDict
+
+from smartcross.envs import CityflowEnv
+
+
+@pytest.fixture(scope='function')
+def setup_config():
+ cfg = dict(
+ obs_type=['phase', 'lane_vehicle_num', 'lane_waiting_vehicle_num'],
+ n_evaluator_episode=1,
+ max_episode_duration=1000,
+ green_duration=30,
+ yellow_duration=5,
+ red_duration=0,
+ stop_value=0,
+ config_path="smartcross/envs/cityflow_grid/cityflow_grid_config.json",
+ )
+ cfg = EasyDict(cfg)
+ return cfg
+
+
+@pytest.mark.envtest
+class TestCityFlowEnv:
+
+ def get_random_action(self, action_space):
+ return action_space.sample()
+
+ def test_naive(self, setup_config):
+ env = CityflowEnv(setup_config)
+ obs = env.reset()
+ assert len(obs) == env.observation_space.shape[0]
+ for i in range(10):
+ action = self.get_random_action(env.action_space)
+ timestep = env.step(action)
+ print(timestep.reward)
+ print('step {} with action {}'.format(i, action))
+ print('end')
+ env.close()
diff --git a/smartcross/envs/tests/test_sumo_env.py b/smartcross/envs/tests/test_sumo_env.py
index bb6fd4b..5c3b6d2 100644
--- a/smartcross/envs/tests/test_sumo_env.py
+++ b/smartcross/envs/tests/test_sumo_env.py
@@ -20,17 +20,16 @@ def setup_config():
class TestSumoEnv:
def get_random_action(self, action_space):
- min, max, shape = action_space.value['min'], action_space.value['max'], action_space.shape
- action = np.random.randint(min, max, shape)
+ action = action_space.sample()
action = [torch.LongTensor([v]) for v in action]
return action
def test_naive(self, setup_config):
env = SumoEnv(setup_config)
obs = env.reset()
- assert (len(obs) == env.info().obs_space.shape)
+ assert (len(obs) == env.observation_space.shape[0])
for i in range(10):
- action = self.get_random_action(env.info().act_space)
+ action = self.get_random_action(env.action_space)
timestep = env.step(action)
print(timestep.reward)
print('step {} with action {}'.format(i, action))
diff --git a/smartcross/policy/default_policy.py b/smartcross/policy/default_policy.py
index f9cf6b2..c5c0e12 100644
--- a/smartcross/policy/default_policy.py
+++ b/smartcross/policy/default_policy.py
@@ -1,11 +1,10 @@
-from typing import Dict, List
+from typing import Dict, List, Any
import torch
import numpy as np
from easydict import EasyDict
import copy
from ding.utils import POLICY_REGISTRY
-from ding.envs.common import EnvElementInfo
@POLICY_REGISTRY.register('smartcross_random')
@@ -13,17 +12,14 @@ class RandomPolicy():
config = dict()
- def __init__(self, act_space: EnvElementInfo) -> None:
+ def __init__(self, act_space: Any) -> None:
self._act_space = act_space
- self._min_val = self._act_space.value['min']
- self._max_val = self._act_space.value['max']
- self._act_shape = act_space.shape
def reset(self, *args, **keargs) -> None:
pass
def get_random_action(self) -> List:
- action = np.random.randint(self._min_val, self._max_val, self._act_shape)
+ action = self._act_space.sample()
action = [torch.LongTensor([v]) for v in action]
return action
@@ -42,16 +38,27 @@ def default_config(cls: type) -> EasyDict:
return cfg
+def get_random_sample_func(act_space):
+
+ def _forward(data: Dict[int, Any], *args, **kwargs) -> Dict[int, Any]:
+ actions = {}
+ for env_id in data:
+ action = act_space.sample()
+ action = [torch.LongTensor([v]) for v in action]
+ actions[env_id] = {'action': action}
+ return actions
+
+ return _forward
+
+
@POLICY_REGISTRY.register('smartcross_fix')
class FixedPolicy():
config = dict()
- def __init__(self, act_space: EnvElementInfo) -> None:
+ def __init__(self, act_space: Any) -> None:
self._act_space = act_space
- self._min_val = self._act_space.value['min']
- self._max_val = self._act_space.value['max']
- self._act_shape = act_space.shape
+ self._nvec = self._act_space.nvec
self._last_act = {}
def reset(self, *args, **keargs) -> None:
@@ -59,10 +66,10 @@ def reset(self, *args, **keargs) -> None:
def get_next_action(self, i: int) -> List:
if i not in self._last_act:
- action = np.zeros(self._act_shape)
+ action = np.zeros(self._act_space.shape)
else:
action = self._last_act[i] + 1
- action[action >= self._max_val] = 0
+ action[action >= self._nvec] = 0
self._last_act[i] = action
action = [torch.LongTensor([v]) for v in action]
return action
diff --git a/smartcross/policy/tests/test_policy.py b/smartcross/policy/tests/test_policy.py
index eb92cdf..81a1d0c 100644
--- a/smartcross/policy/tests/test_policy.py
+++ b/smartcross/policy/tests/test_policy.py
@@ -22,11 +22,11 @@ class TestPolicy:
def test_random_policy(self, setup_env):
env = setup_env
obs = env.reset()
- policy = RandomPolicy(env.info().act_space)
+ policy = RandomPolicy(env.action_space)
for i in range(10):
action = policy.forward({0: obs})
assert 0 in action
- assert len(action[0]['action']) == env.info().act_space.shape
+ assert len(action[0]['action']) == len(env.action_space.nvec)
timestep = env.step(action[0]['action'])
obs = timestep.obs
print(action)
@@ -36,12 +36,12 @@ def test_random_policy(self, setup_env):
def test_fix_policy(self, setup_env):
env = setup_env
obs = env.reset()
- policy = FixedPolicy(env.info().act_space)
+ policy = FixedPolicy(env.action_space)
for i in range(10):
action = policy.forward({0: obs})
assert 0 in action
- assert len(action[0]['action']) == env.info().act_space.shape
- assert action[0]['action'][0].item() == i % env.info().act_space.value['max']
+ assert len(action[0]['action']) == len(env.action_space.nvec)
+ assert action[0]['action'][0].item() == i % env.action_space.nvec[0]
timestep = env.step(action[0]['action'])
obs = timestep.obs
print(action)
diff --git a/smartcross/utils/env_utils.py b/smartcross/utils/env_utils.py
new file mode 100644
index 0000000..08c9338
--- /dev/null
+++ b/smartcross/utils/env_utils.py
@@ -0,0 +1,28 @@
+from typing import Dict, List
+
+
+def squeeze_obs(obs: Dict) -> List:
+ assert obs is not None
+ if isinstance(obs, dict):
+ return [value for key in sorted(obs) for value in squeeze_obs(obs[key])]
+ elif isinstance(obs, (tuple, list, set)):
+ return [value for item in obs for value in squeeze_obs(item)]
+ elif isinstance(obs, (int, float, str)):
+ return (obs, )
+ else:
+ raise ValueError('Cannot process type: {}, {}'.format(type(obs), obs))
+
+
+def get_suffix_num(input: str) -> List:
+ tmp = input.split('_')
+ res = [int(t) for t in tmp[1:]]
+ return res
+
+
+def get_onehot_obs(obs: List, length: int) -> List:
+ res = []
+ for item in obs:
+ onehot = [0] * length
+ onehot[item] = 1
+ res += onehot
+ return res