diff --git a/Analysis/0411_unp-left_p-right-uturn/0411_uturn.ipynb b/Analysis/0411_unp-left_p-right-uturn/0411_uturn.ipynb
index 9f4bb791d..6c6147767 100644
--- a/Analysis/0411_unp-left_p-right-uturn/0411_uturn.ipynb
+++ b/Analysis/0411_unp-left_p-right-uturn/0411_uturn.ipynb
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
@@ -55,7 +55,7 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 17,
"metadata": {},
"outputs": [
{
@@ -93,11 +93,10 @@
"
| \n",
" parent_id | \n",
" child_id | \n",
- " adj_from_edge_id | \n",
- " adj_to_edge_id | \n",
- " from_edge_id | \n",
- " to_edge_id | \n",
- " condition | \n",
+ " adj_inc_edge_id | \n",
+ " adj_out_edge_id | \n",
+ " inc_edge_id | \n",
+ " out_edge_id | \n",
" \n",
" \n",
" \n",
@@ -109,7 +108,6 @@
" 571500487_01 | \n",
" 571500487_02 | \n",
" 571500487_01.32 | \n",
- " 좌회전시 | \n",
" \n",
" \n",
" 1 | \n",
@@ -119,7 +117,6 @@
" 571542811_01 | \n",
" 571542810_01.51 | \n",
" 571542810_02 | \n",
- " 보행신호시 | \n",
"
\n",
" \n",
" 2 | \n",
@@ -129,7 +126,6 @@
" 571556450_01 | \n",
" 571556452_01 | \n",
" 571556452_02 | \n",
- " 보행신호시 | \n",
"
\n",
" \n",
" 3 | \n",
@@ -139,7 +135,6 @@
" 571500475_01 | \n",
" 571500475_02 | \n",
" 571500475_01.26 | \n",
- " 보행신호시 | \n",
"
\n",
" \n",
" 4 | \n",
@@ -149,7 +144,6 @@
" 571540303_01 | \n",
" 571540303_02 | \n",
" -571540303_02 | \n",
- " 보행신호시 | \n",
"
\n",
" \n",
" 5 | \n",
@@ -159,28 +153,27 @@
" 571500535_01 | \n",
" 571500535_02 | \n",
" -571500535_02 | \n",
- " 좌회전시 | \n",
"
\n",
" \n",
"\n",
""
],
"text/plain": [
- " parent_id child_id adj_from_edge_id adj_to_edge_id from_edge_id \\\n",
- "0 i0 u00 -571500487_01 571500487_01 571500487_02 \n",
- "1 i2 u20 571542811_02 571542811_01 571542810_01.51 \n",
- "2 i3 u30 571556450_02 571556450_01 571556452_01 \n",
- "3 i3 u31 -571500475_01 571500475_01 571500475_02 \n",
- "4 i3 u32 571540303_02.21 571540303_01 571540303_02 \n",
- "5 i6 u60 571500535_02.18 571500535_01 571500535_02 \n",
+ " parent_id child_id adj_inc_edge_id adj_out_edge_id inc_edge_id \\\n",
+ "0 i0 u00 -571500487_01 571500487_01 571500487_02 \n",
+ "1 i2 u20 571542811_02 571542811_01 571542810_01.51 \n",
+ "2 i3 u30 571556450_02 571556450_01 571556452_01 \n",
+ "3 i3 u31 -571500475_01 571500475_01 571500475_02 \n",
+ "4 i3 u32 571540303_02.21 571540303_01 571540303_02 \n",
+ "5 i6 u60 571500535_02.18 571500535_01 571500535_02 \n",
"\n",
- " to_edge_id condition \n",
- "0 571500487_01.32 좌회전시 \n",
- "1 571542810_02 보행신호시 \n",
- "2 571556452_02 보행신호시 \n",
- "3 571500475_01.26 보행신호시 \n",
- "4 -571540303_02 보행신호시 \n",
- "5 -571500535_02 좌회전시 "
+ " out_edge_id \n",
+ "0 571500487_01.32 \n",
+ "1 571542810_02 \n",
+ "2 571556452_02 \n",
+ "3 571500475_01.26 \n",
+ "4 -571540303_02 \n",
+ "5 -571500535_02 "
]
},
"metadata": {},
@@ -195,143 +188,17 @@
"self.make_match3()\n",
"self.make_match4()\n",
"self.make_match5()\n",
- "self.u_turn = pd.merge(self.u_turn, self.u_condition, on='child_id')\n",
"display(self.u_turn)"
]
},
{
"cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " parent_id | \n",
- " child_id | \n",
- " adj_from_edge_id | \n",
- " adj_to_edge_id | \n",
- " from_edge_id | \n",
- " to_edge_id | \n",
- " condition | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 0 | \n",
- " i0 | \n",
- " u00 | \n",
- " -571500487_01 | \n",
- " 571500487_01 | \n",
- " 571500487_02 | \n",
- " 571500487_01.32 | \n",
- " 좌회전시 | \n",
- "
\n",
- " \n",
- " 1 | \n",
- " i2 | \n",
- " u20 | \n",
- " 571542811_02 | \n",
- " 571542811_01 | \n",
- " 571542810_01.51 | \n",
- " 571542810_02 | \n",
- " 보행신호시 | \n",
- "
\n",
- " \n",
- " 2 | \n",
- " i3 | \n",
- " u30 | \n",
- " 571556450_02 | \n",
- " 571556450_01 | \n",
- " 571556452_01 | \n",
- " 571556452_02 | \n",
- " 보행신호시 | \n",
- "
\n",
- " \n",
- " 3 | \n",
- " i3 | \n",
- " u31 | \n",
- " -571500475_01 | \n",
- " 571500475_01 | \n",
- " 571500475_02 | \n",
- " 571500475_01.26 | \n",
- " 보행신호시 | \n",
- "
\n",
- " \n",
- " 4 | \n",
- " i3 | \n",
- " u32 | \n",
- " 571540303_02.21 | \n",
- " 571540303_01 | \n",
- " 571540303_02 | \n",
- " -571540303_02 | \n",
- " 보행신호시 | \n",
- "
\n",
- " \n",
- " 5 | \n",
- " i6 | \n",
- " u60 | \n",
- " 571500535_02.18 | \n",
- " 571500535_01 | \n",
- " 571500535_02 | \n",
- " -571500535_02 | \n",
- " 좌회전시 | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " parent_id child_id adj_from_edge_id adj_to_edge_id from_edge_id \\\n",
- "0 i0 u00 -571500487_01 571500487_01 571500487_02 \n",
- "1 i2 u20 571542811_02 571542811_01 571542810_01.51 \n",
- "2 i3 u30 571556450_02 571556450_01 571556452_01 \n",
- "3 i3 u31 -571500475_01 571500475_01 571500475_02 \n",
- "4 i3 u32 571540303_02.21 571540303_01 571540303_02 \n",
- "5 i6 u60 571500535_02.18 571500535_01 571500535_02 \n",
- "\n",
- " to_edge_id condition \n",
- "0 571500487_01.32 좌회전시 \n",
- "1 571542810_02 보행신호시 \n",
- "2 571556452_02 보행신호시 \n",
- "3 571500475_01.26 보행신호시 \n",
- "4 -571540303_02 보행신호시 \n",
- "5 -571500535_02 좌회전시 "
- ]
- },
- "execution_count": 3,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "self.u_turn"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
+ "execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
+ "self.u_turn = pd.merge(self.u_turn, self.u_condition, on='child_id')\n",
+ "\n",
"# p2inc_edge2angle : node_id to inc_edge2angle\n",
"p2inc_edge2angle = dict()\n",
"# p2out_edge2angle : node_id to out_edge2angle\n",
@@ -354,24 +221,18 @@
" p2inc_angle2edge[node_id] = inc_angle2edge\n",
" # out_angle2edge : out_angle to out_edge_id\n",
" out_angle2edge = dict(zip(m5.out_angle.astype(int), m5.out_edge_id))\n",
- " p2out_angle2edge[node_id] = out_angle2edge"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 111,
- "metadata": {},
- "outputs": [],
- "source": [
+ " p2out_angle2edge[node_id] = out_angle2edge\n",
+ "\n",
+ "# 각 uturn node에 대하여 (inc_edge_id, out_edge_id) 부여\n",
"cmatches = []\n",
"for row in self.u_turn.itertuples():\n",
" parent_id = row.parent_id\n",
" child_id = row.child_id\n",
" condition = row.condition\n",
- " inc_edge_id = row.from_edge_id\n",
- " out_edge_id = row.to_edge_id\n",
- " adj_inc_edge_id = row.adj_from_edge_id\n",
- " adj_out_edge_id = row.adj_to_edge_id\n",
+ " inc_edge_id = row.inc_edge_id\n",
+ " out_edge_id = row.out_edge_id\n",
+ " adj_inc_edge_id = row.adj_inc_edge_id\n",
+ " adj_out_edge_id = row.adj_out_edge_id\n",
"\n",
" # match5에서 부모노드id에 해당하는 행들을 가져옴 (cmatch)\n",
" cmatch = self.match5.copy()[self.match5.node_id==parent_id] # match dataframe for a child node\n",
@@ -452,13 +313,12 @@
" cmatch.loc[all_redsigns, ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n",
" # 진출엣지 미포함시\n",
" elif out_true.any():\n",
- " cmatch.loc[~ out_true, ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n",
- " cmatches.append(cmatch)"
+ " cmatch.loc[~ out_true, ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]"
]
},
{
"cell_type": "code",
- "execution_count": 112,
+ "execution_count": 18,
"metadata": {},
"outputs": [
{
@@ -482,105 +342,1052 @@
" \n",
" \n",
" | \n",
- " parent_id | \n",
- " child_id | \n",
- " adj_from_edge_id | \n",
- " adj_to_edge_id | \n",
- " from_edge_id | \n",
- " to_edge_id | \n",
- " condition | \n",
+ " inter_no | \n",
+ " phase_no | \n",
+ " ring_type | \n",
+ " move_no | \n",
+ " inc_dire | \n",
+ " out_dire | \n",
+ " inc_angle | \n",
+ " out_angle | \n",
+ " inc_edge_id | \n",
+ " out_edge_id | \n",
+ " node_id | \n",
+ " turn_type | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
+ " 175 | \n",
+ " 1 | \n",
+ " A | \n",
+ " 8 | \n",
+ " 남 | \n",
+ " 북 | \n",
+ " 179 | \n",
+ " 000 | \n",
+ " -571542797_02 | \n",
+ " 571500487_01 | \n",
" i0 | \n",
- " u00 | \n",
+ " straight | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 175 | \n",
+ " 1 | \n",
+ " B | \n",
+ " 4 | \n",
+ " 북 | \n",
+ " 남 | \n",
+ " 001 | \n",
+ " 180 | \n",
" -571500487_01 | \n",
- " 571500487_01 | \n",
- " 571500487_02 | \n",
- " 571500487_01.32 | \n",
- " 좌회전시 | \n",
+ " 571542797_02 | \n",
+ " i0 | \n",
+ " straight | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 175 | \n",
+ " 2 | \n",
+ " A | \n",
+ " 7 | \n",
+ " 북 | \n",
+ " 동 | \n",
+ " 001 | \n",
+ " 090 | \n",
+ " -571500487_01 | \n",
+ " 571545870_01 | \n",
+ " i0 | \n",
+ " left | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 175 | \n",
+ " 2 | \n",
+ " B | \n",
+ " 3 | \n",
+ " 남 | \n",
+ " 서 | \n",
+ " 179 | \n",
+ " 270 | \n",
+ " -571542797_02 | \n",
+ " 571510153_01 | \n",
+ " i0 | \n",
+ " left | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 175 | \n",
+ " 3 | \n",
+ " A | \n",
+ " 6 | \n",
+ " 동 | \n",
+ " 서 | \n",
+ " 090 | \n",
+ " 270 | \n",
+ " 571545870_02 | \n",
+ " 571510153_01 | \n",
+ " i0 | \n",
+ " straight | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 103 | \n",
+ " 210 | \n",
+ " 2 | \n",
+ " B | \n",
+ " 2 | \n",
+ " 서 | \n",
+ " 동 | \n",
+ " 270 | \n",
+ " 090 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " u60 | \n",
+ " straight | \n",
+ "
\n",
+ " \n",
+ " 104 | \n",
+ " 210 | \n",
+ " 3 | \n",
+ " A | \n",
+ " 7 | \n",
+ " 북 | \n",
+ " 동 | \n",
+ " 000 | \n",
+ " 090 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " u60 | \n",
+ " left | \n",
+ "
\n",
+ " \n",
+ " 105 | \n",
+ " 210 | \n",
+ " 3 | \n",
+ " B | \n",
+ " 4 | \n",
+ " 북 | \n",
+ " 남 | \n",
+ " 000 | \n",
+ " 180 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " u60 | \n",
+ " straight | \n",
+ "
\n",
+ " \n",
+ " 106 | \n",
+ " 210 | \n",
+ " 4 | \n",
+ " A | \n",
+ " 8 | \n",
+ " 남 | \n",
+ " 북 | \n",
+ " 180 | \n",
+ " 000 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " u60 | \n",
+ " straight | \n",
+ "
\n",
+ " \n",
+ " 107 | \n",
+ " 210 | \n",
+ " 4 | \n",
+ " B | \n",
+ " 3 | \n",
+ " 남 | \n",
+ " 서 | \n",
+ " 180 | \n",
+ " 270 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " u60 | \n",
+ " left | \n",
+ "
\n",
+ " \n",
+ "\n",
+ "108 rows × 12 columns
\n",
+ ""
+ ],
+ "text/plain": [
+ " inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
+ "0 175 1 A 8 남 북 179 \n",
+ "1 175 1 B 4 북 남 001 \n",
+ "2 175 2 A 7 북 동 001 \n",
+ "3 175 2 B 3 남 서 179 \n",
+ "4 175 3 A 6 동 서 090 \n",
+ ".. ... ... ... ... ... ... ... \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"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " inter_no | \n",
+ " move_no | \n",
+ " inc_dire | \n",
+ " out_dire | \n",
+ " inc_edge_id | \n",
+ " out_edge_id | \n",
+ " node_id | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 175 | \n",
+ " 1 | \n",
+ " 동 | \n",
+ " 남 | \n",
+ " 571545870_02 | \n",
+ " 571542797_02 | \n",
+ " i0 | \n",
"
\n",
" \n",
" 1 | \n",
- " i2 | \n",
- " u20 | \n",
- " 571542811_02 | \n",
- " 571542811_01 | \n",
- " 571542810_01.51 | \n",
- " 571542810_02 | \n",
- " 보행신호시 | \n",
+ " 175 | \n",
+ " 2 | \n",
+ " 서 | \n",
+ " 동 | \n",
+ " 571510153_02 | \n",
+ " 571545870_01 | \n",
+ " i0 | \n",
"
\n",
" \n",
" 2 | \n",
- " i3 | \n",
- " u30 | \n",
- " 571556450_02 | \n",
- " 571556450_01 | \n",
- " 571556452_01 | \n",
- " 571556452_02 | \n",
- " 보행신호시 | \n",
+ " 175 | \n",
+ " 3 | \n",
+ " 남 | \n",
+ " 서 | \n",
+ " -571542797_02 | \n",
+ " 571510153_01 | \n",
+ " i0 | \n",
"
\n",
" \n",
" 3 | \n",
- " i3 | \n",
- " u31 | \n",
- " -571500475_01 | \n",
- " 571500475_01 | \n",
- " 571500475_02 | \n",
- " 571500475_01.26 | \n",
- " 보행신호시 | \n",
+ " 175 | \n",
+ " 4 | \n",
+ " 북 | \n",
+ " 남 | \n",
+ " -571500487_01 | \n",
+ " 571542797_02 | \n",
+ " i0 | \n",
"
\n",
" \n",
" 4 | \n",
- " i3 | \n",
- " u32 | \n",
- " 571540303_02.21 | \n",
- " 571540303_01 | \n",
- " 571540303_02 | \n",
- " -571540303_02 | \n",
- " 보행신호시 | \n",
+ " 175 | \n",
+ " 5 | \n",
+ " 서 | \n",
+ " 북 | \n",
+ " 571510153_02 | \n",
+ " 571500487_01 | \n",
+ " i0 | \n",
"
\n",
" \n",
- " 5 | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 60 | \n",
+ " 210 | \n",
+ " 21 | \n",
+ " 북 | \n",
+ " 서 | \n",
+ " 571511538_02.121 | \n",
+ " 571500535_01 | \n",
" i6 | \n",
- " u60 | \n",
+ "
\n",
+ " \n",
+ " 61 | \n",
+ " 210 | \n",
+ " 21 | \n",
+ " 서 | \n",
+ " 남 | \n",
" 571500535_02.18 | \n",
- " 571500535_01 | \n",
+ " 571500585_01 | \n",
+ " i6 | \n",
+ "
\n",
+ " \n",
+ " 62 | \n",
+ " 210 | \n",
+ " 21 | \n",
+ " 남 | \n",
+ " 동 | \n",
+ " 571500585_02 | \n",
+ " 571542115_01 | \n",
+ " i6 | \n",
+ "
\n",
+ " \n",
+ " 63 | \n",
+ " 210 | \n",
+ " 21 | \n",
+ " 동 | \n",
+ " 북 | \n",
+ " -571542115_01 | \n",
+ " 571511538_01 | \n",
+ " i6 | \n",
+ "
\n",
+ " \n",
+ " 64 | \n",
+ " 210 | \n",
+ " 5 | \n",
+ " 서 | \n",
+ " 북 | \n",
" 571500535_02 | \n",
" -571500535_02 | \n",
- " 좌회전시 | \n",
+ " u60 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
65 rows × 7 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " inter_no move_no inc_dire out_dire inc_edge_id out_edge_id \\\n",
+ "0 175 1 동 남 571545870_02 571542797_02 \n",
+ "1 175 2 서 동 571510153_02 571545870_01 \n",
+ "2 175 3 남 서 -571542797_02 571510153_01 \n",
+ "3 175 4 북 남 -571500487_01 571542797_02 \n",
+ "4 175 5 서 북 571510153_02 571500487_01 \n",
+ ".. ... ... ... ... ... ... \n",
+ "60 210 21 북 서 571511538_02.121 571500535_01 \n",
+ "61 210 21 서 남 571500535_02.18 571500585_01 \n",
+ "62 210 21 남 동 571500585_02 571542115_01 \n",
+ "63 210 21 동 북 -571542115_01 571511538_01 \n",
+ "64 210 5 서 북 571500535_02 -571500535_02 \n",
+ "\n",
+ " node_id \n",
+ "0 i0 \n",
+ "1 i0 \n",
+ "2 i0 \n",
+ "3 i0 \n",
+ "4 i0 \n",
+ ".. ... \n",
+ "60 i6 \n",
+ "61 i6 \n",
+ "62 i6 \n",
+ "63 i6 \n",
+ "64 u60 \n",
+ "\n",
+ "[65 rows x 7 columns]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "self.make_match6()\n",
+ "display(self.match6)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "self.match6"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 123,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "2. 중간산출물을 생성합니다.\n",
+ "2-1. 매칭 테이블들을 생성했습니다.\n",
+ "2-2. 비보호우회전(g)을 배정했습니다.\n",
+ "2-3. 직진 및 좌회전(G)을 배정했습니다.\n",
+ "2-2. node2num_cycles.json를 저장했습니다.\n"
+ ]
+ }
+ ],
+ "source": [
+ "self.get_intermediates()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " inter_no | \n",
+ " move_no | \n",
+ " inc_dire | \n",
+ " out_dire | \n",
+ " inc_edge_id | \n",
+ " out_edge_id | \n",
+ " node_id | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 64 | \n",
+ " 210 | \n",
+ " 5 | \n",
+ " 서 | \n",
+ " 북 | \n",
+ " 571500535_02 | \n",
+ " -571500535_02 | \n",
+ " u60 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " inter_no move_no inc_dire out_dire inc_edge_id out_edge_id node_id\n",
+ "64 210 5 서 북 571500535_02 -571500535_02 u60"
+ ]
+ },
+ "execution_count": 52,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "self.matching[self.matching.node_id=='u60']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 43,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "ggggggggg\n",
+ "ggggrgggg\n",
+ "ggggrgggg\n"
+ ]
+ }
+ ],
+ "source": [
+ "NODE_ID = 'u00'\n",
+ "self.nodes = [self.net.getNode(node_id) for node_id in self.node_ids]\n",
+ "self.node2init = {}\n",
+ "# 모든 노드들을 순회\n",
+ "for node in self.nodes:\n",
+ " node_id = node.getID()\n",
+ " # 모든 connection\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",
+ " # i번째 connection : ci\n",
+ " for i, ci in conns:\n",
+ " if ci.getTLLinkIndex() < 0:\n",
+ " continue\n",
+ " are_foes = False\n",
+ " # j번째 connection : cj\n",
+ " # 합류지점이 다르면서 상충되는 cj가 존재하면 are_foes = True (r)\n",
+ " # 그외의 경우에는 are_foes = False (g)\n",
+ " for j, cj in conns:\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",
+ "print(''.join(self.node2init[NODE_ID]))\n",
+ "\n",
+ "# 어떤 연결과도 상충이 일어나지는 않지만, 신호가 부여되어 있는 경우에는 r을 부여\n",
+ "for _, row in self.matching.iterrows():\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",
+ " 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",
+ " self.node2init[node_id][index] = 'r'\n",
+ "print(''.join(self.node2init[NODE_ID]))\n",
+ "\n",
+ "# 유턴교차로\n",
+ "for _, row in self.u_turn.iterrows():\n",
+ " node_id = row.child_id\n",
+ " inc_edge_id = row.inc_edge_id\n",
+ " out_edge = row.out_edge_id\n",
+ " if not (pd.isna(inc_edge_id) and pd.isna(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",
+ "print(''.join(self.node2init[NODE_ID]))\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "2-2. 비보호우회전(g)을 배정했습니다.\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "['g', 'g', 'g', 'g', 'g', 'g']"
+ ]
+ },
+ "execution_count": 22,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "self.initialize_state()\n",
+ "\n",
+ "self.node2init['u20']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 131,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "['r', 'r', 'g', 'g', 'r', 'r', 'r']"
+ ]
+ },
+ "execution_count": 131,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "self.node2init['i2']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 132,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " inter_no | \n",
+ " node_id | \n",
+ " phase_no | \n",
+ " ring_type | \n",
+ " move_no | \n",
+ " inc_edge_id | \n",
+ " out_edge_id | \n",
+ " state | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 175 | \n",
+ " i0 | \n",
+ " 1 | \n",
+ " A | \n",
+ " 8 | \n",
+ " -571542797_02 | \n",
+ " 571500487_01 | \n",
+ " grrrgrrrgGGGGrgrr | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 175 | \n",
+ " i0 | \n",
+ " 1 | \n",
+ " B | \n",
+ " 4 | \n",
+ " -571500487_01 | \n",
+ " 571542797_02 | \n",
+ " gGGrgrrrgrrrrrgrr | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 175 | \n",
+ " i0 | \n",
+ " 2 | \n",
+ " A | \n",
+ " 7 | \n",
+ " -571500487_01 | \n",
+ " 571545870_01 | \n",
+ " grrGgrrrgrrrrrgrr | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 175 | \n",
+ " i0 | \n",
+ " 2 | \n",
+ " B | \n",
+ " 3 | \n",
+ " -571542797_02 | \n",
+ " 571510153_01 | \n",
+ " grrrgrrrgrrrrGgrr | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 175 | \n",
+ " i0 | \n",
+ " 3 | \n",
+ " A | \n",
+ " 6 | \n",
+ " 571545870_02 | \n",
+ " 571510153_01 | \n",
+ " grrrgGGrgrrrrrgrr | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " 175 | \n",
+ " i0 | \n",
+ " 3 | \n",
+ " B | \n",
+ " 1 | \n",
+ " 571545870_02 | \n",
+ " 571542797_02 | \n",
+ " grrrgrrGgrrrrrgrr | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " 175 | \n",
+ " i0 | \n",
+ " 4 | \n",
+ " A | \n",
+ " 5 | \n",
+ " 571510153_02 | \n",
+ " 571500487_01 | \n",
+ " grrrgrrrgrrrrrgrG | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " 175 | \n",
+ " i0 | \n",
+ " 4 | \n",
+ " B | \n",
+ " 2 | \n",
+ " 571510153_02 | \n",
+ " 571545870_01 | \n",
+ " grrrgrrrgrrrrrgGr | \n",
+ "
\n",
+ " \n",
+ " 8 | \n",
+ " 175 | \n",
+ " u00 | \n",
+ " 1 | \n",
+ " A | \n",
+ " 8 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ggggrgggg | \n",
+ "
\n",
+ " \n",
+ " 9 | \n",
+ " 175 | \n",
+ " u00 | \n",
+ " 1 | \n",
+ " B | \n",
+ " 4 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ggggrgggg | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " 175 | \n",
+ " u00 | \n",
+ " 2 | \n",
+ " A | \n",
+ " 7 | \n",
+ " 571500487_02 | \n",
+ " 571500487_01.32 | \n",
+ " ggggGgggg | \n",
+ "
\n",
+ " \n",
+ " 11 | \n",
+ " 175 | \n",
+ " u00 | \n",
+ " 2 | \n",
+ " B | \n",
+ " 3 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ggggrgggg | \n",
+ "
\n",
+ " \n",
+ " 12 | \n",
+ " 175 | \n",
+ " u00 | \n",
+ " 3 | \n",
+ " A | \n",
+ " 6 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ggggrgggg | \n",
+ "
\n",
+ " \n",
+ " 13 | \n",
+ " 175 | \n",
+ " u00 | \n",
+ " 3 | \n",
+ " B | \n",
+ " 1 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ggggrgggg | \n",
+ "
\n",
+ " \n",
+ " 14 | \n",
+ " 175 | \n",
+ " u00 | \n",
+ " 4 | \n",
+ " A | \n",
+ " 5 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ggggrgggg | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " 175 | \n",
+ " u00 | \n",
+ " 4 | \n",
+ " B | \n",
+ " 2 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " ggggrgggg | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "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",
+ "5 175 i0 3 B 1 571545870_02 \n",
+ "6 175 i0 4 A 5 571510153_02 \n",
+ "7 175 i0 4 B 2 571510153_02 \n",
+ "8 175 u00 1 A 8 NaN \n",
+ "9 175 u00 1 B 4 NaN \n",
+ "10 175 u00 2 A 7 571500487_02 \n",
+ "11 175 u00 2 B 3 NaN \n",
+ "12 175 u00 3 A 6 NaN \n",
+ "13 175 u00 3 B 1 NaN \n",
+ "14 175 u00 4 A 5 NaN \n",
+ "15 175 u00 4 B 2 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",
+ "5 571542797_02 grrrgrrGgrrrrrgrr \n",
+ "6 571500487_01 grrrgrrrgrrrrrgrG \n",
+ "7 571545870_01 grrrgrrrgrrrrrgGr \n",
+ "8 NaN ggggrgggg \n",
+ "9 NaN ggggrgggg \n",
+ "10 571500487_01.32 ggggGgggg \n",
+ "11 NaN ggggrgggg \n",
+ "12 NaN ggggrgggg \n",
+ "13 NaN ggggrgggg \n",
+ "14 NaN ggggrgggg \n",
+ "15 NaN ggggrgggg "
+ ]
+ },
+ "execution_count": 132,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "self.match6[self.match6.node_id.isin(['i0', 'u00'])]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 127,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " inter_no | \n",
+ " node_id | \n",
+ " phase_no | \n",
+ " ring_type | \n",
+ " move_no | \n",
+ " inc_edge_id | \n",
+ " out_edge_id | \n",
+ " state | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 22 | \n",
+ " 177 | \n",
+ " i2 | \n",
+ " 1 | \n",
+ " A | \n",
+ " 8 | \n",
+ " -571542809_01 | \n",
+ " 571542811_01 | \n",
+ " rrggGGG | \n",
+ "
\n",
+ " \n",
+ " 23 | \n",
+ " 177 | \n",
+ " i2 | \n",
+ " 1 | \n",
+ " B | \n",
+ " 4 | \n",
+ " 571542811_02 | \n",
+ " 571542809_01 | \n",
+ " GGggrrr | \n",
+ "
\n",
+ " \n",
+ " 24 | \n",
+ " 177 | \n",
+ " i2 | \n",
+ " 2 | \n",
+ " A | \n",
+ " 17 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " rrggrrr | \n",
+ "
\n",
+ " \n",
+ " 25 | \n",
+ " 177 | \n",
+ " i2 | \n",
+ " 2 | \n",
+ " B | \n",
+ " 18 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " rrggrrr | \n",
+ "
\n",
+ " \n",
+ " 26 | \n",
+ " 177 | \n",
+ " u20 | \n",
+ " 1 | \n",
+ " A | \n",
+ " 8 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " gggggg | \n",
+ "
\n",
+ " \n",
+ " 27 | \n",
+ " 177 | \n",
+ " u20 | \n",
+ " 1 | \n",
+ " B | \n",
+ " 4 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " gggggg | \n",
+ "
\n",
+ " \n",
+ " 28 | \n",
+ " 177 | \n",
+ " u20 | \n",
+ " 2 | \n",
+ " A | \n",
+ " 17 | \n",
+ " 571542810_01.51 | \n",
+ " 571542810_02 | \n",
+ " ggGggg | \n",
+ "
\n",
+ " \n",
+ " 29 | \n",
+ " 177 | \n",
+ " u20 | \n",
+ " 2 | \n",
+ " B | \n",
+ " 18 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " gggggg | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
- " parent_id child_id adj_from_edge_id adj_to_edge_id from_edge_id \\\n",
- "0 i0 u00 -571500487_01 571500487_01 571500487_02 \n",
- "1 i2 u20 571542811_02 571542811_01 571542810_01.51 \n",
- "2 i3 u30 571556450_02 571556450_01 571556452_01 \n",
- "3 i3 u31 -571500475_01 571500475_01 571500475_02 \n",
- "4 i3 u32 571540303_02.21 571540303_01 571540303_02 \n",
- "5 i6 u60 571500535_02.18 571500535_01 571500535_02 \n",
+ " inter_no node_id phase_no ring_type move_no inc_edge_id \\\n",
+ "22 177 i2 1 A 8 -571542809_01 \n",
+ "23 177 i2 1 B 4 571542811_02 \n",
+ "24 177 i2 2 A 17 NaN \n",
+ "25 177 i2 2 B 18 NaN \n",
+ "26 177 u20 1 A 8 NaN \n",
+ "27 177 u20 1 B 4 NaN \n",
+ "28 177 u20 2 A 17 571542810_01.51 \n",
+ "29 177 u20 2 B 18 NaN \n",
"\n",
- " to_edge_id condition \n",
- "0 571500487_01.32 좌회전시 \n",
- "1 571542810_02 보행신호시 \n",
- "2 571556452_02 보행신호시 \n",
- "3 571500475_01.26 보행신호시 \n",
- "4 -571540303_02 보행신호시 \n",
- "5 -571500535_02 좌회전시 "
+ " out_edge_id state \n",
+ "22 571542811_01 rrggGGG \n",
+ "23 571542809_01 GGggrrr \n",
+ "24 NaN rrggrrr \n",
+ "25 NaN rrggrrr \n",
+ "26 NaN gggggg \n",
+ "27 NaN gggggg \n",
+ "28 571542810_02 ggGggg \n",
+ "29 NaN gggggg "
]
},
- "execution_count": 112,
+ "execution_count": 127,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "self.u_turn"
+ "self.match6[self.match6.node_id.isin(['i2', 'u20'])]"
]
},
{
diff --git a/Scripts/__pycache__/generate_signals.cpython-38.pyc b/Scripts/__pycache__/generate_signals.cpython-38.pyc
index ee8a8970d..2b7ad65bc 100644
Binary files a/Scripts/__pycache__/generate_signals.cpython-38.pyc and b/Scripts/__pycache__/generate_signals.cpython-38.pyc differ
diff --git a/Scripts/__pycache__/preprocess_daily.cpython-38.pyc b/Scripts/__pycache__/preprocess_daily.cpython-38.pyc
index 3dbbca832..b3114b1ae 100644
Binary files a/Scripts/__pycache__/preprocess_daily.cpython-38.pyc and b/Scripts/__pycache__/preprocess_daily.cpython-38.pyc differ