신호생성 repo (24. 1. 5 ~).
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

5161 lines
166 KiB

{
"cells": [
{
"cell_type": "code",
"execution_count": 68,
"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": "code",
"execution_count": 69,
"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"
]
}
],
"source": [
"self = DailyPreprocessor()\n",
"self.load_data() # 1. 데이터 불러오기\n",
"self.make_match1() # 2-1-1\n",
"self.make_match2() # 2-1-2\n",
"self.make_match3() # 2-1-3\n",
"self.make_match4() # 2-1-4"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [],
"source": [
"self.match5 = self.match4.copy()\n",
"# 진입진출ID 매칭\n",
"for index, row in self.match5.iterrows():\n",
" node_id = self.inter2node[row.inter_no]\n",
" node = self.net.getNode(node_id)\n",
" # 교차로의 모든 (from / to) edges\n",
" inc_edges = [edge for edge in node.getIncoming() if edge.getFunction() == ''] # incoming edges\n",
" out_edges = [edge for edge in node.getOutgoing() if edge.getFunction() == ''] # outgoing edges\n",
" # 교차로의 모든 (from / to) unit vector\n",
" inc_vecs = []\n",
" for inc_edge in inc_edges:\n",
" start = inc_edge.getShape()[-1]\n",
" end = inc_edge.getShape()[-2]\n",
" inc_vec = np.array(end) - np.array(start)\n",
" inc_vec = inc_vec / (inc_vec ** 2).sum() ** 0.5\n",
" inc_vecs.append(inc_vec)\n",
" out_vecs = []\n",
" for out_edge in out_edges:\n",
" start = out_edge.getShape()[0]\n",
" end = out_edge.getShape()[1]\n",
" out_vec = np.array(end) - np.array(start)\n",
" out_vec = out_vec / (out_vec ** 2).sum() ** 0.5\n",
" out_vecs.append(out_vec)\n",
" # 진입각, 진출각 불러오기\n",
" if not pd.isna(row.inc_angle):\n",
" inc_angle = int(row.inc_angle)\n",
" out_angle = int(row.out_angle)\n",
" # 방위각을 일반각으로 가공, 라디안 변환, 단위벡터로 변환\n",
" inc_angle = (90 - inc_angle) % 360\n",
" inc_angle = inc_angle * np.pi / 180.\n",
" inc_vec_true = np.array([np.cos(inc_angle), np.sin(inc_angle)])\n",
" out_angle = (90 - out_angle) % 360\n",
" out_angle = out_angle * np.pi / 180.\n",
" out_vec_true = np.array([np.cos(out_angle), np.sin(out_angle)])\n",
" # 매칭 엣지 반환\n",
" inc_index = np.array([np.dot(inc_vec, inc_vec_true) for inc_vec in inc_vecs]).argmax()\n",
" out_index = np.array([np.dot(out_vec, out_vec_true) for out_vec in out_vecs]).argmax()\n",
" inc_edge_id = inc_edges[inc_index].getID()\n",
" out_edge_id = out_edges[out_index].getID()\n",
" self.match5.at[index, 'inc_edge_id'] = inc_edge_id\n",
" self.match5.at[index, 'out_edge_id'] = out_edge_id\n",
"self.match5['node_id'] = self.match5['inter_no'].map(self.inter2node)\n",
"self.match5 = self.match5.sort_values(by=['inter_no','phase_no','ring_type']).reset_index(drop=True)\n",
"\n",
"# n2io2turn : dictionary that maps node_id to io2turn\n",
"self.n2io2turn = dict()\n",
"for node_id in self.parent_ids:\n",
" turn = self.turn_type[self.turn_type.node_id==node_id]\n",
" io = list(zip(turn.inc_edge_id, turn.out_edge_id))\n",
" # io2turn : dictionary that maps (inc_edge_id, out_edge_id) to turn_type\n",
" io2turn = dict(zip(io, turn.turn_type))\n",
" self.n2io2turn[node_id] = io2turn\n",
"\n",
"# turn_type 지정\n",
"for i, row in self.match5.iterrows():\n",
" node_id = row.node_id\n",
" inc_edge_id = row.inc_edge_id\n",
" out_edge_id = row.out_edge_id\n",
" if not (pd.isna(inc_edge_id) and pd.isna(out_edge_id)):\n",
" turn_type = self.n2io2turn[node_id][(inc_edge_id, out_edge_id)]\n",
" self.match5.at[i, 'turn_type'] = turn_type\n"
]
},
{
"cell_type": "code",
"execution_count": 73,
"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",
"2-1. 매칭 테이블들을 생성했습니다.\n",
"2-2. 비보호우회전(g)을 배정했습니다.\n"
]
}
],
"source": [
"self = DailyPreprocessor() \n",
"self.load_data() # 1\n",
"self.get_matches() # 2\n",
"self.initialize_state() # 2-1"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"i0\n",
"['g', 'r', 'r', 'r', 'g', 'r', 'r', 'r', 'g', 'r', 'r', 'r', 'r', 'r', 'g', 'r', 'r']\n",
"17\n",
"13\n",
"17\n",
"1\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>4</td>\n",
" <td>북</td>\n",
" <td>남</td>\n",
" <td>001</td>\n",
" <td>180</td>\n",
" <td>-571500487_01</td>\n",
" <td>571542797_02</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"1 175 1 B 4 북 남 001 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"1 180 -571500487_01 571542797_02 i0 straight "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>4</td>\n",
" <td>북</td>\n",
" <td>남</td>\n",
" <td>001</td>\n",
" <td>180</td>\n",
" <td>-571500487_01</td>\n",
" <td>571542797_02</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"1 175 1 B 4 북 남 001 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"1 180 -571500487_01 571542797_02 i0 straight "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"3\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>175</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>7</td>\n",
" <td>북</td>\n",
" <td>동</td>\n",
" <td>001</td>\n",
" <td>090</td>\n",
" <td>-571500487_01</td>\n",
" <td>571545870_01</td>\n",
" <td>i0</td>\n",
" <td>left</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"2 175 2 A 7 북 동 001 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"2 090 -571500487_01 571545870_01 i0 left "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"5\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>남</td>\n",
" <td>북</td>\n",
" <td>179</td>\n",
" <td>000</td>\n",
" <td>-571542797_02</td>\n",
" <td>571500487_01</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"0 175 1 A 8 남 북 179 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"0 000 -571542797_02 571500487_01 i0 straight "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"6\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>남</td>\n",
" <td>북</td>\n",
" <td>179</td>\n",
" <td>000</td>\n",
" <td>-571542797_02</td>\n",
" <td>571500487_01</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"0 175 1 A 8 남 북 179 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"0 000 -571542797_02 571500487_01 i0 straight "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"7\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>남</td>\n",
" <td>북</td>\n",
" <td>179</td>\n",
" <td>000</td>\n",
" <td>-571542797_02</td>\n",
" <td>571500487_01</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"0 175 1 A 8 남 북 179 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"0 000 -571542797_02 571500487_01 i0 straight "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"9\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>175</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>3</td>\n",
" <td>남</td>\n",
" <td>서</td>\n",
" <td>179</td>\n",
" <td>270</td>\n",
" <td>-571542797_02</td>\n",
" <td>571510153_01</td>\n",
" <td>i0</td>\n",
" <td>left</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"3 175 2 B 3 남 서 179 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"3 270 -571542797_02 571510153_01 i0 left "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"10\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [inter_no, phase_no, ring_type, move_no, inc_dire, out_dire, inc_angle, out_angle, inc_edge_id, out_edge_id, node_id, turn_type]\n",
"Index: []"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"11\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>175</td>\n",
" <td>4</td>\n",
" <td>B</td>\n",
" <td>2</td>\n",
" <td>서</td>\n",
" <td>동</td>\n",
" <td>270</td>\n",
" <td>090</td>\n",
" <td>571510153_02</td>\n",
" <td>571545870_01</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"7 175 4 B 2 서 동 270 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"7 090 571510153_02 571545870_01 i0 straight "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"12\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>175</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>5</td>\n",
" <td>서</td>\n",
" <td>북</td>\n",
" <td>270</td>\n",
" <td>000</td>\n",
" <td>571510153_02</td>\n",
" <td>571500487_01</td>\n",
" <td>i0</td>\n",
" <td>left</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"6 175 4 A 5 서 북 270 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"6 000 571510153_02 571500487_01 i0 left "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"13\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [inter_no, phase_no, ring_type, move_no, inc_dire, out_dire, inc_angle, out_angle, inc_edge_id, out_edge_id, node_id, turn_type]\n",
"Index: []"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"15\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>175</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>6</td>\n",
" <td>동</td>\n",
" <td>서</td>\n",
" <td>090</td>\n",
" <td>270</td>\n",
" <td>571545870_02</td>\n",
" <td>571510153_01</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"4 175 3 A 6 동 서 090 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"4 270 571545870_02 571510153_01 i0 straight "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"16\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>175</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>1</td>\n",
" <td>동</td>\n",
" <td>남</td>\n",
" <td>090</td>\n",
" <td>180</td>\n",
" <td>571545870_02</td>\n",
" <td>571542797_02</td>\n",
" <td>i0</td>\n",
" <td>left</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"5 175 3 B 1 동 남 090 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"5 180 571545870_02 571542797_02 i0 left "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"parent_id = self.parent_ids[0]\n",
"node = self.net.getNode(parent_id)\n",
"print(parent_id)\n",
"init_state = self.node2init[parent_id]\n",
"print(init_state)\n",
"indices_excluding_g = [i for i in range(len(init_state)) if init_state[i]=='r']\n",
"PLindices = []\n",
"# conns = [(c.getJunctionIndex(), c) for c in node.getConnections()]\n",
"# conns = [c for c in conns if c[0] >= 0]\n",
"# conns = sorted(conns, key=lambda x: x[0])\n",
"conns = [c for c in node.getConnections() if c.getTLLinkIndex() >= 0]\n",
"# print(sorted([conn.getTLLinkIndex() for conn in conns]))\n",
"print(len(conns))\n",
"print(len(indices_excluding_g))\n",
"print(len(init_state))\n",
"for i in indices_excluding_g:\n",
" conn = conns[i]\n",
" inc_edge_id = conn.getFrom().getID()\n",
" out_edge_id = conn.getTo().getID()\n",
" m5 = self.match5[(self.match5.inc_edge_id==inc_edge_id) & (self.match5.out_edge_id==out_edge_id)]\n",
" print(i)\n",
" display(m5)"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"i0\n",
"0\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [inter_no, phase_no, ring_type, move_no, inc_dire, out_dire, inc_angle, out_angle, inc_edge_id, out_edge_id, node_id, turn_type]\n",
"Index: []"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"inter_no 175\n",
"phase_no 1\n",
"ring_type B\n",
"move_no 4\n",
"inc_dire 북\n",
"out_dire 남\n",
"inc_angle 001\n",
"out_angle 180\n",
"inc_edge_id -571500487_01\n",
"out_edge_id 571542797_02\n",
"node_id i0\n",
"turn_type straight\n",
"Name: 1, dtype: object\n",
"1\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>4</td>\n",
" <td>북</td>\n",
" <td>남</td>\n",
" <td>001</td>\n",
" <td>180</td>\n",
" <td>-571500487_01</td>\n",
" <td>571542797_02</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"1 175 1 B 4 북 남 001 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"1 180 -571500487_01 571542797_02 i0 straight "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"inter_no 175\n",
"phase_no 1\n",
"ring_type B\n",
"move_no 4\n",
"inc_dire 북\n",
"out_dire 남\n",
"inc_angle 001\n",
"out_angle 180\n",
"inc_edge_id -571500487_01\n",
"out_edge_id 571542797_02\n",
"node_id i0\n",
"turn_type straight\n",
"Name: 1, dtype: object\n",
"2\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>4</td>\n",
" <td>북</td>\n",
" <td>남</td>\n",
" <td>001</td>\n",
" <td>180</td>\n",
" <td>-571500487_01</td>\n",
" <td>571542797_02</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"1 175 1 B 4 북 남 001 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"1 180 -571500487_01 571542797_02 i0 straight "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"inter_no 175\n",
"phase_no 2\n",
"ring_type A\n",
"move_no 7\n",
"inc_dire 북\n",
"out_dire 동\n",
"inc_angle 001\n",
"out_angle 090\n",
"inc_edge_id -571500487_01\n",
"out_edge_id 571545870_01\n",
"node_id i0\n",
"turn_type left\n",
"Name: 2, dtype: object\n",
"3\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>175</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>7</td>\n",
" <td>북</td>\n",
" <td>동</td>\n",
" <td>001</td>\n",
" <td>090</td>\n",
" <td>-571500487_01</td>\n",
" <td>571545870_01</td>\n",
" <td>i0</td>\n",
" <td>left</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"2 175 2 A 7 북 동 001 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"2 090 -571500487_01 571545870_01 i0 left "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"8\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [inter_no, phase_no, ring_type, move_no, inc_dire, out_dire, inc_angle, out_angle, inc_edge_id, out_edge_id, node_id, turn_type]\n",
"Index: []"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"inter_no 175\n",
"phase_no 1\n",
"ring_type A\n",
"move_no 8\n",
"inc_dire 남\n",
"out_dire 북\n",
"inc_angle 179\n",
"out_angle 000\n",
"inc_edge_id -571542797_02\n",
"out_edge_id 571500487_01\n",
"node_id i0\n",
"turn_type straight\n",
"Name: 0, dtype: object\n",
"9\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>남</td>\n",
" <td>북</td>\n",
" <td>179</td>\n",
" <td>000</td>\n",
" <td>-571542797_02</td>\n",
" <td>571500487_01</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"0 175 1 A 8 남 북 179 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"0 000 -571542797_02 571500487_01 i0 straight "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"inter_no 175\n",
"phase_no 1\n",
"ring_type A\n",
"move_no 8\n",
"inc_dire 남\n",
"out_dire 북\n",
"inc_angle 179\n",
"out_angle 000\n",
"inc_edge_id -571542797_02\n",
"out_edge_id 571500487_01\n",
"node_id i0\n",
"turn_type straight\n",
"Name: 0, dtype: object\n",
"10\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>남</td>\n",
" <td>북</td>\n",
" <td>179</td>\n",
" <td>000</td>\n",
" <td>-571542797_02</td>\n",
" <td>571500487_01</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"0 175 1 A 8 남 북 179 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"0 000 -571542797_02 571500487_01 i0 straight "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"inter_no 175\n",
"phase_no 1\n",
"ring_type A\n",
"move_no 8\n",
"inc_dire 남\n",
"out_dire 북\n",
"inc_angle 179\n",
"out_angle 000\n",
"inc_edge_id -571542797_02\n",
"out_edge_id 571500487_01\n",
"node_id i0\n",
"turn_type straight\n",
"Name: 0, dtype: object\n",
"11\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>남</td>\n",
" <td>북</td>\n",
" <td>179</td>\n",
" <td>000</td>\n",
" <td>-571542797_02</td>\n",
" <td>571500487_01</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"0 175 1 A 8 남 북 179 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"0 000 -571542797_02 571500487_01 i0 straight "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"inter_no 175\n",
"phase_no 1\n",
"ring_type A\n",
"move_no 8\n",
"inc_dire 남\n",
"out_dire 북\n",
"inc_angle 179\n",
"out_angle 000\n",
"inc_edge_id -571542797_02\n",
"out_edge_id 571500487_01\n",
"node_id i0\n",
"turn_type straight\n",
"Name: 0, dtype: object\n",
"12\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>남</td>\n",
" <td>북</td>\n",
" <td>179</td>\n",
" <td>000</td>\n",
" <td>-571542797_02</td>\n",
" <td>571500487_01</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"0 175 1 A 8 남 북 179 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"0 000 -571542797_02 571500487_01 i0 straight "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"inter_no 175\n",
"phase_no 2\n",
"ring_type B\n",
"move_no 3\n",
"inc_dire 남\n",
"out_dire 서\n",
"inc_angle 179\n",
"out_angle 270\n",
"inc_edge_id -571542797_02\n",
"out_edge_id 571510153_01\n",
"node_id i0\n",
"turn_type left\n",
"Name: 3, dtype: object\n",
"13\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>175</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>3</td>\n",
" <td>남</td>\n",
" <td>서</td>\n",
" <td>179</td>\n",
" <td>270</td>\n",
" <td>-571542797_02</td>\n",
" <td>571510153_01</td>\n",
" <td>i0</td>\n",
" <td>left</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"3 175 2 B 3 남 서 179 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"3 270 -571542797_02 571510153_01 i0 left "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"14\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [inter_no, phase_no, ring_type, move_no, inc_dire, out_dire, inc_angle, out_angle, inc_edge_id, out_edge_id, node_id, turn_type]\n",
"Index: []"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"inter_no 175\n",
"phase_no 4\n",
"ring_type B\n",
"move_no 2\n",
"inc_dire 서\n",
"out_dire 동\n",
"inc_angle 270\n",
"out_angle 090\n",
"inc_edge_id 571510153_02\n",
"out_edge_id 571545870_01\n",
"node_id i0\n",
"turn_type straight\n",
"Name: 7, dtype: object\n",
"15\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>175</td>\n",
" <td>4</td>\n",
" <td>B</td>\n",
" <td>2</td>\n",
" <td>서</td>\n",
" <td>동</td>\n",
" <td>270</td>\n",
" <td>090</td>\n",
" <td>571510153_02</td>\n",
" <td>571545870_01</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"7 175 4 B 2 서 동 270 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"7 090 571510153_02 571545870_01 i0 straight "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"inter_no 175\n",
"phase_no 4\n",
"ring_type A\n",
"move_no 5\n",
"inc_dire 서\n",
"out_dire 북\n",
"inc_angle 270\n",
"out_angle 000\n",
"inc_edge_id 571510153_02\n",
"out_edge_id 571500487_01\n",
"node_id i0\n",
"turn_type left\n",
"Name: 6, dtype: object\n",
"16\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>175</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>5</td>\n",
" <td>서</td>\n",
" <td>북</td>\n",
" <td>270</td>\n",
" <td>000</td>\n",
" <td>571510153_02</td>\n",
" <td>571500487_01</td>\n",
" <td>i0</td>\n",
" <td>left</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"6 175 4 A 5 서 북 270 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"6 000 571510153_02 571500487_01 i0 left "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"4\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"Empty DataFrame\n",
"Columns: [inter_no, phase_no, ring_type, move_no, inc_dire, out_dire, inc_angle, out_angle, inc_edge_id, out_edge_id, node_id, turn_type]\n",
"Index: []"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"inter_no 175\n",
"phase_no 3\n",
"ring_type A\n",
"move_no 6\n",
"inc_dire 동\n",
"out_dire 서\n",
"inc_angle 090\n",
"out_angle 270\n",
"inc_edge_id 571545870_02\n",
"out_edge_id 571510153_01\n",
"node_id i0\n",
"turn_type straight\n",
"Name: 4, dtype: object\n",
"5\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>175</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>6</td>\n",
" <td>동</td>\n",
" <td>서</td>\n",
" <td>090</td>\n",
" <td>270</td>\n",
" <td>571545870_02</td>\n",
" <td>571510153_01</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"4 175 3 A 6 동 서 090 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"4 270 571545870_02 571510153_01 i0 straight "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"inter_no 175\n",
"phase_no 3\n",
"ring_type A\n",
"move_no 6\n",
"inc_dire 동\n",
"out_dire 서\n",
"inc_angle 090\n",
"out_angle 270\n",
"inc_edge_id 571545870_02\n",
"out_edge_id 571510153_01\n",
"node_id i0\n",
"turn_type straight\n",
"Name: 4, dtype: object\n",
"6\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>175</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>6</td>\n",
" <td>동</td>\n",
" <td>서</td>\n",
" <td>090</td>\n",
" <td>270</td>\n",
" <td>571545870_02</td>\n",
" <td>571510153_01</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"4 175 3 A 6 동 서 090 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"4 270 571545870_02 571510153_01 i0 straight "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"inter_no 175\n",
"phase_no 3\n",
"ring_type B\n",
"move_no 1\n",
"inc_dire 동\n",
"out_dire 남\n",
"inc_angle 090\n",
"out_angle 180\n",
"inc_edge_id 571545870_02\n",
"out_edge_id 571542797_02\n",
"node_id i0\n",
"turn_type left\n",
"Name: 5, dtype: object\n",
"7\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>175</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>1</td>\n",
" <td>동</td>\n",
" <td>남</td>\n",
" <td>090</td>\n",
" <td>180</td>\n",
" <td>571545870_02</td>\n",
" <td>571542797_02</td>\n",
" <td>i0</td>\n",
" <td>left</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
"5 175 3 B 1 동 남 090 \n",
"\n",
" out_angle inc_edge_id out_edge_id node_id turn_type \n",
"5 180 571545870_02 571542797_02 i0 left "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"571545870_02\n",
"571542797_02\n",
"[]\n"
]
}
],
"source": [
"self.p2PLindices = dict() # parent id to protected left index\n",
"# for parent_id in sorted(self.match5.node_id.unique()):\n",
"parent_id = sorted(self.match5.node_id.unique())[0]\n",
"node = self.net.getNode(parent_id)\n",
"PLindices = []\n",
"print(parent_id)\n",
"conns = node.getConnections()\n",
"conns = [c for c in node.getConnections() if c.getTLLinkIndex() >= 0]\n",
"for conn in conns:\n",
" inc_edge_id = conn.getFrom().getID()\n",
" out_edge_id = conn.getTo().getID()\n",
" m5 = self.match5[(self.match5.inc_edge_id==inc_edge_id) & (self.match5.out_edge_id==out_edge_id)]\n",
" if (len(m5)!=0) & (m5.iloc[0].turn_type=='left') :\n",
" row = m5.iloc[0]\n",
" print(row)\n",
" print(conn.getTLLinkIndex())\n",
" display(m5)\n",
"\n",
"# if ids_in_match5:\n",
"# pass\n",
"# else:\n",
"# PLindices.append(conn.getTLLinkIndex())\n",
"print(inc_edge_id)\n",
"print(out_edge_id)\n",
"print(PLindices)"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[('-571542797_02', '571500487_01'),\n",
" ('-571500487_01', '571542797_02'),\n",
" ('-571500487_01', '571545870_01'),\n",
" ('-571542797_02', '571510153_01'),\n",
" ('571545870_02', '571510153_01'),\n",
" ('571545870_02', '571542797_02'),\n",
" ('571510153_02', '571500487_01'),\n",
" ('571510153_02', '571545870_01'),\n",
" ('-571542810_01', '-571542797_02.99'),\n",
" ('571542797_02.99', '571542810_01'),\n",
" ('-571542810_01', '-571542797_02.99'),\n",
" ('-571542810_01', '571543469_01'),\n",
" ('571543469_02', '-571542797_02.99'),\n",
" (nan, nan),\n",
" ('-571542809_01', '571542811_01'),\n",
" ('571542811_02', '571542809_01'),\n",
" (nan, nan),\n",
" (nan, nan),\n",
" ('571540304_02', '571556450_01'),\n",
" ('571556450_02', '571540304_01'),\n",
" ('571556450_02', '571500475_01'),\n",
" ('571540304_02', '571540303_01'),\n",
" ('571540303_02.21', '571556450_01'),\n",
" ('571540303_02.21', '571500475_01'),\n",
" ('-571500475_01', '571540303_01'),\n",
" ('-571500475_01', '571540304_01'),\n",
" ('-571500569_01', '571500583_02'),\n",
" ('-571500569_01', '571500618_01'),\n",
" ('571500618_02', '571500583_02'),\n",
" ('571500618_02', '571500617_01'),\n",
" ('571500617_02', '571500618_01'),\n",
" ('571500618_02', '571500617_01'),\n",
" ('571500617_02', '571500618_01'),\n",
" ('571500617_02', '571500569_01'),\n",
" ('571500583_01', '571500569_01'),\n",
" ('571500583_01', '571500569_01'),\n",
" ('571510152_02', '-571510152_01'),\n",
" ('571510152_01', '571510152_01.65'),\n",
" (nan, nan),\n",
" (nan, nan),\n",
" ('-571511538_02', '571542073_02'),\n",
" ('571542073_01', '571511538_02'),\n",
" (nan, nan),\n",
" (nan, nan),\n",
" ('-571511538_02', '571542073_02'),\n",
" ('571542073_01', '571511538_02'),\n",
" (nan, nan),\n",
" (nan, nan),\n",
" ('-571542115_01', '571500535_01'),\n",
" (nan, nan),\n",
" ('571500535_02.18', '571511538_01'),\n",
" ('571500535_02.18', '571542115_01'),\n",
" ('571511538_02.121', '571542115_01'),\n",
" ('571511538_02.121', '571500585_01'),\n",
" ('571500585_02', '571511538_01'),\n",
" ('571500585_02', '571500535_01')]"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": []
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>남</td>\n",
" <td>북</td>\n",
" <td>179</td>\n",
" <td>000</td>\n",
" <td>-571542797_02</td>\n",
" <td>571500487_01</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>4</td>\n",
" <td>북</td>\n",
" <td>남</td>\n",
" <td>001</td>\n",
" <td>180</td>\n",
" <td>-571500487_01</td>\n",
" <td>571542797_02</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>175</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>7</td>\n",
" <td>북</td>\n",
" <td>동</td>\n",
" <td>001</td>\n",
" <td>090</td>\n",
" <td>-571500487_01</td>\n",
" <td>571545870_01</td>\n",
" <td>i0</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>175</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>3</td>\n",
" <td>남</td>\n",
" <td>서</td>\n",
" <td>179</td>\n",
" <td>270</td>\n",
" <td>-571542797_02</td>\n",
" <td>571510153_01</td>\n",
" <td>i0</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>175</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>6</td>\n",
" <td>동</td>\n",
" <td>서</td>\n",
" <td>090</td>\n",
" <td>270</td>\n",
" <td>571545870_02</td>\n",
" <td>571510153_01</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>175</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>1</td>\n",
" <td>동</td>\n",
" <td>남</td>\n",
" <td>090</td>\n",
" <td>180</td>\n",
" <td>571545870_02</td>\n",
" <td>571542797_02</td>\n",
" <td>i0</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>175</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>5</td>\n",
" <td>서</td>\n",
" <td>북</td>\n",
" <td>270</td>\n",
" <td>000</td>\n",
" <td>571510153_02</td>\n",
" <td>571500487_01</td>\n",
" <td>i0</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>175</td>\n",
" <td>4</td>\n",
" <td>B</td>\n",
" <td>2</td>\n",
" <td>서</td>\n",
" <td>동</td>\n",
" <td>270</td>\n",
" <td>090</td>\n",
" <td>571510153_02</td>\n",
" <td>571545870_01</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>176</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>남</td>\n",
" <td>북</td>\n",
" <td>180</td>\n",
" <td>356</td>\n",
" <td>-571542810_01</td>\n",
" <td>-571542797_02.99</td>\n",
" <td>i1</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>176</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>4</td>\n",
" <td>북</td>\n",
" <td>남</td>\n",
" <td>359</td>\n",
" <td>180</td>\n",
" <td>571542797_02.99</td>\n",
" <td>571542810_01</td>\n",
" <td>i1</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>176</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>남</td>\n",
" <td>북</td>\n",
" <td>180</td>\n",
" <td>356</td>\n",
" <td>-571542810_01</td>\n",
" <td>-571542797_02.99</td>\n",
" <td>i1</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>176</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>3</td>\n",
" <td>남</td>\n",
" <td>서</td>\n",
" <td>180</td>\n",
" <td>270</td>\n",
" <td>-571542810_01</td>\n",
" <td>571543469_01</td>\n",
" <td>i1</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>176</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>5</td>\n",
" <td>서</td>\n",
" <td>북</td>\n",
" <td>270</td>\n",
" <td>356</td>\n",
" <td>571543469_02</td>\n",
" <td>-571542797_02.99</td>\n",
" <td>i1</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>176</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>18</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>i1</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>177</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>남</td>\n",
" <td>북</td>\n",
" <td>179</td>\n",
" <td>000</td>\n",
" <td>-571542809_01</td>\n",
" <td>571542811_01</td>\n",
" <td>i2</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>177</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>4</td>\n",
" <td>북</td>\n",
" <td>남</td>\n",
" <td>000</td>\n",
" <td>180</td>\n",
" <td>571542811_02</td>\n",
" <td>571542809_01</td>\n",
" <td>i2</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>177</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>17</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>i2</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>177</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>18</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>i2</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>178</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>남</td>\n",
" <td>북</td>\n",
" <td>180</td>\n",
" <td>000</td>\n",
" <td>571540304_02</td>\n",
" <td>571556450_01</td>\n",
" <td>i3</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>178</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>4</td>\n",
" <td>북</td>\n",
" <td>남</td>\n",
" <td>000</td>\n",
" <td>180</td>\n",
" <td>571556450_02</td>\n",
" <td>571540304_01</td>\n",
" <td>i3</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>178</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>7</td>\n",
" <td>북</td>\n",
" <td>동</td>\n",
" <td>000</td>\n",
" <td>090</td>\n",
" <td>571556450_02</td>\n",
" <td>571500475_01</td>\n",
" <td>i3</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>178</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>3</td>\n",
" <td>남</td>\n",
" <td>서</td>\n",
" <td>180</td>\n",
" <td>270</td>\n",
" <td>571540304_02</td>\n",
" <td>571540303_01</td>\n",
" <td>i3</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>178</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>5</td>\n",
" <td>서</td>\n",
" <td>북</td>\n",
" <td>270</td>\n",
" <td>000</td>\n",
" <td>571540303_02.21</td>\n",
" <td>571556450_01</td>\n",
" <td>i3</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>178</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>2</td>\n",
" <td>서</td>\n",
" <td>동</td>\n",
" <td>270</td>\n",
" <td>090</td>\n",
" <td>571540303_02.21</td>\n",
" <td>571500475_01</td>\n",
" <td>i3</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>178</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>6</td>\n",
" <td>동</td>\n",
" <td>서</td>\n",
" <td>090</td>\n",
" <td>270</td>\n",
" <td>-571500475_01</td>\n",
" <td>571540303_01</td>\n",
" <td>i3</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>178</td>\n",
" <td>4</td>\n",
" <td>B</td>\n",
" <td>1</td>\n",
" <td>동</td>\n",
" <td>남</td>\n",
" <td>090</td>\n",
" <td>180</td>\n",
" <td>-571500475_01</td>\n",
" <td>571540304_01</td>\n",
" <td>i3</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>201</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>남</td>\n",
" <td>북</td>\n",
" <td>180</td>\n",
" <td>000</td>\n",
" <td>-571500569_01</td>\n",
" <td>571500583_02</td>\n",
" <td>i8</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>201</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>3</td>\n",
" <td>남</td>\n",
" <td>서</td>\n",
" <td>180</td>\n",
" <td>270</td>\n",
" <td>-571500569_01</td>\n",
" <td>571500618_01</td>\n",
" <td>i8</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>201</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>5</td>\n",
" <td>서</td>\n",
" <td>북</td>\n",
" <td>270</td>\n",
" <td>000</td>\n",
" <td>571500618_02</td>\n",
" <td>571500583_02</td>\n",
" <td>i8</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>201</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>2</td>\n",
" <td>서</td>\n",
" <td>동</td>\n",
" <td>270</td>\n",
" <td>090</td>\n",
" <td>571500618_02</td>\n",
" <td>571500617_01</td>\n",
" <td>i8</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>201</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>6</td>\n",
" <td>동</td>\n",
" <td>서</td>\n",
" <td>090</td>\n",
" <td>270</td>\n",
" <td>571500617_02</td>\n",
" <td>571500618_01</td>\n",
" <td>i8</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>201</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>2</td>\n",
" <td>서</td>\n",
" <td>동</td>\n",
" <td>270</td>\n",
" <td>090</td>\n",
" <td>571500618_02</td>\n",
" <td>571500617_01</td>\n",
" <td>i8</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>201</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>6</td>\n",
" <td>동</td>\n",
" <td>서</td>\n",
" <td>090</td>\n",
" <td>270</td>\n",
" <td>571500617_02</td>\n",
" <td>571500618_01</td>\n",
" <td>i8</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>201</td>\n",
" <td>4</td>\n",
" <td>B</td>\n",
" <td>1</td>\n",
" <td>동</td>\n",
" <td>남</td>\n",
" <td>090</td>\n",
" <td>180</td>\n",
" <td>571500617_02</td>\n",
" <td>571500569_01</td>\n",
" <td>i8</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>201</td>\n",
" <td>5</td>\n",
" <td>A</td>\n",
" <td>4</td>\n",
" <td>북</td>\n",
" <td>남</td>\n",
" <td>000</td>\n",
" <td>180</td>\n",
" <td>571500583_01</td>\n",
" <td>571500569_01</td>\n",
" <td>i8</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>201</td>\n",
" <td>5</td>\n",
" <td>B</td>\n",
" <td>4</td>\n",
" <td>북</td>\n",
" <td>남</td>\n",
" <td>000</td>\n",
" <td>180</td>\n",
" <td>571500583_01</td>\n",
" <td>571500569_01</td>\n",
" <td>i8</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>202</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>6</td>\n",
" <td>동</td>\n",
" <td>서</td>\n",
" <td>090</td>\n",
" <td>270</td>\n",
" <td>571510152_02</td>\n",
" <td>-571510152_01</td>\n",
" <td>i9</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>202</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>2</td>\n",
" <td>서</td>\n",
" <td>동</td>\n",
" <td>270</td>\n",
" <td>090</td>\n",
" <td>571510152_01</td>\n",
" <td>571510152_01.65</td>\n",
" <td>i9</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>202</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>17</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>i9</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>202</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>18</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>i9</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>206</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>남</td>\n",
" <td>북</td>\n",
" <td>180</td>\n",
" <td>000</td>\n",
" <td>-571511538_02</td>\n",
" <td>571542073_02</td>\n",
" <td>i7</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>206</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>4</td>\n",
" <td>북</td>\n",
" <td>남</td>\n",
" <td>000</td>\n",
" <td>180</td>\n",
" <td>571542073_01</td>\n",
" <td>571511538_02</td>\n",
" <td>i7</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>206</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>17</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>i7</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>206</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>18</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>i7</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>206</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>남</td>\n",
" <td>북</td>\n",
" <td>180</td>\n",
" <td>000</td>\n",
" <td>-571511538_02</td>\n",
" <td>571542073_02</td>\n",
" <td>i7</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>206</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>4</td>\n",
" <td>북</td>\n",
" <td>남</td>\n",
" <td>000</td>\n",
" <td>180</td>\n",
" <td>571542073_01</td>\n",
" <td>571511538_02</td>\n",
" <td>i7</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>206</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>17</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>i7</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>206</td>\n",
" <td>4</td>\n",
" <td>B</td>\n",
" <td>18</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>i7</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>210</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>6</td>\n",
" <td>동</td>\n",
" <td>서</td>\n",
" <td>090</td>\n",
" <td>270</td>\n",
" <td>-571542115_01</td>\n",
" <td>571500535_01</td>\n",
" <td>i6</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>210</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>18</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>i6</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50</th>\n",
" <td>210</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>5</td>\n",
" <td>서</td>\n",
" <td>북</td>\n",
" <td>270</td>\n",
" <td>000</td>\n",
" <td>571500535_02.18</td>\n",
" <td>571511538_01</td>\n",
" <td>i6</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51</th>\n",
" <td>210</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>2</td>\n",
" <td>서</td>\n",
" <td>동</td>\n",
" <td>270</td>\n",
" <td>090</td>\n",
" <td>571500535_02.18</td>\n",
" <td>571542115_01</td>\n",
" <td>i6</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>210</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>7</td>\n",
" <td>북</td>\n",
" <td>동</td>\n",
" <td>000</td>\n",
" <td>090</td>\n",
" <td>571511538_02.121</td>\n",
" <td>571542115_01</td>\n",
" <td>i6</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td>210</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>4</td>\n",
" <td>북</td>\n",
" <td>남</td>\n",
" <td>000</td>\n",
" <td>180</td>\n",
" <td>571511538_02.121</td>\n",
" <td>571500585_01</td>\n",
" <td>i6</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54</th>\n",
" <td>210</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>남</td>\n",
" <td>북</td>\n",
" <td>180</td>\n",
" <td>000</td>\n",
" <td>571500585_02</td>\n",
" <td>571511538_01</td>\n",
" <td>i6</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>55</th>\n",
" <td>210</td>\n",
" <td>4</td>\n",
" <td>B</td>\n",
" <td>3</td>\n",
" <td>남</td>\n",
" <td>서</td>\n",
" <td>180</td>\n",
" <td>270</td>\n",
" <td>571500585_02</td>\n",
" <td>571500535_01</td>\n",
" <td>i6</td>\n",
" <td>left</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"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 17 NaN NaN NaN \n",
"17 177 2 B 18 NaN NaN NaN \n",
"18 178 1 A 8 남 북 180 \n",
"19 178 1 B 4 북 남 000 \n",
"20 178 2 A 7 북 동 000 \n",
"21 178 2 B 3 남 서 180 \n",
"22 178 3 A 5 서 북 270 \n",
"23 178 3 B 2 서 동 270 \n",
"24 178 4 A 6 동 서 090 \n",
"25 178 4 B 1 동 남 090 \n",
"26 201 1 A 8 남 북 180 \n",
"27 201 1 B 3 남 서 180 \n",
"28 201 2 A 5 서 북 270 \n",
"29 201 2 B 2 서 동 270 \n",
"30 201 3 A 6 동 서 090 \n",
"31 201 3 B 2 서 동 270 \n",
"32 201 4 A 6 동 서 090 \n",
"33 201 4 B 1 동 남 090 \n",
"34 201 5 A 4 북 남 000 \n",
"35 201 5 B 4 북 남 000 \n",
"36 202 1 A 6 동 서 090 \n",
"37 202 1 B 2 서 동 270 \n",
"38 202 2 A 17 NaN NaN NaN \n",
"39 202 2 B 18 NaN NaN NaN \n",
"40 206 1 A 8 남 북 180 \n",
"41 206 1 B 4 북 남 000 \n",
"42 206 2 A 17 NaN NaN NaN \n",
"43 206 2 B 18 NaN NaN NaN \n",
"44 206 3 A 8 남 북 180 \n",
"45 206 3 B 4 북 남 000 \n",
"46 206 4 A 17 NaN NaN NaN \n",
"47 206 4 B 18 NaN NaN NaN \n",
"48 210 1 A 6 동 서 090 \n",
"49 210 1 B 18 NaN NaN NaN \n",
"50 210 2 A 5 서 북 270 \n",
"51 210 2 B 2 서 동 270 \n",
"52 210 3 A 7 북 동 000 \n",
"53 210 3 B 4 북 남 000 \n",
"54 210 4 A 8 남 북 180 \n",
"55 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 straight \n",
"15 180 571542811_02 571542809_01 i2 straight \n",
"16 NaN NaN NaN i2 NaN \n",
"17 NaN NaN NaN i2 NaN \n",
"18 000 571540304_02 571556450_01 i3 straight \n",
"19 180 571556450_02 571540304_01 i3 straight \n",
"20 090 571556450_02 571500475_01 i3 left \n",
"21 270 571540304_02 571540303_01 i3 left \n",
"22 000 571540303_02.21 571556450_01 i3 left \n",
"23 090 571540303_02.21 571500475_01 i3 straight \n",
"24 270 -571500475_01 571540303_01 i3 straight \n",
"25 180 -571500475_01 571540304_01 i3 left \n",
"26 000 -571500569_01 571500583_02 i8 straight \n",
"27 270 -571500569_01 571500618_01 i8 left \n",
"28 000 571500618_02 571500583_02 i8 left \n",
"29 090 571500618_02 571500617_01 i8 straight \n",
"30 270 571500617_02 571500618_01 i8 straight \n",
"31 090 571500618_02 571500617_01 i8 straight \n",
"32 270 571500617_02 571500618_01 i8 straight \n",
"33 180 571500617_02 571500569_01 i8 left \n",
"34 180 571500583_01 571500569_01 i8 straight \n",
"35 180 571500583_01 571500569_01 i8 straight \n",
"36 270 571510152_02 -571510152_01 i9 straight \n",
"37 090 571510152_01 571510152_01.65 i9 straight \n",
"38 NaN NaN NaN i9 NaN \n",
"39 NaN NaN NaN i9 NaN \n",
"40 000 -571511538_02 571542073_02 i7 straight \n",
"41 180 571542073_01 571511538_02 i7 straight \n",
"42 NaN NaN NaN i7 NaN \n",
"43 NaN NaN NaN i7 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 270 -571542115_01 571500535_01 i6 straight \n",
"49 NaN NaN NaN i6 NaN \n",
"50 000 571500535_02.18 571511538_01 i6 left \n",
"51 090 571500535_02.18 571542115_01 i6 straight \n",
"52 090 571511538_02.121 571542115_01 i6 left \n",
"53 180 571511538_02.121 571500585_01 i6 straight \n",
"54 000 571500585_02 571511538_01 i6 straight \n",
"55 270 571500585_02 571500535_01 i6 left "
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"self.match5"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'u00': 4, 'u20': 2, 'u30': 4, 'u31': 4, 'u32': 7, 'u60': 8}"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"self.p2PLindices = dict() # parent id to protected left index\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>남</td>\n",
" <td>북</td>\n",
" <td>179</td>\n",
" <td>000</td>\n",
" <td>-571542797_02</td>\n",
" <td>571500487_01</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>4</td>\n",
" <td>북</td>\n",
" <td>남</td>\n",
" <td>001</td>\n",
" <td>180</td>\n",
" <td>-571500487_01</td>\n",
" <td>571542797_02</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>175</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>7</td>\n",
" <td>북</td>\n",
" <td>동</td>\n",
" <td>001</td>\n",
" <td>090</td>\n",
" <td>-571500487_01</td>\n",
" <td>571545870_01</td>\n",
" <td>i0</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>175</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>3</td>\n",
" <td>남</td>\n",
" <td>서</td>\n",
" <td>179</td>\n",
" <td>270</td>\n",
" <td>-571542797_02</td>\n",
" <td>571510153_01</td>\n",
" <td>i0</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>175</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>6</td>\n",
" <td>동</td>\n",
" <td>서</td>\n",
" <td>090</td>\n",
" <td>270</td>\n",
" <td>571545870_02</td>\n",
" <td>571510153_01</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"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",
"\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 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>남</td>\n",
" <td>북</td>\n",
" <td>179</td>\n",
" <td>000</td>\n",
" <td>-571542797_02</td>\n",
" <td>571500487_01</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>4</td>\n",
" <td>북</td>\n",
" <td>남</td>\n",
" <td>001</td>\n",
" <td>180</td>\n",
" <td>-571500487_01</td>\n",
" <td>571542797_02</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>175</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>7</td>\n",
" <td>북</td>\n",
" <td>동</td>\n",
" <td>001</td>\n",
" <td>090</td>\n",
" <td>-571500487_01</td>\n",
" <td>571545870_01</td>\n",
" <td>i0</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>175</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>3</td>\n",
" <td>남</td>\n",
" <td>서</td>\n",
" <td>179</td>\n",
" <td>270</td>\n",
" <td>-571542797_02</td>\n",
" <td>571510153_01</td>\n",
" <td>i0</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>175</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>6</td>\n",
" <td>동</td>\n",
" <td>서</td>\n",
" <td>090</td>\n",
" <td>270</td>\n",
" <td>571545870_02</td>\n",
" <td>571510153_01</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"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",
"\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 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>node_id</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>175</td>\n",
" <td>i0</td>\n",
" <td>1</td>\n",
" <td>동</td>\n",
" <td>남</td>\n",
" <td>571545870_02</td>\n",
" <td>571542797_02</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>175</td>\n",
" <td>i0</td>\n",
" <td>2</td>\n",
" <td>서</td>\n",
" <td>동</td>\n",
" <td>571510153_02</td>\n",
" <td>571545870_01</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>175</td>\n",
" <td>i0</td>\n",
" <td>3</td>\n",
" <td>남</td>\n",
" <td>서</td>\n",
" <td>-571542797_02</td>\n",
" <td>571510153_01</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>175</td>\n",
" <td>i0</td>\n",
" <td>4</td>\n",
" <td>북</td>\n",
" <td>남</td>\n",
" <td>-571500487_01</td>\n",
" <td>571542797_02</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>175</td>\n",
" <td>i0</td>\n",
" <td>5</td>\n",
" <td>서</td>\n",
" <td>북</td>\n",
" <td>571510153_02</td>\n",
" <td>571500487_01</td>\n",
" <td>left</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no node_id move_no inc_dire out_dire inc_edge_id out_edge_id \\\n",
"0 175 i0 1 동 남 571545870_02 571542797_02 \n",
"1 175 i0 2 서 동 571510153_02 571545870_01 \n",
"2 175 i0 3 남 서 -571542797_02 571510153_01 \n",
"3 175 i0 4 북 남 -571500487_01 571542797_02 \n",
"4 175 i0 5 서 북 571510153_02 571500487_01 \n",
"\n",
" turn_type \n",
"0 left \n",
"1 straight \n",
"2 left \n",
"3 straight \n",
"4 left "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(self.match5.head())\n",
"display(self.match6.head())\n",
"display(self.matching.head())"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'u00': 4, 'u20': 2, 'u30': 4, 'u31': 4, 'u32': 7, 'u60': 8}"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"self.uid2uindex"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"c30 rrrrrr\n",
"i0 grrrgrrrgrrrrrgrr\n",
"i1 grrrrrrgrr\n",
"i2 rrggrrr\n",
"i3 grrrrgrrrrgrrrrgrrrr\n",
"i6 grrrgrrrrgrrgrrr\n",
"i7 rrrggrr\n",
"i8 grrrrrrrgrrrgrrr\n",
"i9 rrrr\n",
"u00 GGGGrGGGG\n",
"u20 GGrGGG\n",
"u30 GGGGrGGG\n",
"u31 GGGGrGGG\n",
"u32 GGGGGGGr\n",
"u60 GGGGGGGGr\n"
]
}
],
"source": [
"self.nodes = [self.net.getNode(node_id) for node_id in self.node_ids]\n",
"self.node2init = {}\n",
"# 유턴노드를 제외한 모든 노드 (우회전, 삼지교차로직진 : g, 그외 : r)\n",
"for node_id in sorted(set(self.node_ids) - set(self.u_turn_ids)):\n",
" node = self.net.getNode(node_id)\n",
" conns = [(c.getJunctionIndex(), c) for c in node.getConnections()]\n",
" conns = [c for c in conns if c[0] >= 0]\n",
" conns = sorted(conns, key=lambda x: x[0])\n",
" state = []\n",
" for i, ci in conns: # i번째 connection : ci\n",
" if ci.getTLLinkIndex() < 0:\n",
" continue\n",
" are_foes = False\n",
" # 합류지점이 다르면서 상충되는 cj가 존재하면 r, 그외에는 g\n",
" for j, cj in conns: # j번째 connection : cj\n",
" # ci, cj의 합류지점이 같으면 통과\n",
" if ci.getTo() == cj.getTo():\n",
" continue\n",
" # ci, cj가 상충되면 are_foes를 True로 지정.\n",
" if node.areFoes(i, j):\n",
" are_foes = True\n",
" break\n",
" state.append('r' if are_foes else 'g')\n",
" self.node2init[node_id] = state\n",
"\n",
"# 유턴노드 (유턴x : G, 유턴 : G)\n",
"for node_id in self.u_turn_ids:\n",
" node = self.net.getNode(node_id)\n",
" conns = [(c.getJunctionIndex(), c) for c in node.getConnections()]\n",
" conns = [c for c in conns if c[0] >= 0]\n",
" conns = sorted(conns, key=lambda x: x[0])\n",
" state = []\n",
" for i, ci in conns:\n",
" if ci.getTLLinkIndex() < 0:\n",
" continue\n",
" state.append('G')\n",
" self.node2init[node_id] = state\n",
"\n",
"# 신호가 부여되어 있는 경우에는 r을 부여 (우회전 : g, 그외 : r / 유턴x : G, 유턴 : r)\n",
"for _, row in self.match6.dropna(subset=['inc_edge_id', 'out_edge_id']).iterrows():\n",
" node_id = row.node_id\n",
" inc_edge_id = row.inc_edge_id\n",
" out_edge_id = row.out_edge_id\n",
" inc_edge = self.net.getEdge(inc_edge_id)\n",
" out_edge = self.net.getEdge(out_edge_id)\n",
" for conn in inc_edge.getConnections(out_edge):\n",
" index = conn.getTLLinkIndex()\n",
" if index >= 0:\n",
" self.node2init[node_id][index] = 'r'\n",
"\n",
"for node_id in self.node2init:\n",
" print(node_id, ''.join(self.node2init[node_id]))"
]
},
{
"cell_type": "code",
"execution_count": 7,
"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",
"2-1. 매칭 테이블들을 생성했습니다.\n",
"2-2. 비보호우회전(g)을 배정했습니다.\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>node_id</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>1</td>\n",
" <td>동</td>\n",
" <td>남</td>\n",
" <td>571542107_02</td>\n",
" <td>571542809_01</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>2</td>\n",
" <td>서</td>\n",
" <td>동</td>\n",
" <td>-571542809_01</td>\n",
" <td>571542107_01</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>3</td>\n",
" <td>남</td>\n",
" <td>서</td>\n",
" <td>-571542809_01</td>\n",
" <td>571542809_01</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>4</td>\n",
" <td>북</td>\n",
" <td>남</td>\n",
" <td>571542811_02</td>\n",
" <td>571542809_01</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>5</td>\n",
" <td>서</td>\n",
" <td>북</td>\n",
" <td>-571542809_01</td>\n",
" <td>571542811_01</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>6</td>\n",
" <td>동</td>\n",
" <td>서</td>\n",
" <td>571542107_02</td>\n",
" <td>571542809_01</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>7</td>\n",
" <td>북</td>\n",
" <td>동</td>\n",
" <td>571542811_02</td>\n",
" <td>571542107_01</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>8</td>\n",
" <td>남</td>\n",
" <td>북</td>\n",
" <td>-571542809_01</td>\n",
" <td>571542811_01</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>9</td>\n",
" <td>북동</td>\n",
" <td>남동</td>\n",
" <td>571542107_02</td>\n",
" <td>571542809_01</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>10</td>\n",
" <td>남서</td>\n",
" <td>북동</td>\n",
" <td>-571542809_01</td>\n",
" <td>571542107_01</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>11</td>\n",
" <td>남동</td>\n",
" <td>남서</td>\n",
" <td>-571542809_01</td>\n",
" <td>571542809_01</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>12</td>\n",
" <td>북서</td>\n",
" <td>남동</td>\n",
" <td>571542811_02</td>\n",
" <td>571542809_01</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>13</td>\n",
" <td>남서</td>\n",
" <td>북서</td>\n",
" <td>-571542809_01</td>\n",
" <td>571542811_01</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>14</td>\n",
" <td>북동</td>\n",
" <td>남서</td>\n",
" <td>571542107_02</td>\n",
" <td>571542809_01</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>15</td>\n",
" <td>북서</td>\n",
" <td>북동</td>\n",
" <td>571542811_02</td>\n",
" <td>571542107_01</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>16</td>\n",
" <td>남동</td>\n",
" <td>북서</td>\n",
" <td>-571542809_01</td>\n",
" <td>571542811_01</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no node_id move_no inc_dire out_dire inc_edge_id out_edge_id \\\n",
"32 177 i2 1 동 남 571542107_02 571542809_01 \n",
"33 177 i2 2 서 동 -571542809_01 571542107_01 \n",
"34 177 i2 3 남 서 -571542809_01 571542809_01 \n",
"35 177 i2 4 북 남 571542811_02 571542809_01 \n",
"36 177 i2 5 서 북 -571542809_01 571542811_01 \n",
"37 177 i2 6 동 서 571542107_02 571542809_01 \n",
"38 177 i2 7 북 동 571542811_02 571542107_01 \n",
"39 177 i2 8 남 북 -571542809_01 571542811_01 \n",
"40 177 i2 9 북동 남동 571542107_02 571542809_01 \n",
"41 177 i2 10 남서 북동 -571542809_01 571542107_01 \n",
"42 177 i2 11 남동 남서 -571542809_01 571542809_01 \n",
"43 177 i2 12 북서 남동 571542811_02 571542809_01 \n",
"44 177 i2 13 남서 북서 -571542809_01 571542811_01 \n",
"45 177 i2 14 북동 남서 571542107_02 571542809_01 \n",
"46 177 i2 15 북서 북동 571542811_02 571542107_01 \n",
"47 177 i2 16 남동 북서 -571542809_01 571542811_01 \n",
"\n",
" turn_type \n",
"32 left \n",
"33 straight \n",
"34 left \n",
"35 straight \n",
"36 straight \n",
"37 straight \n",
"38 left \n",
"39 straight \n",
"40 left \n",
"41 straight \n",
"42 left \n",
"43 straight \n",
"44 straight \n",
"45 straight \n",
"46 left \n",
"47 straight "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>node_id</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>turn_type</th>\n",
" <th>state</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>1</td>\n",
" <td>동</td>\n",
" <td>남</td>\n",
" <td>571542107_02</td>\n",
" <td>571542809_01</td>\n",
" <td>left</td>\n",
" <td>rrggrrr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>2</td>\n",
" <td>서</td>\n",
" <td>동</td>\n",
" <td>-571542809_01</td>\n",
" <td>571542107_01</td>\n",
" <td>straight</td>\n",
" <td>rrgGrrr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>3</td>\n",
" <td>남</td>\n",
" <td>서</td>\n",
" <td>-571542809_01</td>\n",
" <td>571542809_01</td>\n",
" <td>left</td>\n",
" <td>rrggrrr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>4</td>\n",
" <td>북</td>\n",
" <td>남</td>\n",
" <td>571542811_02</td>\n",
" <td>571542809_01</td>\n",
" <td>straight</td>\n",
" <td>GGggrrr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>5</td>\n",
" <td>서</td>\n",
" <td>북</td>\n",
" <td>-571542809_01</td>\n",
" <td>571542811_01</td>\n",
" <td>straight</td>\n",
" <td>rrggGGG</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>6</td>\n",
" <td>동</td>\n",
" <td>서</td>\n",
" <td>571542107_02</td>\n",
" <td>571542809_01</td>\n",
" <td>straight</td>\n",
" <td>rrggrrr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>7</td>\n",
" <td>북</td>\n",
" <td>동</td>\n",
" <td>571542811_02</td>\n",
" <td>571542107_01</td>\n",
" <td>left</td>\n",
" <td>rrggrrr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>8</td>\n",
" <td>남</td>\n",
" <td>북</td>\n",
" <td>-571542809_01</td>\n",
" <td>571542811_01</td>\n",
" <td>straight</td>\n",
" <td>rrggGGG</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>9</td>\n",
" <td>북동</td>\n",
" <td>남동</td>\n",
" <td>571542107_02</td>\n",
" <td>571542809_01</td>\n",
" <td>left</td>\n",
" <td>rrggrrr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>10</td>\n",
" <td>남서</td>\n",
" <td>북동</td>\n",
" <td>-571542809_01</td>\n",
" <td>571542107_01</td>\n",
" <td>straight</td>\n",
" <td>rrgGrrr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>11</td>\n",
" <td>남동</td>\n",
" <td>남서</td>\n",
" <td>-571542809_01</td>\n",
" <td>571542809_01</td>\n",
" <td>left</td>\n",
" <td>rrggrrr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>12</td>\n",
" <td>북서</td>\n",
" <td>남동</td>\n",
" <td>571542811_02</td>\n",
" <td>571542809_01</td>\n",
" <td>straight</td>\n",
" <td>GGggrrr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>13</td>\n",
" <td>남서</td>\n",
" <td>북서</td>\n",
" <td>-571542809_01</td>\n",
" <td>571542811_01</td>\n",
" <td>straight</td>\n",
" <td>rrggGGG</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>14</td>\n",
" <td>북동</td>\n",
" <td>남서</td>\n",
" <td>571542107_02</td>\n",
" <td>571542809_01</td>\n",
" <td>straight</td>\n",
" <td>rrggrrr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>15</td>\n",
" <td>북서</td>\n",
" <td>북동</td>\n",
" <td>571542811_02</td>\n",
" <td>571542107_01</td>\n",
" <td>left</td>\n",
" <td>rrggrrr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>16</td>\n",
" <td>남동</td>\n",
" <td>북서</td>\n",
" <td>-571542809_01</td>\n",
" <td>571542811_01</td>\n",
" <td>straight</td>\n",
" <td>rrggGGG</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no node_id move_no inc_dire out_dire inc_edge_id out_edge_id \\\n",
"32 177 i2 1 동 남 571542107_02 571542809_01 \n",
"33 177 i2 2 서 동 -571542809_01 571542107_01 \n",
"34 177 i2 3 남 서 -571542809_01 571542809_01 \n",
"35 177 i2 4 북 남 571542811_02 571542809_01 \n",
"36 177 i2 5 서 북 -571542809_01 571542811_01 \n",
"37 177 i2 6 동 서 571542107_02 571542809_01 \n",
"38 177 i2 7 북 동 571542811_02 571542107_01 \n",
"39 177 i2 8 남 북 -571542809_01 571542811_01 \n",
"40 177 i2 9 북동 남동 571542107_02 571542809_01 \n",
"41 177 i2 10 남서 북동 -571542809_01 571542107_01 \n",
"42 177 i2 11 남동 남서 -571542809_01 571542809_01 \n",
"43 177 i2 12 북서 남동 571542811_02 571542809_01 \n",
"44 177 i2 13 남서 북서 -571542809_01 571542811_01 \n",
"45 177 i2 14 북동 남서 571542107_02 571542809_01 \n",
"46 177 i2 15 북서 북동 571542811_02 571542107_01 \n",
"47 177 i2 16 남동 북서 -571542809_01 571542811_01 \n",
"\n",
" turn_type state \n",
"32 left rrggrrr \n",
"33 straight rrgGrrr \n",
"34 left rrggrrr \n",
"35 straight GGggrrr \n",
"36 straight rrggGGG \n",
"37 straight rrggrrr \n",
"38 left rrggrrr \n",
"39 straight rrggGGG \n",
"40 left rrggrrr \n",
"41 straight rrgGrrr \n",
"42 left rrggrrr \n",
"43 straight GGggrrr \n",
"44 straight rrggGGG \n",
"45 straight rrggrrr \n",
"46 left rrggrrr \n",
"47 straight rrggGGG "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import copy\n",
"self = DailyPreprocessor()\n",
"self.load_data() # 1. 데이터 불러오기\n",
"self.get_matches() # 2-1 매칭테이블 생성\n",
"self.initialize_state() # 2-2 신호 초기화\n",
"display(self.matching[self.matching.node_id=='i2'])\n",
"# matching에 신호 배정\n",
"for i, row in self.matching.iterrows():\n",
" node_id = row.node_id\n",
" move_no = row.move_no\n",
" inc_edge = self.net.getEdge(row.inc_edge_id)\n",
" out_edge = self.net.getEdge(row.out_edge_id)\n",
" state = copy.deepcopy(self.node2init[node_id])\n",
" for conn in inc_edge.getConnections(out_edge):\n",
" index = conn.getTLLinkIndex()\n",
" if index >= 0:\n",
" state[index] = 'G'\n",
" self.matching.at[i, 'state'] = ''.join(state)\n",
"\n",
"display(self.matching[self.matching.node_id=='i2'])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# matching의 각 행을 순회\n",
"for row in self.matching.itertuples(index=True):\n",
" node_id = row.node_id\n",
" move_no = row.move_no\n",
" inc_edge_id = row.inc_edge_id\n",
" out_edge_id = row.out_edge_id\n",
" state = copy.deepcopy(self.node2init)[node_id]\n",
"\n",
" if move_no != 21:\n",
" inc_edge = self.net.getEdge(inc_edge_id)\n",
" out_edge = self.net.getEdge(out_edge_id)\n",
" for conn in inc_edge.getConnections(out_edge):\n",
" index = conn.getTLLinkIndex()\n",
" if index >= 0:\n",
" state[index] = 'G'\n",
" self.matching.at[row.Index, 'state'] = ''.join(state)\n",
"\n",
"self.matching = self.matching.dropna(subset='state')\n",
"self.matching = self.matching.reset_index(drop=True)\n",
"self.matching = self.matching[['inter_no', 'node_id', 'move_no', 'inc_edge_id', 'out_edge_id', 'state']]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_dire</th>\n",
" <th>out_dire</th>\n",
" <th>inc_angle</th>\n",
" <th>out_angle</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>node_id</th>\n",
" <th>turn_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>남</td>\n",
" <td>북</td>\n",
" <td>179</td>\n",
" <td>000</td>\n",
" <td>-571542797_02</td>\n",
" <td>571500487_01</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>4</td>\n",
" <td>북</td>\n",
" <td>남</td>\n",
" <td>001</td>\n",
" <td>180</td>\n",
" <td>-571500487_01</td>\n",
" <td>571542797_02</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>175</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>7</td>\n",
" <td>북</td>\n",
" <td>동</td>\n",
" <td>001</td>\n",
" <td>090</td>\n",
" <td>-571500487_01</td>\n",
" <td>571545870_01</td>\n",
" <td>i0</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>175</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>3</td>\n",
" <td>남</td>\n",
" <td>서</td>\n",
" <td>179</td>\n",
" <td>270</td>\n",
" <td>-571542797_02</td>\n",
" <td>571510153_01</td>\n",
" <td>i0</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>175</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>6</td>\n",
" <td>동</td>\n",
" <td>서</td>\n",
" <td>090</td>\n",
" <td>270</td>\n",
" <td>571545870_02</td>\n",
" <td>571510153_01</td>\n",
" <td>i0</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>103</th>\n",
" <td>210</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>2</td>\n",
" <td>서</td>\n",
" <td>동</td>\n",
" <td>270</td>\n",
" <td>090</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>u60</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>104</th>\n",
" <td>210</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>7</td>\n",
" <td>북</td>\n",
" <td>동</td>\n",
" <td>000</td>\n",
" <td>090</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>u60</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>105</th>\n",
" <td>210</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>4</td>\n",
" <td>북</td>\n",
" <td>남</td>\n",
" <td>000</td>\n",
" <td>180</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>u60</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>106</th>\n",
" <td>210</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>남</td>\n",
" <td>북</td>\n",
" <td>180</td>\n",
" <td>000</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>u60</td>\n",
" <td>straight</td>\n",
" </tr>\n",
" <tr>\n",
" <th>107</th>\n",
" <td>210</td>\n",
" <td>4</td>\n",
" <td>B</td>\n",
" <td>3</td>\n",
" <td>남</td>\n",
" <td>서</td>\n",
" <td>180</td>\n",
" <td>270</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>u60</td>\n",
" <td>left</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>108 rows × 12 columns</p>\n",
"</div>"
],
"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",
".. ... ... ... ... ... ... ... \n",
"103 210 2 B 2 서 동 270 \n",
"104 210 3 A 7 북 동 000 \n",
"105 210 3 B 4 북 남 000 \n",
"106 210 4 A 8 남 북 180 \n",
"107 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",
".. ... ... ... ... ... \n",
"103 090 NaN NaN u60 straight \n",
"104 090 NaN NaN u60 left \n",
"105 180 NaN NaN u60 straight \n",
"106 000 NaN NaN u60 straight \n",
"107 270 NaN NaN u60 left \n",
"\n",
"[108 rows x 12 columns]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"2-3. 직진 및 좌회전(G)을 배정했습니다.\n"
]
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>node_id</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>move_no</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" <th>state</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>175</td>\n",
" <td>i0</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>-571542797_02</td>\n",
" <td>571500487_01</td>\n",
" <td>grrrgrrrgGGGGrgrr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>175</td>\n",
" <td>i0</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>4</td>\n",
" <td>-571500487_01</td>\n",
" <td>571542797_02</td>\n",
" <td>gGGrgrrrgrrrrrgrr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>175</td>\n",
" <td>i0</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>7</td>\n",
" <td>-571500487_01</td>\n",
" <td>571545870_01</td>\n",
" <td>grrGgrrrgrrrrrgrr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>175</td>\n",
" <td>i0</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>3</td>\n",
" <td>-571542797_02</td>\n",
" <td>571510153_01</td>\n",
" <td>grrrgrrrgrrrrGgrr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>175</td>\n",
" <td>i0</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>6</td>\n",
" <td>571545870_02</td>\n",
" <td>571510153_01</td>\n",
" <td>grrrgGGrgrrrrrgrr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>103</th>\n",
" <td>210</td>\n",
" <td>u60</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>2</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggggggr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>104</th>\n",
" <td>210</td>\n",
" <td>u60</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>7</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggggggr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>105</th>\n",
" <td>210</td>\n",
" <td>u60</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>4</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggggggr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>106</th>\n",
" <td>210</td>\n",
" <td>u60</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>8</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggggggr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>107</th>\n",
" <td>210</td>\n",
" <td>u60</td>\n",
" <td>4</td>\n",
" <td>B</td>\n",
" <td>3</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>ggggggggr</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>108 rows × 8 columns</p>\n",
"</div>"
],
"text/plain": [
" inter_no node_id phase_no ring_type move_no inc_edge_id \\\n",
"0 175 i0 1 A 8 -571542797_02 \n",
"1 175 i0 1 B 4 -571500487_01 \n",
"2 175 i0 2 A 7 -571500487_01 \n",
"3 175 i0 2 B 3 -571542797_02 \n",
"4 175 i0 3 A 6 571545870_02 \n",
".. ... ... ... ... ... ... \n",
"103 210 u60 2 B 2 NaN \n",
"104 210 u60 3 A 7 NaN \n",
"105 210 u60 3 B 4 NaN \n",
"106 210 u60 4 A 8 NaN \n",
"107 210 u60 4 B 3 NaN \n",
"\n",
" out_edge_id state \n",
"0 571500487_01 grrrgrrrgGGGGrgrr \n",
"1 571542797_02 gGGrgrrrgrrrrrgrr \n",
"2 571545870_01 grrGgrrrgrrrrrgrr \n",
"3 571510153_01 grrrgrrrgrrrrGgrr \n",
"4 571510153_01 grrrgGGrgrrrrrgrr \n",
".. ... ... \n",
"103 NaN ggggggggr \n",
"104 NaN ggggggggr \n",
"105 NaN ggggggggr \n",
"106 NaN ggggggggr \n",
"107 NaN ggggggggr \n",
"\n",
"[108 rows x 8 columns]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display(self.match6)\n",
"self.assign_signals() # 2-3 신호배정\n",
"display(self.match6)"
]
}
],
"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
}