{ "cells": [ { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "import os\n", "import pandas as pd\n", "import numpy as np\n", "import sys\n", "sys.path.append('../../Scripts')\n", "from preprocess_daily import DailyPreprocessor\n", "from generate_signals import SignalGenerator" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "비보호좌회전, 신호우회전, 유턴\n", "\n", "줄임말 목록\n", "- `i` : 교차로번호, `inter_no`\n", "- `f` : 진입, from, `inc_edge_id`\n", "- `t` : 진출, to, `out_edge_id`\n", "- `vec` : 방향벡터, unit vector (`np.array([0.6, 0.8])`)\n", "- `dire` : 방위, direction (동, 서, 남, 북, 북동, 북서, 남동, 남서)\n", "- `rvec` : 정방향 방향벡터, unit vector to the right direction (`np.array([0,1])`)\n", "\n", "필요한 객체들 목록\n", "\n", "- `inter2dire2rvec` : `inter_no` $\\mapsto$ `dire2rvec`\n", " - `dire2rvec` : `dire` $\\mapsto$ `rvec`\n", "- `inter2incs` : `inter_no` $\\mapsto$ `inc_edge_ids`\n", "- `inter2outs` : `inter_no` $\\mapsto$ `out_edge_ids`\n", "- `inter2inc2dire` : `inter_no` $\\mapsto$ `int2dire`\n", " - `inc2dire` : `out_edge_id` $\\mapsto$ `dire`\n", "- `inter2out2dire` : `inter_no` $\\mapsto$ `out2dire`\n", " - `out2dire` : `inc_edge_id` $\\mapsto$ `dire`\n", "- `inter2inc2vec` : `inter_no` $\\mapsto$ `int2vec`\n", " - `inc2vec` : `out_edge_id` $\\mapsto$ `vec`\n", "- `inter2out2vec` : `inter_no` $\\mapsto$ `out2vec`\n", " - `out2vec` : `inc_edge_id` $\\mapsto$ `vec`\n", "\n", "좌회전 판단\n", "\n", "Given `inter_no`, `inc_edge_id` and `out_edge_id`, we have `inc_vec = inter2inc2vec[inter_no][inc_edge_id]` and `out_vec = inter2out2vec[inter_no][out_edge_id]`.\n", "Rotate `inc_vec` by 90, 180 and 270 degrees clockwise, to define \n", "`out_vec_left`, `out_vec_straight` and `out_vec_right`.\n", "Define `out_vecs={'right':out_vec_left, 'straight':out_vec_straight, 'right':out_vec_right}`.\n", "Select the key that maximize the similarity of the corresponding value of the key and `inc_vec`." ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1. 데이터를 로드합니다.\n", "1-1. 네트워크가 로드되었습니다.\n", "1-2. 테이블들이 로드되었습니다.\n", "1-3. 네트워크의 모든 clean state requirement들을 체크했습니다.\n", "1-4. 테이블들의 무결성 검사를 완료했습니다.\n", "1-5. 주요 객체 (리스트, 딕셔너리)들을 저장했습니다.\n" ] }, { "data": { "text/html": [ "
\n", " | parent_id | \n", "child_id | \n", "adj_inc_edge_id | \n", "adj_out_edge_id | \n", "inc_edge_id | \n", "out_edge_id | \n", "
---|---|---|---|---|---|---|
0 | \n", "i0 | \n", "u00 | \n", "-571500487_01 | \n", "571500487_01 | \n", "571500487_02 | \n", "571500487_01.32 | \n", "
1 | \n", "i2 | \n", "u20 | \n", "571542811_02 | \n", "571542811_01 | \n", "571542810_01.51 | \n", "571542810_02 | \n", "
2 | \n", "i3 | \n", "u30 | \n", "571556450_02 | \n", "571556450_01 | \n", "571556452_01 | \n", "571556452_02 | \n", "
3 | \n", "i3 | \n", "u31 | \n", "-571500475_01 | \n", "571500475_01 | \n", "571500475_02 | \n", "571500475_01.26 | \n", "
4 | \n", "i3 | \n", "u32 | \n", "571540303_02.21 | \n", "571540303_01 | \n", "571540303_02 | \n", "-571540303_02 | \n", "
5 | \n", "i6 | \n", "u60 | \n", "571500535_02.18 | \n", "571500535_01 | \n", "571500535_02 | \n", "-571500535_02 | \n", "