{ "cells": [ { "cell_type": "code", "execution_count": 1, "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": 2, "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", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
parent_idchild_idadj_from_edge_idadj_to_edge_idfrom_edge_idto_edge_idcondition
0i0u00-571500487_01571500487_01571500487_02571500487_01.32좌회전시
1i2u20571542811_02571542811_01571542810_01.51571542810_02보행신호시
2i3u30571556450_02571556450_01571556452_01571556452_02보행신호시
3i3u31-571500475_01571500475_01571500475_02571500475_01.26보행신호시
4i3u32571540303_02.21571540303_01571540303_02-571540303_02보행신호시
5i6u60571500535_02.18571500535_01571500535_02-571500535_02좌회전시
\n", "
" ], "text/plain": [ " parent_id child_id adj_from_edge_id adj_to_edge_id from_edge_id \\\n", "0 i0 u00 -571500487_01 571500487_01 571500487_02 \n", "1 i2 u20 571542811_02 571542811_01 571542810_01.51 \n", "2 i3 u30 571556450_02 571556450_01 571556452_01 \n", "3 i3 u31 -571500475_01 571500475_01 571500475_02 \n", "4 i3 u32 571540303_02.21 571540303_01 571540303_02 \n", "5 i6 u60 571500535_02.18 571500535_01 571500535_02 \n", "\n", " to_edge_id condition \n", "0 571500487_01.32 좌회전시 \n", "1 571542810_02 보행신호시 \n", "2 571556452_02 보행신호시 \n", "3 571500475_01.26 보행신호시 \n", "4 -571540303_02 보행신호시 \n", "5 -571500535_02 좌회전시 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "self = DailyPreprocessor()\n", "self.load_data()\n", "self.make_match1()\n", "self.make_match2()\n", "self.make_match3()\n", "self.make_match4()\n", "self.make_match5()\n", "self.u_turn = pd.merge(self.u_turn, self.u_condition, on='child_id')\n", "display(self.u_turn)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# p2inc_edge2angle : node_id to inc_edge2angle\n", "p2inc_edge2angle = dict()\n", "# p2out_edge2angle : node_id to out_edge2angle\n", "p2out_edge2angle = dict()\n", "# p2inc_angle2edge : node_id to inc_angle2edge\n", "p2inc_angle2edge = dict()\n", "# p2out_angle2edge : node_id to out_angle2edge\n", "p2out_angle2edge = dict()\n", "for node_id in self.parent_ids:\n", " m5 = self.match5[self.match5.node_id==node_id]\n", " m5 = m5.dropna(subset=['inc_edge_id', 'out_edge_id'])\n", " # inc_edge2angle : inc_edge_id to inc_angle\n", " inc_edge2angle = dict(zip(m5.inc_edge_id, m5.inc_angle.astype(int)))\n", " p2inc_edge2angle[node_id] = inc_edge2angle\n", " # out_edge2angle : out_edge_id to out_angle\n", " out_edge2angle = dict(zip(m5.out_edge_id, m5.out_angle.astype(int)))\n", " p2out_edge2angle[node_id] = out_edge2angle\n", " # inc_angle2edge : inc_angle to inc_edge_id\n", " inc_angle2edge = dict(zip(m5.inc_angle.astype(int), m5.inc_edge_id))\n", " p2inc_angle2edge[node_id] = inc_angle2edge\n", " # out_angle2edge : out_angle to out_edge_id\n", " out_angle2edge = dict(zip(m5.out_angle.astype(int), m5.out_edge_id))\n", " p2out_angle2edge[node_id] = out_angle2edge" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
inter_nophase_noring_typemove_noinc_direout_direinc_angleout_angleinc_edge_idout_edge_idnode_idturn_type
01751A8179000-571542797_02571500487_01i0straight
11751B4001180-571500487_01571542797_02i0straight
21752A7001090-571500487_01571545870_01i0left
31752B3179270-571542797_02571510153_01i0left
41753A6090270571545870_02571510153_01i0straight
51753B1090180571545870_02571542797_02i0left
61754A5270000571510153_02571500487_01i0left
71754B2270090571510153_02571545870_01i0straight
81761A8180356-571542810_01-571542797_02.99i1straight
91761B4359180571542797_02.99571542810_01i1straight
101762A8180356-571542810_01-571542797_02.99i1straight
111762B3180270-571542810_01571543469_01i1left
121763A5270356571543469_02-571542797_02.99i1left
131763B18NaNNaNNaNNaNNaNNaNi1NaN
141771A8179000-571542809_01571542811_01i2left
151771B4000180571542811_02571542809_01i2straight
161772A7000090571542811_02571542107_01i2left
171772B3179270-571542809_01571542809_01i2left
181773A17NaNNaNNaNNaNNaNNaNi2NaN
191773B18NaNNaNNaNNaNNaNNaNi2NaN
201774A5268000-571542809_01571542811_01i2left
211774B1090180571542107_02571542809_01i2left
221781A8180000571540304_02571556450_01i3straight
231781B4000180571556450_02571540304_01i3straight
241782A7000090571556450_02571500475_01i3left
251782B3180270571540304_02571540303_01i3left
261783A5270000571540303_02.21571556450_01i3left
271783B2270090571540303_02.21571500475_01i3straight
281784A6090270-571500475_01571540303_01i3straight
291784B1090180-571500475_01571540304_01i3left
302011A8180000-571500569_01571500583_02i8straight
312011B3180270-571500569_01571500618_01i8left
322012A5270000571500618_02571500583_02i8left
332012B2270090571500618_02571500617_01i8straight
342013A6090270571500617_02571500618_01i8straight
352013B2270090571500618_02571500617_01i8straight
362014A6090270571500617_02571500618_01i8straight
372014B1090180571500617_02571500569_01i8left
382015A7000090571500583_01571500617_01i8left
392015B4000180571500583_01571500569_01i8straight
402021A6090270571510152_02-571510152_01i9straight
412021B2270090571510152_01571510152_01.65i9straight
422022A17NaNNaNNaNNaNNaNNaNi9NaN
432022B18NaNNaNNaNNaNNaNNaNi9NaN
442061A8180000-571511538_02571542073_02i7straight
452061B4000180571542073_01571511538_02i7straight
462062A17NaNNaNNaNNaNNaNNaNi7NaN
472062B18NaNNaNNaNNaNNaNNaNi7NaN
482063A8180000-571511538_02571542073_02i7straight
492063B4000180571542073_01571511538_02i7straight
502064A17NaNNaNNaNNaNNaNNaNi7NaN
512064B18NaNNaNNaNNaNNaNNaNi7NaN
522101A6090270-571542115_01571500535_01i6straight
532101B18NaNNaNNaNNaNNaNNaNi6NaN
542102A5270000571500535_02.18571511538_01i6left
552102B2270090571500535_02.18571542115_01i6straight
562103A7000090571511538_02.121571542115_01i6left
572103B4000180571511538_02.121571500585_01i6straight
582104A8180000571500585_02571511538_01i6straight
592104B3180270571500585_02571500535_01i6left
\n", "
" ], "text/plain": [ " inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n", "0 175 1 A 8 남 북 179 \n", "1 175 1 B 4 북 남 001 \n", "2 175 2 A 7 북 동 001 \n", "3 175 2 B 3 남 서 179 \n", "4 175 3 A 6 동 서 090 \n", "5 175 3 B 1 동 남 090 \n", "6 175 4 A 5 서 북 270 \n", "7 175 4 B 2 서 동 270 \n", "8 176 1 A 8 남 북 180 \n", "9 176 1 B 4 북 남 359 \n", "10 176 2 A 8 남 북 180 \n", "11 176 2 B 3 남 서 180 \n", "12 176 3 A 5 서 북 270 \n", "13 176 3 B 18 NaN NaN NaN \n", "14 177 1 A 8 남 북 179 \n", "15 177 1 B 4 북 남 000 \n", "16 177 2 A 7 북 동 000 \n", "17 177 2 B 3 남 서 179 \n", "18 177 3 A 17 NaN NaN NaN \n", "19 177 3 B 18 NaN NaN NaN \n", "20 177 4 A 5 서 북 268 \n", "21 177 4 B 1 동 남 090 \n", "22 178 1 A 8 남 북 180 \n", "23 178 1 B 4 북 남 000 \n", "24 178 2 A 7 북 동 000 \n", "25 178 2 B 3 남 서 180 \n", "26 178 3 A 5 서 북 270 \n", "27 178 3 B 2 서 동 270 \n", "28 178 4 A 6 동 서 090 \n", "29 178 4 B 1 동 남 090 \n", "30 201 1 A 8 남 북 180 \n", "31 201 1 B 3 남 서 180 \n", "32 201 2 A 5 서 북 270 \n", "33 201 2 B 2 서 동 270 \n", "34 201 3 A 6 동 서 090 \n", "35 201 3 B 2 서 동 270 \n", "36 201 4 A 6 동 서 090 \n", "37 201 4 B 1 동 남 090 \n", "38 201 5 A 7 북 동 000 \n", "39 201 5 B 4 북 남 000 \n", "40 202 1 A 6 동 서 090 \n", "41 202 1 B 2 서 동 270 \n", "42 202 2 A 17 NaN NaN NaN \n", "43 202 2 B 18 NaN NaN NaN \n", "44 206 1 A 8 남 북 180 \n", "45 206 1 B 4 북 남 000 \n", "46 206 2 A 17 NaN NaN NaN \n", "47 206 2 B 18 NaN NaN NaN \n", "48 206 3 A 8 남 북 180 \n", "49 206 3 B 4 북 남 000 \n", "50 206 4 A 17 NaN NaN NaN \n", "51 206 4 B 18 NaN NaN NaN \n", "52 210 1 A 6 동 서 090 \n", "53 210 1 B 18 NaN NaN NaN \n", "54 210 2 A 5 서 북 270 \n", "55 210 2 B 2 서 동 270 \n", "56 210 3 A 7 북 동 000 \n", "57 210 3 B 4 북 남 000 \n", "58 210 4 A 8 남 북 180 \n", "59 210 4 B 3 남 서 180 \n", "\n", " out_angle inc_edge_id out_edge_id node_id turn_type \n", "0 000 -571542797_02 571500487_01 i0 straight \n", "1 180 -571500487_01 571542797_02 i0 straight \n", "2 090 -571500487_01 571545870_01 i0 left \n", "3 270 -571542797_02 571510153_01 i0 left \n", "4 270 571545870_02 571510153_01 i0 straight \n", "5 180 571545870_02 571542797_02 i0 left \n", "6 000 571510153_02 571500487_01 i0 left \n", "7 090 571510153_02 571545870_01 i0 straight \n", "8 356 -571542810_01 -571542797_02.99 i1 straight \n", "9 180 571542797_02.99 571542810_01 i1 straight \n", "10 356 -571542810_01 -571542797_02.99 i1 straight \n", "11 270 -571542810_01 571543469_01 i1 left \n", "12 356 571543469_02 -571542797_02.99 i1 left \n", "13 NaN NaN NaN i1 NaN \n", "14 000 -571542809_01 571542811_01 i2 left \n", "15 180 571542811_02 571542809_01 i2 straight \n", "16 090 571542811_02 571542107_01 i2 left \n", "17 270 -571542809_01 571542809_01 i2 left \n", "18 NaN NaN NaN i2 NaN \n", "19 NaN NaN NaN i2 NaN \n", "20 000 -571542809_01 571542811_01 i2 left \n", "21 180 571542107_02 571542809_01 i2 left \n", "22 000 571540304_02 571556450_01 i3 straight \n", "23 180 571556450_02 571540304_01 i3 straight \n", "24 090 571556450_02 571500475_01 i3 left \n", "25 270 571540304_02 571540303_01 i3 left \n", "26 000 571540303_02.21 571556450_01 i3 left \n", "27 090 571540303_02.21 571500475_01 i3 straight \n", "28 270 -571500475_01 571540303_01 i3 straight \n", "29 180 -571500475_01 571540304_01 i3 left \n", "30 000 -571500569_01 571500583_02 i8 straight \n", "31 270 -571500569_01 571500618_01 i8 left \n", "32 000 571500618_02 571500583_02 i8 left \n", "33 090 571500618_02 571500617_01 i8 straight \n", "34 270 571500617_02 571500618_01 i8 straight \n", "35 090 571500618_02 571500617_01 i8 straight \n", "36 270 571500617_02 571500618_01 i8 straight \n", "37 180 571500617_02 571500569_01 i8 left \n", "38 090 571500583_01 571500617_01 i8 left \n", "39 180 571500583_01 571500569_01 i8 straight \n", "40 270 571510152_02 -571510152_01 i9 straight \n", "41 090 571510152_01 571510152_01.65 i9 straight \n", "42 NaN NaN NaN i9 NaN \n", "43 NaN NaN NaN i9 NaN \n", "44 000 -571511538_02 571542073_02 i7 straight \n", "45 180 571542073_01 571511538_02 i7 straight \n", "46 NaN NaN NaN i7 NaN \n", "47 NaN NaN NaN i7 NaN \n", "48 000 -571511538_02 571542073_02 i7 straight \n", "49 180 571542073_01 571511538_02 i7 straight \n", "50 NaN NaN NaN i7 NaN \n", "51 NaN NaN NaN i7 NaN \n", "52 270 -571542115_01 571500535_01 i6 straight \n", "53 NaN NaN NaN i6 NaN \n", "54 000 571500535_02.18 571511538_01 i6 left \n", "55 090 571500535_02.18 571542115_01 i6 straight \n", "56 090 571511538_02.121 571542115_01 i6 left \n", "57 180 571511538_02.121 571500585_01 i6 straight \n", "58 000 571500585_02 571511538_01 i6 straight \n", "59 270 571500585_02 571500535_01 i6 left " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "self.match5" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['i0', 'i1', 'i2', 'i3', 'i6', 'i7', 'i8', 'i9']\n" ] } ], "source": [ "print(self.parent_ids)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{180: '-571542810_01', 359: '571542797_02.99', 270: '571543469_02'}" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "{'-571542810_01': 180, '571542797_02.99': 359, '571543469_02': 270}" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "parent_id = self.parent_ids[1]\n", "display(p2inc_angle2edge[parent_id])\n", "display(p2inc_edge2angle[parent_id])" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
parent_idchild_idadj_from_edge_idadj_to_edge_idfrom_edge_idto_edge_idcondition
0i0u00-571500487_01571500487_01571500487_02571500487_01.32좌회전시
1i2u20571542811_02571542811_01571542810_01.51571542810_02보행신호시
2i3u30571556450_02571556450_01571556452_01571556452_02보행신호시
3i3u31-571500475_01571500475_01571500475_02571500475_01.26보행신호시
4i3u32571540303_02.21571540303_01571540303_02-571540303_02보행신호시
5i6u60571500535_02.18571500535_01571500535_02-571500535_02좌회전시
\n", "
" ], "text/plain": [ " parent_id child_id adj_from_edge_id adj_to_edge_id from_edge_id \\\n", "0 i0 u00 -571500487_01 571500487_01 571500487_02 \n", "1 i2 u20 571542811_02 571542811_01 571542810_01.51 \n", "2 i3 u30 571556450_02 571556450_01 571556452_01 \n", "3 i3 u31 -571500475_01 571500475_01 571500475_02 \n", "4 i3 u32 571540303_02.21 571540303_01 571540303_02 \n", "5 i6 u60 571500535_02.18 571500535_01 571500535_02 \n", "\n", " to_edge_id condition \n", "0 571500487_01.32 좌회전시 \n", "1 571542810_02 보행신호시 \n", "2 571556452_02 보행신호시 \n", "3 571500475_01.26 보행신호시 \n", "4 -571540303_02 보행신호시 \n", "5 -571500535_02 좌회전시 " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "self.u_turn" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Unnamed: 0inter_nophas_Aphas_Bmove_Amove_B
001751184
111752273
221753361
331753462
441754452
551761184
661762283
7717633518
881771184
991772273
1010177331718
11111774451
12121781184
13131782273
14141783352
15151784461
16162011183
17172012252
18182013362
19192014461
20202015574
21212021162
2222202221718
23232061184
2424206221718
25252063384
2626206441718
272721011618
28282101262
29292102252
30302103374
31312104483
\n", "
" ], "text/plain": [ " Unnamed: 0 inter_no phas_A phas_B move_A move_B\n", "0 0 175 1 1 8 4\n", "1 1 175 2 2 7 3\n", "2 2 175 3 3 6 1\n", "3 3 175 3 4 6 2\n", "4 4 175 4 4 5 2\n", "5 5 176 1 1 8 4\n", "6 6 176 2 2 8 3\n", "7 7 176 3 3 5 18\n", "8 8 177 1 1 8 4\n", "9 9 177 2 2 7 3\n", "10 10 177 3 3 17 18\n", "11 11 177 4 4 5 1\n", "12 12 178 1 1 8 4\n", "13 13 178 2 2 7 3\n", "14 14 178 3 3 5 2\n", "15 15 178 4 4 6 1\n", "16 16 201 1 1 8 3\n", "17 17 201 2 2 5 2\n", "18 18 201 3 3 6 2\n", "19 19 201 4 4 6 1\n", "20 20 201 5 5 7 4\n", "21 21 202 1 1 6 2\n", "22 22 202 2 2 17 18\n", "23 23 206 1 1 8 4\n", "24 24 206 2 2 17 18\n", "25 25 206 3 3 8 4\n", "26 26 206 4 4 17 18\n", "27 27 210 1 1 6 18\n", "28 28 210 1 2 6 2\n", "29 29 210 2 2 5 2\n", "30 30 210 3 3 7 4\n", "31 31 210 4 4 8 3" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "self.match1" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
inter_nophase_noring_typemove_noinc_direout_direinc_angleout_angleinc_edge_idout_edge_idnode_idturn_type
01751A8179000-571542797_02571500487_01i0straight
11751B4001180-571500487_01571542797_02i0straight
21752A7001090-571500487_01571545870_01i0left
31752B3179270-571542797_02571510153_01i0left
41753A6090270571545870_02571510153_01i0straight
51753B1090180571545870_02571542797_02i0left
61754A5270000571510153_02571500487_01i0left
71754B2270090571510153_02571545870_01i0straight
81761A8180356-571542810_01-571542797_02.99i1straight
91761B4359180571542797_02.99571542810_01i1straight
101762A8180356-571542810_01-571542797_02.99i1straight
111762B3180270-571542810_01571543469_01i1left
121763A5270356571543469_02-571542797_02.99i1left
131763B18NaNNaNNaNNaNNaNNaNi1NaN
141771A8179000-571542809_01571542811_01i2left
151771B4000180571542811_02571542809_01i2straight
161772A7000090571542811_02571542107_01i2left
171772B3179270-571542809_01571542809_01i2left
181773A17NaNNaNNaNNaNNaNNaNi2NaN
191773B18NaNNaNNaNNaNNaNNaNi2NaN
201774A5268000-571542809_01571542811_01i2left
211774B1090180571542107_02571542809_01i2left
221781A8180000571540304_02571556450_01i3straight
231781B4000180571556450_02571540304_01i3straight
241782A7000090571556450_02571500475_01i3left
251782B3180270571540304_02571540303_01i3left
261783A5270000571540303_02.21571556450_01i3left
271783B2270090571540303_02.21571500475_01i3straight
281784A6090270-571500475_01571540303_01i3straight
291784B1090180-571500475_01571540304_01i3left
302011A8180000-571500569_01571500583_02i8straight
312011B3180270-571500569_01571500618_01i8left
322012A5270000571500618_02571500583_02i8left
332012B2270090571500618_02571500617_01i8straight
342013A6090270571500617_02571500618_01i8straight
352013B2270090571500618_02571500617_01i8straight
362014A6090270571500617_02571500618_01i8straight
372014B1090180571500617_02571500569_01i8left
382015A7000090571500583_01571500617_01i8left
392015B4000180571500583_01571500569_01i8straight
402021A6090270571510152_02-571510152_01i9straight
412021B2270090571510152_01571510152_01.65i9straight
422022A17NaNNaNNaNNaNNaNNaNi9NaN
432022B18NaNNaNNaNNaNNaNNaNi9NaN
442061A8180000-571511538_02571542073_02i7straight
452061B4000180571542073_01571511538_02i7straight
462062A17NaNNaNNaNNaNNaNNaNi7NaN
472062B18NaNNaNNaNNaNNaNNaNi7NaN
482063A8180000-571511538_02571542073_02i7straight
492063B4000180571542073_01571511538_02i7straight
502064A17NaNNaNNaNNaNNaNNaNi7NaN
512064B18NaNNaNNaNNaNNaNNaNi7NaN
522101A6090270-571542115_01571500535_01i6straight
532101B18NaNNaNNaNNaNNaNNaNi6NaN
542102A5270000571500535_02.18571511538_01i6left
552102B2270090571500535_02.18571542115_01i6straight
562103A7000090571511538_02.121571542115_01i6left
572103B4000180571511538_02.121571500585_01i6straight
582104A8180000571500585_02571511538_01i6straight
592104B3180270571500585_02571500535_01i6left
\n", "
" ], "text/plain": [ " inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n", "0 175 1 A 8 남 북 179 \n", "1 175 1 B 4 북 남 001 \n", "2 175 2 A 7 북 동 001 \n", "3 175 2 B 3 남 서 179 \n", "4 175 3 A 6 동 서 090 \n", "5 175 3 B 1 동 남 090 \n", "6 175 4 A 5 서 북 270 \n", "7 175 4 B 2 서 동 270 \n", "8 176 1 A 8 남 북 180 \n", "9 176 1 B 4 북 남 359 \n", "10 176 2 A 8 남 북 180 \n", "11 176 2 B 3 남 서 180 \n", "12 176 3 A 5 서 북 270 \n", "13 176 3 B 18 NaN NaN NaN \n", "14 177 1 A 8 남 북 179 \n", "15 177 1 B 4 북 남 000 \n", "16 177 2 A 7 북 동 000 \n", "17 177 2 B 3 남 서 179 \n", "18 177 3 A 17 NaN NaN NaN \n", "19 177 3 B 18 NaN NaN NaN \n", "20 177 4 A 5 서 북 268 \n", "21 177 4 B 1 동 남 090 \n", "22 178 1 A 8 남 북 180 \n", "23 178 1 B 4 북 남 000 \n", "24 178 2 A 7 북 동 000 \n", "25 178 2 B 3 남 서 180 \n", "26 178 3 A 5 서 북 270 \n", "27 178 3 B 2 서 동 270 \n", "28 178 4 A 6 동 서 090 \n", "29 178 4 B 1 동 남 090 \n", "30 201 1 A 8 남 북 180 \n", "31 201 1 B 3 남 서 180 \n", "32 201 2 A 5 서 북 270 \n", "33 201 2 B 2 서 동 270 \n", "34 201 3 A 6 동 서 090 \n", "35 201 3 B 2 서 동 270 \n", "36 201 4 A 6 동 서 090 \n", "37 201 4 B 1 동 남 090 \n", "38 201 5 A 7 북 동 000 \n", "39 201 5 B 4 북 남 000 \n", "40 202 1 A 6 동 서 090 \n", "41 202 1 B 2 서 동 270 \n", "42 202 2 A 17 NaN NaN NaN \n", "43 202 2 B 18 NaN NaN NaN \n", "44 206 1 A 8 남 북 180 \n", "45 206 1 B 4 북 남 000 \n", "46 206 2 A 17 NaN NaN NaN \n", "47 206 2 B 18 NaN NaN NaN \n", "48 206 3 A 8 남 북 180 \n", "49 206 3 B 4 북 남 000 \n", "50 206 4 A 17 NaN NaN NaN \n", "51 206 4 B 18 NaN NaN NaN \n", "52 210 1 A 6 동 서 090 \n", "53 210 1 B 18 NaN NaN NaN \n", "54 210 2 A 5 서 북 270 \n", "55 210 2 B 2 서 동 270 \n", "56 210 3 A 7 북 동 000 \n", "57 210 3 B 4 북 남 000 \n", "58 210 4 A 8 남 북 180 \n", "59 210 4 B 3 남 서 180 \n", "\n", " out_angle inc_edge_id out_edge_id node_id turn_type \n", "0 000 -571542797_02 571500487_01 i0 straight \n", "1 180 -571500487_01 571542797_02 i0 straight \n", "2 090 -571500487_01 571545870_01 i0 left \n", "3 270 -571542797_02 571510153_01 i0 left \n", "4 270 571545870_02 571510153_01 i0 straight \n", "5 180 571545870_02 571542797_02 i0 left \n", "6 000 571510153_02 571500487_01 i0 left \n", "7 090 571510153_02 571545870_01 i0 straight \n", "8 356 -571542810_01 -571542797_02.99 i1 straight \n", "9 180 571542797_02.99 571542810_01 i1 straight \n", "10 356 -571542810_01 -571542797_02.99 i1 straight \n", "11 270 -571542810_01 571543469_01 i1 left \n", "12 356 571543469_02 -571542797_02.99 i1 left \n", "13 NaN NaN NaN i1 NaN \n", "14 000 -571542809_01 571542811_01 i2 left \n", "15 180 571542811_02 571542809_01 i2 straight \n", "16 090 571542811_02 571542107_01 i2 left \n", "17 270 -571542809_01 571542809_01 i2 left \n", "18 NaN NaN NaN i2 NaN \n", "19 NaN NaN NaN i2 NaN \n", "20 000 -571542809_01 571542811_01 i2 left \n", "21 180 571542107_02 571542809_01 i2 left \n", "22 000 571540304_02 571556450_01 i3 straight \n", "23 180 571556450_02 571540304_01 i3 straight \n", "24 090 571556450_02 571500475_01 i3 left \n", "25 270 571540304_02 571540303_01 i3 left \n", "26 000 571540303_02.21 571556450_01 i3 left \n", "27 090 571540303_02.21 571500475_01 i3 straight \n", "28 270 -571500475_01 571540303_01 i3 straight \n", "29 180 -571500475_01 571540304_01 i3 left \n", "30 000 -571500569_01 571500583_02 i8 straight \n", "31 270 -571500569_01 571500618_01 i8 left \n", "32 000 571500618_02 571500583_02 i8 left \n", "33 090 571500618_02 571500617_01 i8 straight \n", "34 270 571500617_02 571500618_01 i8 straight \n", "35 090 571500618_02 571500617_01 i8 straight \n", "36 270 571500617_02 571500618_01 i8 straight \n", "37 180 571500617_02 571500569_01 i8 left \n", "38 090 571500583_01 571500617_01 i8 left \n", "39 180 571500583_01 571500569_01 i8 straight \n", "40 270 571510152_02 -571510152_01 i9 straight \n", "41 090 571510152_01 571510152_01.65 i9 straight \n", "42 NaN NaN NaN i9 NaN \n", "43 NaN NaN NaN i9 NaN \n", "44 000 -571511538_02 571542073_02 i7 straight \n", "45 180 571542073_01 571511538_02 i7 straight \n", "46 NaN NaN NaN i7 NaN \n", "47 NaN NaN NaN i7 NaN \n", "48 000 -571511538_02 571542073_02 i7 straight \n", "49 180 571542073_01 571511538_02 i7 straight \n", "50 NaN NaN NaN i7 NaN \n", "51 NaN NaN NaN i7 NaN \n", "52 270 -571542115_01 571500535_01 i6 straight \n", "53 NaN NaN NaN i6 NaN \n", "54 000 571500535_02.18 571511538_01 i6 left \n", "55 090 571500535_02.18 571542115_01 i6 straight \n", "56 090 571511538_02.121 571542115_01 i6 left \n", "57 180 571511538_02.121 571500585_01 i6 straight \n", "58 000 571500585_02 571511538_01 i6 straight \n", "59 270 571500585_02 571500535_01 i6 left " ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "self.match5" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "i2 u20 보행신호시\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
inter_nophase_noring_typemove_noinc_direout_direinc_angleout_angleinc_edge_idout_edge_idnode_idturn_type
01771A8179000-571542809_01571542811_01u20left
11771B4000180571542811_02571542809_01u20straight
21772A7000090571542811_02571542107_01u20left
31772B3179270-571542809_01571542809_01u20left
41774A5268000-571542809_01571542811_01u20left
51774B1090180571542107_02571542809_01u20left
\n", "
" ], "text/plain": [ " inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n", "0 177 1 A 8 남 북 179 \n", "1 177 1 B 4 북 남 000 \n", "2 177 2 A 7 북 동 000 \n", "3 177 2 B 3 남 서 179 \n", "4 177 4 A 5 서 북 268 \n", "5 177 4 B 1 동 남 090 \n", "\n", " out_angle inc_edge_id out_edge_id node_id turn_type \n", "0 000 -571542809_01 571542811_01 u20 left \n", "1 180 571542811_02 571542809_01 u20 straight \n", "2 090 571542811_02 571542107_01 u20 left \n", "3 270 -571542809_01 571542809_01 u20 left \n", "4 000 -571542809_01 571542811_01 u20 left \n", "5 180 571542107_02 571542809_01 u20 left " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "0\n", "[-360 -270 -181 -92 0 90 179 268 360 450 539 628]\n", "[ 90 179 268 360 450 539 628]\n", "90\n", "571542107_02\n", "[-360 -270 -180 -90 0 90 180 270 360 450 540 630]\n", "[-360 -270 -180 -90]\n", "270\n", "571542809_01\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
inter_nophase_noring_typemove_noinc_direout_direinc_angleout_angleinc_edge_idout_edge_idnode_idturn_type
01771A8179000NaNNaNu20left
11771B4000180NaNNaNu20straight
21772A7000090NaNNaNu20left
31772B3179270NaNNaNu20left
41774A5268000NaNNaNu20left
51774B1090180571542810_01.51571542810_02u20left
\n", "
" ], "text/plain": [ " inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n", "0 177 1 A 8 남 북 179 \n", "1 177 1 B 4 북 남 000 \n", "2 177 2 A 7 북 동 000 \n", "3 177 2 B 3 남 서 179 \n", "4 177 4 A 5 서 북 268 \n", "5 177 4 B 1 동 남 090 \n", "\n", " out_angle inc_edge_id out_edge_id node_id turn_type \n", "0 000 NaN NaN u20 left \n", "1 180 NaN NaN u20 straight \n", "2 090 NaN NaN u20 left \n", "3 270 NaN NaN u20 left \n", "4 000 NaN NaN u20 left \n", "5 180 571542810_01.51 571542810_02 u20 left " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "i = 1\n", "row = self.u_turn.iloc[i]\n", "\n", "parent_id = row.parent_id\n", "child_id = row.child_id\n", "condition = row.condition\n", "inc_edge_id = row.from_edge_id\n", "out_edge_id = row.to_edge_id\n", "adj_from_edge_id = row.adj_from_edge_id\n", "\n", "# match5에서 부모노드id에 해당하는 행들을 가져옴 (cmatch)\n", "cmatch = self.match5.copy()[self.match5.node_id==parent_id] # match dataframe for a child node\n", "cmatch = cmatch.dropna(subset=['inc_angle', 'out_angle'])\n", "cmatch = cmatch.sort_values(by=['phase_no', 'ring_type']).reset_index(drop=True)\n", "cmatch['node_id'] = child_id\n", "print(parent_id, child_id, condition)\n", "display(cmatch)\n", "\n", "# 헤드엣지가 포함된 행\n", "head_true = cmatch.inc_edge_id==adj_from_edge_id\n", "\n", "# 헤드엣지 각도\n", "inc_angle_head = p2inc_edge2angle[parent_id][adj_from_edge_id]\n", "print(inc_angle_head)\n", "\n", "# 이격각도\n", "self.angle_separation = 10\n", "\n", "# 진입로 각도 목록\n", "inc_angles = cmatch.inc_angle.astype(int).unique()\n", "inc_angles = np.sort(inc_angles)\n", "inc_angles = list(inc_angles - 360) + list(inc_angles) + list(inc_angles + 360)\n", "inc_angles = np.array(inc_angles)\n", "print(inc_angles)\n", "\n", "# 보행신호시의 진입로 각도\n", "inc_angles_left = inc_angles[inc_angles >= inc_angle_head + self.angle_separation]\n", "inc_angle_pedes = np.sort(inc_angles_left)[0] % 360\n", "print(inc_angles_left)\n", "print(inc_angle_pedes)\n", "\n", "# 보행신호시의 진입로 엣지id\n", "inc_angle2edge = p2inc_angle2edge[parent_id]\n", "inc_edge_id_pedes = inc_angle2edge[inc_angle_pedes]\n", "print(inc_edge_id_pedes)\n", "\n", "# 진출로 각도 목록\n", "out_angles = cmatch.out_angle.astype(int).unique()\n", "out_angles = np.sort(out_angles)\n", "out_angles = list(out_angles - 360) + list(out_angles) + list(out_angles + 360)\n", "out_angles = np.array(out_angles)\n", "print(out_angles)\n", "\n", "# 보행신호시의 진입로 각도\n", "out_angles_right = out_angles[out_angles <= inc_angle_head - self.angle_separation]\n", "out_angle_pedes = np.sort(out_angles_right)[-1] % 360\n", "print(out_angles_right)\n", "\n", "print(out_angle_pedes)\n", "\n", "# 보행신호시의 진입로 엣지id\n", "out_angle2edge = p2out_angle2edge[parent_id]\n", "out_edge_id_pedes = out_angle2edge[out_angle_pedes]\n", "print(out_edge_id_pedes)\n", "\n", "# 보행신호시 조건\n", "pedes_flag = (cmatch.inc_edge_id==inc_edge_id_pedes) & (cmatch.out_edge_id==out_edge_id_pedes)\n", "\n", "# 좌회전시 조건\n", "right_flag = head_true & (cmatch.turn_type=='left')\n", "\n", "# 보행신호시/좌회전시 진입/진출 엣지id 배정\n", "cmatch[['inc_edge_id', 'out_edge_id']] = np.nan\n", "if condition == \"보행신호시\":\n", " cmatch.loc[pedes_flag, ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n", "elif condition == \"좌회전시\":\n", " cmatch.loc[right_flag, ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n", "\n", "display(cmatch)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# 각 uturn node에 대하여 (inc_edge_id, out_edge_id) 부여\n", "cmatches = []\n", "for _, row in self.uturn.iterrows():\n", " child_id = row.child_id\n", " parent_id = row.parent_id\n", " dire = row.direction\n", " condition = row.condition\n", " inc_edge_id = row.inc_edge_id\n", " out_edge_id = row.out_edge_id\n", "\n", " print(parent_id, condition)\n", "\n", " # match5에서 부모노드id에 해당하는 행들을 가져옴 (cmatch)\n", " cmatch = self.match5.copy()[self.match5.node_id==parent_id] # match dataframe for a child node\n", " cmatch = cmatch.sort_values(by=['phase_no', 'ring_type']).reset_index(drop=True)\n", " cmatch['node_id'] = child_id\n", " cmatch[['inc_edge_id', 'out_edge_id']] = np.nan\n", " display(cmatch)\n", "\n", " # 보행신호시/좌회전시 진입/진출방향\n", " ind = self.dires.index(dire)\n", " inc_dire_pedes = self.dires[(ind + 2) % len(self.dires)]\n", " out_dire_pedes = self.dires[(ind - 2) % len(self.dires)]\n", " inc_dire_right = dire\n", " out_dire_right = self.dires[(ind + 2) % len(self.dires)]\n", "\n", " if condition == '보행신호시':\n", " print(inc_dire_pedes, out_dire_pedes)\n", " else:\n", " print(inc_dire_right, out_dire_right)\n", "\n", " # 보행신호시/좌회전시 조건\n", " pedes_exists = (cmatch.inc_dire==inc_dire_pedes) & (cmatch.out_dire==out_dire_pedes)\n", " right_exists = (cmatch.inc_dire==inc_dire_right) & (cmatch.out_dire==out_dire_right)\n", "\n", " # 보행신호시/좌회전시 진입/진출 엣지id 배정\n", " ind = self.dires.index(dire)\n", " if condition == \"보행신호시\":\n", " cmatch.loc[pedes_exists, ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n", " elif condition == \"좌회전시\":\n", " cmatch.loc[right_exists, ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n", " display(cmatch)\n", "\n", " # 신호없음이동류발생시/보행신호이동류발생시 조건\n", " all_redsigns = cmatch.move_no == 18\n", " crosswalk_on = cmatch.move_no == 17\n", "\n", " # 만약 어떤 유턴신호도 배정되지 않았다면\n", " # 좌회전시 → 보행신호시 → 보행신호이동류발생시 → 신호없음이동류발생시 순으로 진입/진출 엣지id 배정\n", " uturn_not_assigned = cmatch[['inc_edge_id','out_edge_id']].isna().any(axis=1).all()\n", " if uturn_not_assigned:\n", " # 좌회전시\n", " if right_exists.any():\n", " cmatch.loc[right_exists, ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n", " # 보행신호시\n", " elif pedes_exists.any():\n", " cmatch.loc[pedes_exists, ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n", " # 보행신호이동류(17) 발생시\n", " elif crosswalk_on.any():\n", " cmatch.loc[crosswalk_on & (cmatch.out_dire!=dire), ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n", " # 신호없음이동류(18) 발생시\n", " elif all_redsigns.any():\n", " cmatch.loc[all_redsigns & (cmatch.out_dire!=dire), ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n", " display(cmatch)\n", "cmatches.append(cmatch)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "'''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`.'''" ] } ], "metadata": { "kernelspec": { "display_name": "sts", "language": "python", "name": "sts" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.10" } }, "nbformat": 4, "nbformat_minor": 2 }