diff --git a/Analysis/0411_unp-left_p-right-uturn/0411_unp-left.ipynb b/Analysis/0411_unp-left_p-right-uturn/0411_unp-left.ipynb
index 2c9db6cd5..aac4cd7c9 100644
--- a/Analysis/0411_unp-left_p-right-uturn/0411_unp-left.ipynb
+++ b/Analysis/0411_unp-left_p-right-uturn/0411_unp-left.ipynb
@@ -67,6 +67,7 @@
"1-2. 테이블들이 로드되었습니다.\n",
"1-3. 네트워크의 모든 clean state requirement들을 체크했습니다.\n",
"1-4. 테이블들의 무결성 검사를 완료했습니다.\n",
+ "1-5. 주요 객체 (리스트, 딕셔너리)들을 저장했습니다.\n",
"2. 중간산출물을 생성합니다.\n",
"2-1. 매칭 테이블들을 생성했습니다.\n",
"2-2. 비보호우회전(g)을 배정했습니다.\n",
@@ -83,7 +84,16 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "self."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
"metadata": {},
"outputs": [
{
@@ -339,153 +349,104 @@
"
\n",
" | \n",
" inter_no | \n",
+ " node_id | \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",
+ " state | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 175 | \n",
+ " i0 | \n",
" 1 | \n",
" A | \n",
" 8 | \n",
- " 남 | \n",
- " 북 | \n",
- " 179 | \n",
- " 000 | \n",
" -571542797_02 | \n",
" 571500487_01 | \n",
- " i0 | \n",
+ " grrrgrrrgGGGGrgrr | \n",
"
\n",
" \n",
" 1 | \n",
" 175 | \n",
+ " i0 | \n",
" 1 | \n",
" B | \n",
" 4 | \n",
- " 북 | \n",
- " 남 | \n",
- " 001 | \n",
- " 180 | \n",
" -571500487_01 | \n",
" 571542797_02 | \n",
- " i0 | \n",
+ " gGGrgrrrgrrrrrgrr | \n",
"
\n",
" \n",
" 2 | \n",
" 175 | \n",
+ " i0 | \n",
" 2 | \n",
" A | \n",
" 7 | \n",
- " 북 | \n",
- " 동 | \n",
- " 001 | \n",
- " 090 | \n",
" -571500487_01 | \n",
" 571545870_01 | \n",
- " i0 | \n",
+ " grrGgrrrgrrrrrgrr | \n",
"
\n",
" \n",
" 3 | \n",
" 175 | \n",
+ " i0 | \n",
" 2 | \n",
" B | \n",
" 3 | \n",
- " 남 | \n",
- " 서 | \n",
- " 179 | \n",
- " 270 | \n",
" -571542797_02 | \n",
" 571510153_01 | \n",
- " i0 | \n",
+ " grrrgrrrgrrrrGgrr | \n",
"
\n",
" \n",
" 4 | \n",
" 175 | \n",
+ " i0 | \n",
" 3 | \n",
" A | \n",
" 6 | \n",
- " 동 | \n",
- " 서 | \n",
- " 090 | \n",
- " 270 | \n",
" 571545870_02 | \n",
" 571510153_01 | \n",
- " i0 | \n",
+ " grrrgGGrgrrrrrgrr | \n",
"
\n",
" \n",
"\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",
+ " inter_no node_id phase_no ring_type move_no inc_edge_id out_edge_id \\\n",
+ "0 175 i0 1 A 8 -571542797_02 571500487_01 \n",
+ "1 175 i0 1 B 4 -571500487_01 571542797_02 \n",
+ "2 175 i0 2 A 7 -571500487_01 571545870_01 \n",
+ "3 175 i0 2 B 3 -571542797_02 571510153_01 \n",
+ "4 175 i0 3 A 6 571545870_02 571510153_01 \n",
"\n",
- " out_angle inc_edge_id out_edge_id node_id \n",
- "0 000 -571542797_02 571500487_01 i0 \n",
- "1 180 -571500487_01 571542797_02 i0 \n",
- "2 090 -571500487_01 571545870_01 i0 \n",
- "3 270 -571542797_02 571510153_01 i0 \n",
- "4 270 571545870_02 571510153_01 i0 "
+ " state \n",
+ "0 grrrgrrrgGGGGrgrr \n",
+ "1 gGGrgrrrgrrrrrgrr \n",
+ "2 grrGgrrrgrrrrrgrr \n",
+ "3 grrrgrrrgrrrrGgrr \n",
+ "4 grrrgGGrgrrrrrgrr "
]
},
"metadata": {},
"output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "True\n"
- ]
}
],
"source": [
"display(self.match4.head())\n",
"display(self.match5.head())\n",
- "display(self.match6.head())\n",
- "print((self.match5.head()==self.match6.head()).all().all())"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "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",
- "2-1. 매칭 테이블들을 생성했습니다.\n"
- ]
- }
- ],
- "source": [
- "self.load_data()\n",
- "self.get_matches()"
+ "display(self.match6.head())"
]
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 18,
"metadata": {},
"outputs": [
{
@@ -524,989 +485,1257 @@
" \n",
" \n",
" \n",
+ " 0 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 7 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 8 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 9 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 10 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 11 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 12 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 13 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 14 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 15 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 16 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 17 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 18 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 19 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 20 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 21 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 22 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 23 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 24 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 25 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 26 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 27 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 28 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 29 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 30 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 31 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 32 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 33 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 34 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 35 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 36 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 37 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 38 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " 39 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
" 40 | \n",
- " 178 | \n",
- " 2 | \n",
- " A | \n",
- " 20 | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " 571542116_01 | \n",
- " -571542116_02.96 | \n",
- " c30 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
"
\n",
" \n",
" 41 | \n",
- " 178 | \n",
- " 2 | \n",
- " B | \n",
- " 20 | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " 571542116_02.96 | \n",
- " 571542116_02.164 | \n",
- " c30 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
"
\n",
" \n",
" 42 | \n",
- " 178 | \n",
- " 3 | \n",
- " A | \n",
- " 20 | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " 571542116_01 | \n",
- " -571542116_02.96 | \n",
- " c30 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " False | \n",
"
\n",
" \n",
" 43 | \n",
- " 178 | \n",
- " 3 | \n",
- " B | \n",
- " 20 | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " 571542116_02.96 | \n",
- " 571542116_02.164 | \n",
- " c30 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " False | \n",
"
\n",
" \n",
" 44 | \n",
- " 178 | \n",
- " 4 | \n",
- " A | \n",
- " 20 | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " 571542116_01 | \n",
- " -571542116_02.96 | \n",
- " c30 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
"
\n",
" \n",
" 45 | \n",
- " 178 | \n",
- " 4 | \n",
- " B | \n",
- " 20 | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " 571542116_02.96 | \n",
- " 571542116_02.164 | \n",
- " c30 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
"
\n",
" \n",
" 46 | \n",
- " 178 | \n",
- " 1 | \n",
- " A | \n",
- " 8 | \n",
- " 남 | \n",
- " 북 | \n",
- " 180 | \n",
- " 000 | \n",
- " 571540304_02 | \n",
- " 571556450_01 | \n",
- " i3 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " False | \n",
"
\n",
" \n",
" 47 | \n",
- " 178 | \n",
- " 1 | \n",
- " B | \n",
- " 4 | \n",
- " 북 | \n",
- " 남 | \n",
- " 000 | \n",
- " 180 | \n",
- " 571556450_02 | \n",
- " 571540304_01 | \n",
- " i3 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " False | \n",
"
\n",
" \n",
" 48 | \n",
- " 178 | \n",
- " 2 | \n",
- " A | \n",
- " 7 | \n",
- " 북 | \n",
- " 동 | \n",
- " 000 | \n",
- " 090 | \n",
- " 571556450_02 | \n",
- " 571500475_01 | \n",
- " i3 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
"
\n",
" \n",
" 49 | \n",
- " 178 | \n",
- " 2 | \n",
- " B | \n",
- " 3 | \n",
- " 남 | \n",
- " 서 | \n",
- " 180 | \n",
- " 270 | \n",
- " 571540304_02 | \n",
- " 571540303_01 | \n",
- " i3 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
"
\n",
" \n",
" 50 | \n",
- " 178 | \n",
- " 3 | \n",
- " A | \n",
- " 5 | \n",
- " 서 | \n",
- " 북 | \n",
- " 270 | \n",
- " 000 | \n",
- " 571540303_02.21 | \n",
- " 571556450_01 | \n",
- " i3 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " False | \n",
"
\n",
" \n",
" 51 | \n",
- " 178 | \n",
- " 3 | \n",
- " B | \n",
- " 2 | \n",
- " 서 | \n",
- " 동 | \n",
- " 270 | \n",
- " 090 | \n",
- " 571540303_02.21 | \n",
- " 571500475_01 | \n",
- " i3 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " False | \n",
"
\n",
" \n",
" 52 | \n",
- " 178 | \n",
- " 4 | \n",
- " A | \n",
- " 6 | \n",
- " 동 | \n",
- " 서 | \n",
- " 090 | \n",
- " 270 | \n",
- " -571500475_01 | \n",
- " 571540303_01 | \n",
- " i3 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
"
\n",
" \n",
" 53 | \n",
- " 178 | \n",
- " 4 | \n",
- " B | \n",
- " 1 | \n",
- " 동 | \n",
- " 남 | \n",
- " 090 | \n",
- " 180 | \n",
- " -571500475_01 | \n",
- " 571540304_01 | \n",
- " i3 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " True | \n",
+ " False | \n",
"
\n",
" \n",
" 54 | \n",
- " 178 | \n",
- " 1 | \n",
- " A | \n",
- " 8 | \n",
- " 남 | \n",
- " 북 | \n",
- " 180 | \n",
- " 000 | \n",
- " NaN | \n",
- " NaN | \n",
- " u30 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
"
\n",
" \n",
" 55 | \n",
- " 178 | \n",
- " 1 | \n",
- " B | \n",
- " 4 | \n",
- " 북 | \n",
- " 남 | \n",
- " 000 | \n",
- " 180 | \n",
- " NaN | \n",
- " NaN | \n",
- " u30 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
"
\n",
" \n",
" 56 | \n",
- " 178 | \n",
- " 2 | \n",
- " A | \n",
- " 7 | \n",
- " 북 | \n",
- " 동 | \n",
- " 000 | \n",
- " 090 | \n",
- " NaN | \n",
- " NaN | \n",
- " u30 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
"
\n",
" \n",
" 57 | \n",
- " 178 | \n",
- " 2 | \n",
- " B | \n",
- " 3 | \n",
- " 남 | \n",
- " 서 | \n",
- " 180 | \n",
- " 270 | \n",
- " NaN | \n",
- " NaN | \n",
- " u30 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
"
\n",
" \n",
" 58 | \n",
- " 178 | \n",
- " 3 | \n",
- " A | \n",
- " 5 | \n",
- " 서 | \n",
- " 북 | \n",
- " 270 | \n",
- " 000 | \n",
- " NaN | \n",
- " NaN | \n",
- " u30 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
"
\n",
" \n",
" 59 | \n",
- " 178 | \n",
- " 3 | \n",
- " B | \n",
- " 2 | \n",
- " 서 | \n",
- " 동 | \n",
- " 270 | \n",
- " 090 | \n",
- " NaN | \n",
- " NaN | \n",
- " u30 | \n",
- "
\n",
- " \n",
- " 60 | \n",
- " 178 | \n",
- " 4 | \n",
- " A | \n",
- " 6 | \n",
- " 동 | \n",
- " 서 | \n",
- " 090 | \n",
- " 270 | \n",
- " 571556452_01 | \n",
- " 571556452_02 | \n",
- " u30 | \n",
- "
\n",
- " \n",
- " 61 | \n",
- " 178 | \n",
- " 4 | \n",
- " B | \n",
- " 1 | \n",
- " 동 | \n",
- " 남 | \n",
- " 090 | \n",
- " 180 | \n",
- " NaN | \n",
- " NaN | \n",
- " u30 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
"
\n",
- " \n",
- " 62 | \n",
- " 178 | \n",
- " 1 | \n",
- " A | \n",
- " 8 | \n",
- " 남 | \n",
- " 북 | \n",
- " 180 | \n",
- " 000 | \n",
- " 571500475_02 | \n",
- " 571500475_01.26 | \n",
- " u31 | \n",
+ "
\n",
+ "\n",
+ ""
+ ],
+ "text/plain": [
+ " inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
+ "0 False False False False False False False \n",
+ "1 False False False False False False False \n",
+ "2 False False False False False False False \n",
+ "3 False False False False False False False \n",
+ "4 False False False False False False False \n",
+ "5 False False False False False False False \n",
+ "6 False False False False False False False \n",
+ "7 False False False False False False False \n",
+ "8 False False False False False False False \n",
+ "9 False False False False False False False \n",
+ "10 False False False False False False False \n",
+ "11 False False False False False False False \n",
+ "12 False False False False False False False \n",
+ "13 False False False False True True True \n",
+ "14 False False False False False False False \n",
+ "15 False False False False False False False \n",
+ "16 False False False False False False False \n",
+ "17 False False False False False False False \n",
+ "18 False False False False True True True \n",
+ "19 False False False False True True True \n",
+ "20 False False False False False False False \n",
+ "21 False False False False False False False \n",
+ "22 False False False False False False False \n",
+ "23 False False False False False False False \n",
+ "24 False False False False False False False \n",
+ "25 False False False False False False False \n",
+ "26 False False False False False False False \n",
+ "27 False False False False False False False \n",
+ "28 False False False False False False False \n",
+ "29 False False False False False False False \n",
+ "30 False False False False False False False \n",
+ "31 False False False False False False False \n",
+ "32 False False False False False False False \n",
+ "33 False False False False False False False \n",
+ "34 False False False False False False False \n",
+ "35 False False False False False False False \n",
+ "36 False False False False False False False \n",
+ "37 False False False False False False False \n",
+ "38 False False False False False False False \n",
+ "39 False False False False False False False \n",
+ "40 False False False False False False False \n",
+ "41 False False False False False False False \n",
+ "42 False False False False True True True \n",
+ "43 False False False False True True True \n",
+ "44 False False False False False False False \n",
+ "45 False False False False False False False \n",
+ "46 False False False False True True True \n",
+ "47 False False False False True True True \n",
+ "48 False False False False False False False \n",
+ "49 False False False False False False False \n",
+ "50 False False False False True True True \n",
+ "51 False False False False True True True \n",
+ "52 False False False False False False False \n",
+ "53 False False False False True True True \n",
+ "54 False False False False False False False \n",
+ "55 False False False False False False False \n",
+ "56 False False False False False False False \n",
+ "57 False False False False False False False \n",
+ "58 False False False False False False False \n",
+ "59 False False False False False False False \n",
+ "\n",
+ " out_angle inc_edge_id out_edge_id node_id \n",
+ "0 False False False False \n",
+ "1 False False False False \n",
+ "2 False False False False \n",
+ "3 False False False False \n",
+ "4 False False False False \n",
+ "5 False False False False \n",
+ "6 False False False False \n",
+ "7 False False False False \n",
+ "8 False False False False \n",
+ "9 False False False False \n",
+ "10 False False False False \n",
+ "11 False False False False \n",
+ "12 False False False False \n",
+ "13 True True True False \n",
+ "14 False False False False \n",
+ "15 False False False False \n",
+ "16 False False False False \n",
+ "17 False False False False \n",
+ "18 True True True False \n",
+ "19 True True True False \n",
+ "20 False False False False \n",
+ "21 False False False False \n",
+ "22 False False False False \n",
+ "23 False False False False \n",
+ "24 False False False False \n",
+ "25 False False False False \n",
+ "26 False False False False \n",
+ "27 False False False False \n",
+ "28 False False False False \n",
+ "29 False False False False \n",
+ "30 False False False False \n",
+ "31 False False False False \n",
+ "32 False False False False \n",
+ "33 False False False False \n",
+ "34 False False False False \n",
+ "35 False False False False \n",
+ "36 False False False False \n",
+ "37 False False False False \n",
+ "38 False False False False \n",
+ "39 False False False False \n",
+ "40 False False False False \n",
+ "41 False False False False \n",
+ "42 True True True False \n",
+ "43 True True True False \n",
+ "44 False False False False \n",
+ "45 False False False False \n",
+ "46 True True True False \n",
+ "47 True True True False \n",
+ "48 False False False False \n",
+ "49 False False False False \n",
+ "50 True True True False \n",
+ "51 True True True False \n",
+ "52 False False False False \n",
+ "53 True True True False \n",
+ "54 False False False False \n",
+ "55 False False False False \n",
+ "56 False False False False \n",
+ "57 False False False False \n",
+ "58 False False False False \n",
+ "59 False False False False "
+ ]
+ },
+ "execution_count": 18,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "self.match5.dropna([''])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "4\n",
+ "2\n",
+ "1\n",
+ "1\n",
+ "2\n",
+ "1\n",
+ "1\n",
+ "1\n",
+ "3\n",
+ "2\n",
+ "3\n",
+ "1\n",
+ "2\n"
+ ]
+ },
+ {
+ "ename": "KeyError",
+ "evalue": "nan",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
+ "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)",
+ "Cell \u001b[1;32mIn[15], line 4\u001b[0m\n\u001b[0;32m 2\u001b[0m inc_edge_id \u001b[38;5;241m=\u001b[39m row\u001b[38;5;241m.\u001b[39minc_edge_id\n\u001b[0;32m 3\u001b[0m out_edge_id \u001b[38;5;241m=\u001b[39m row\u001b[38;5;241m.\u001b[39mout_edge_id\n\u001b[1;32m----> 4\u001b[0m inc_edge \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mnet\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgetEdge\u001b[49m\u001b[43m(\u001b[49m\u001b[43minc_edge_id\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 5\u001b[0m out_edge \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mnet\u001b[38;5;241m.\u001b[39mgetEdge(out_edge_id)\n\u001b[0;32m 6\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;28mlen\u001b[39m(inc_edge\u001b[38;5;241m.\u001b[39mgetConnections(out_edge)))\n",
+ "File \u001b[1;32mC:\\Program Files (x86)\\Eclipse\\Sumo\\tools\\sumolib\\net\\__init__.py:261\u001b[0m, in \u001b[0;36mNet.getEdge\u001b[1;34m(self, id)\u001b[0m\n\u001b[0;32m 260\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mgetEdge\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;28mid\u001b[39m):\n\u001b[1;32m--> 261\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_id2edge\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;28;43mid\u001b[39;49m\u001b[43m]\u001b[49m\n",
+ "\u001b[1;31mKeyError\u001b[0m: nan"
+ ]
+ }
+ ],
+ "source": [
+ "for row in self.match5.itertuples():\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",
+ " print(len(inc_edge.getConnections(out_edge)))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "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.load_data()\n",
+ "self.make_match1()\n",
+ "self.make_match2()\n",
+ "self.make_match3()\n",
+ "self.make_match4()\n",
+ "self.make_match5()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " parent_id | \n",
+ " child_id | \n",
+ " direction | \n",
+ " condition | \n",
+ " inc_edge_id | \n",
+ " out_edge_id | \n",
"
\n",
+ " \n",
+ " \n",
" \n",
- " 63 | \n",
- " 178 | \n",
- " 1 | \n",
- " B | \n",
- " 4 | \n",
+ " 0 | \n",
+ " i0 | \n",
+ " u00 | \n",
" 북 | \n",
- " 남 | \n",
- " 000 | \n",
- " 180 | \n",
- " NaN | \n",
- " NaN | \n",
- " u31 | \n",
+ " 좌회전시 | \n",
+ " 571500487_02 | \n",
+ " 571500487_01.32 | \n",
"
\n",
" \n",
- " 64 | \n",
- " 178 | \n",
- " 2 | \n",
- " A | \n",
- " 7 | \n",
+ " 1 | \n",
+ " i2 | \n",
+ " u20 | \n",
" 북 | \n",
- " 동 | \n",
- " 000 | \n",
- " 090 | \n",
- " NaN | \n",
- " NaN | \n",
- " u31 | \n",
- "
\n",
- " \n",
- " 65 | \n",
- " 178 | \n",
- " 2 | \n",
- " B | \n",
- " 3 | \n",
- " 남 | \n",
- " 서 | \n",
- " 180 | \n",
- " 270 | \n",
- " NaN | \n",
- " NaN | \n",
- " u31 | \n",
+ " 보행신호시 | \n",
+ " 571542810_01.51 | \n",
+ " 571542810_02 | \n",
"
\n",
" \n",
- " 66 | \n",
- " 178 | \n",
- " 3 | \n",
- " A | \n",
- " 5 | \n",
- " 서 | \n",
+ " 2 | \n",
+ " i3 | \n",
+ " u30 | \n",
" 북 | \n",
- " 270 | \n",
- " 000 | \n",
- " NaN | \n",
- " NaN | \n",
- " u31 | \n",
- "
\n",
- " \n",
- " 67 | \n",
- " 178 | \n",
- " 3 | \n",
- " B | \n",
- " 2 | \n",
- " 서 | \n",
- " 동 | \n",
- " 270 | \n",
- " 090 | \n",
- " NaN | \n",
- " NaN | \n",
- " u31 | \n",
+ " 보행신호시 | \n",
+ " 571556452_01 | \n",
+ " 571556452_02 | \n",
"
\n",
" \n",
- " 68 | \n",
- " 178 | \n",
- " 4 | \n",
- " A | \n",
- " 6 | \n",
- " 동 | \n",
- " 서 | \n",
- " 090 | \n",
- " 270 | \n",
- " NaN | \n",
- " NaN | \n",
+ " 3 | \n",
+ " i3 | \n",
" u31 | \n",
- "
\n",
- " \n",
- " 69 | \n",
- " 178 | \n",
- " 4 | \n",
- " B | \n",
- " 1 | \n",
" 동 | \n",
- " 남 | \n",
- " 090 | \n",
- " 180 | \n",
- " NaN | \n",
- " NaN | \n",
- " u31 | \n",
+ " 보행신호시 | \n",
+ " 571500475_02 | \n",
+ " 571500475_01.26 | \n",
"
\n",
" \n",
- " 70 | \n",
- " 178 | \n",
- " 1 | \n",
- " A | \n",
- " 8 | \n",
- " 남 | \n",
- " 북 | \n",
- " 180 | \n",
- " 000 | \n",
- " NaN | \n",
- " NaN | \n",
+ " 4 | \n",
+ " i3 | \n",
" u32 | \n",
- "
\n",
- " \n",
- " 71 | \n",
- " 178 | \n",
- " 1 | \n",
- " B | \n",
- " 4 | \n",
- " 북 | \n",
- " 남 | \n",
- " 000 | \n",
- " 180 | \n",
+ " 서 | \n",
+ " 보행신호시 | \n",
" 571540303_02 | \n",
" -571540303_02 | \n",
- " u32 | \n",
- "
\n",
- " \n",
- " 72 | \n",
- " 178 | \n",
- " 2 | \n",
- " A | \n",
- " 7 | \n",
- " 북 | \n",
- " 동 | \n",
- " 000 | \n",
- " 090 | \n",
- " NaN | \n",
- " NaN | \n",
- " u32 | \n",
- "
\n",
- " \n",
- " 73 | \n",
- " 178 | \n",
- " 2 | \n",
- " B | \n",
- " 3 | \n",
- " 남 | \n",
- " 서 | \n",
- " 180 | \n",
- " 270 | \n",
- " NaN | \n",
- " NaN | \n",
- " u32 | \n",
- "
\n",
- " \n",
- " 74 | \n",
- " 178 | \n",
- " 3 | \n",
- " A | \n",
- " 5 | \n",
- " 서 | \n",
- " 북 | \n",
- " 270 | \n",
- " 000 | \n",
- " NaN | \n",
- " NaN | \n",
- " u32 | \n",
- "
\n",
- " \n",
- " 75 | \n",
- " 178 | \n",
- " 3 | \n",
- " B | \n",
- " 2 | \n",
- " 서 | \n",
- " 동 | \n",
- " 270 | \n",
- " 090 | \n",
- " NaN | \n",
- " NaN | \n",
- " u32 | \n",
- "
\n",
- " \n",
- " 76 | \n",
- " 178 | \n",
- " 4 | \n",
- " A | \n",
- " 6 | \n",
- " 동 | \n",
- " 서 | \n",
- " 090 | \n",
- " 270 | \n",
- " NaN | \n",
- " NaN | \n",
- " u32 | \n",
- "
\n",
- " \n",
- " 77 | \n",
- " 178 | \n",
- " 4 | \n",
- " B | \n",
- " 1 | \n",
- " 동 | \n",
- " 남 | \n",
- " 090 | \n",
- " 180 | \n",
- " NaN | \n",
- " NaN | \n",
- " u32 | \n",
- "
\n",
- " \n",
- " 78 | \n",
- " 201 | \n",
- " 1 | \n",
- " A | \n",
- " 8 | \n",
- " 남 | \n",
- " 북 | \n",
- " 180 | \n",
- " 000 | \n",
- " -571500569_01 | \n",
- " 571500583_02 | \n",
- " i8 | \n",
- "
\n",
- " \n",
- " 79 | \n",
- " 201 | \n",
- " 1 | \n",
- " B | \n",
- " 3 | \n",
- " 남 | \n",
- " 서 | \n",
- " 180 | \n",
- " 270 | \n",
- " -571500569_01 | \n",
- " 571500618_01 | \n",
- " i8 | \n",
"
\n",
" \n",
- " 80 | \n",
- " 201 | \n",
- " 2 | \n",
- " A | \n",
- " 5 | \n",
- " 서 | \n",
- " 북 | \n",
- " 270 | \n",
- " 000 | \n",
- " 571500618_02 | \n",
- " 571500583_02 | \n",
- " i8 | \n",
- "
\n",
- " \n",
- " 81 | \n",
- " 201 | \n",
- " 2 | \n",
- " B | \n",
- " 2 | \n",
- " 서 | \n",
- " 동 | \n",
- " 270 | \n",
- " 090 | \n",
- " 571500618_02 | \n",
- " 571500617_01 | \n",
- " i8 | \n",
- "
\n",
- " \n",
- " 82 | \n",
- " 201 | \n",
- " 3 | \n",
- " A | \n",
- " 6 | \n",
- " 동 | \n",
- " 서 | \n",
- " 090 | \n",
- " 270 | \n",
- " 571500617_02 | \n",
- " 571500618_01 | \n",
- " i8 | \n",
- "
\n",
- " \n",
- " 83 | \n",
- " 201 | \n",
- " 3 | \n",
- " B | \n",
- " 2 | \n",
- " 서 | \n",
- " 동 | \n",
- " 270 | \n",
- " 090 | \n",
- " 571500618_02 | \n",
- " 571500617_01 | \n",
- " i8 | \n",
- "
\n",
- " \n",
- " 84 | \n",
- " 201 | \n",
- " 4 | \n",
- " A | \n",
- " 6 | \n",
- " 동 | \n",
+ " 5 | \n",
+ " i6 | \n",
+ " u60 | \n",
" 서 | \n",
- " 090 | \n",
- " 270 | \n",
- " 571500617_02 | \n",
- " 571500618_01 | \n",
- " i8 | \n",
- "
\n",
- " \n",
- " 85 | \n",
- " 201 | \n",
- " 4 | \n",
- " B | \n",
- " 1 | \n",
- " 동 | \n",
- " 남 | \n",
- " 090 | \n",
- " 180 | \n",
- " 571500617_02 | \n",
- " 571500569_01 | \n",
- " i8 | \n",
- "
\n",
- " \n",
- " 86 | \n",
- " 201 | \n",
- " 5 | \n",
- " A | \n",
- " 7 | \n",
- " 북 | \n",
- " 동 | \n",
- " 000 | \n",
- " 090 | \n",
- " 571500583_01 | \n",
- " 571500617_01 | \n",
- " i8 | \n",
- "
\n",
- " \n",
- " 87 | \n",
- " 201 | \n",
- " 5 | \n",
- " B | \n",
- " 4 | \n",
- " 북 | \n",
- " 남 | \n",
- " 000 | \n",
- " 180 | \n",
- " 571500583_01 | \n",
- " 571500569_01 | \n",
- " i8 | \n",
+ " 좌회전시 | \n",
+ " 571500535_02 | \n",
+ " -571500535_02 | \n",
"
\n",
- " \n",
- " 88 | \n",
- " 202 | \n",
- " 1 | \n",
- " A | \n",
- " 6 | \n",
- " 동 | \n",
- " 서 | \n",
- " 090 | \n",
- " 270 | \n",
- " 571510152_02 | \n",
- " -571510152_01 | \n",
- " i9 | \n",
+ "
\n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " parent_id child_id direction condition inc_edge_id out_edge_id\n",
+ "0 i0 u00 북 좌회전시 571500487_02 571500487_01.32\n",
+ "1 i2 u20 북 보행신호시 571542810_01.51 571542810_02\n",
+ "2 i3 u30 북 보행신호시 571556452_01 571556452_02\n",
+ "3 i3 u31 동 보행신호시 571500475_02 571500475_01.26\n",
+ "4 i3 u32 서 보행신호시 571540303_02 -571540303_02\n",
+ "5 i6 u60 서 좌회전시 571500535_02 -571500535_02"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " parent_id | \n",
+ " child_id | \n",
+ " head_edge_id | \n",
+ " inc_edge_id | \n",
+ " out_edge_id | \n",
"
\n",
+ " \n",
+ " \n",
" \n",
- " 89 | \n",
- " 202 | \n",
- " 1 | \n",
- " B | \n",
- " 2 | \n",
- " 서 | \n",
- " 동 | \n",
- " 270 | \n",
- " 090 | \n",
- " 571510152_01 | \n",
- " 571510152_01.65 | \n",
- " i9 | \n",
+ " 0 | \n",
+ " i0 | \n",
+ " u00 | \n",
+ " -571500487_01 | \n",
+ " 571500487_02 | \n",
+ " 571500487_01.32 | \n",
"
\n",
" \n",
- " 90 | \n",
- " 202 | \n",
- " 2 | \n",
- " A | \n",
- " 17 | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " i9 | \n",
- "
\n",
- " \n",
- " 91 | \n",
- " 202 | \n",
- " 2 | \n",
- " B | \n",
- " 18 | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " i9 | \n",
- "
\n",
- " \n",
- " 92 | \n",
- " 206 | \n",
- " 1 | \n",
- " A | \n",
- " 8 | \n",
- " 남 | \n",
- " 북 | \n",
- " 180 | \n",
- " 000 | \n",
- " -571511538_02 | \n",
- " 571542073_02 | \n",
- " i7 | \n",
+ " 1 | \n",
+ " i2 | \n",
+ " u20 | \n",
+ " 571542811_02 | \n",
+ " 571542810_01.51 | \n",
+ " 571542810_02 | \n",
"
\n",
" \n",
- " 93 | \n",
- " 206 | \n",
- " 1 | \n",
- " B | \n",
- " 4 | \n",
- " 북 | \n",
- " 남 | \n",
- " 000 | \n",
- " 180 | \n",
- " 571542073_01 | \n",
- " 571511538_02 | \n",
- " i7 | \n",
+ " 2 | \n",
+ " i3 | \n",
+ " u30 | \n",
+ " 571556450_02 | \n",
+ " 571556452_01 | \n",
+ " 571556452_02 | \n",
"
\n",
" \n",
- " 94 | \n",
- " 206 | \n",
- " 2 | \n",
- " A | \n",
- " 17 | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " i7 | \n",
- "
\n",
- " \n",
- " 95 | \n",
- " 206 | \n",
- " 2 | \n",
- " B | \n",
- " 18 | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " i7 | \n",
- "
\n",
- " \n",
- " 96 | \n",
- " 206 | \n",
- " 3 | \n",
- " A | \n",
- " 8 | \n",
- " 남 | \n",
- " 북 | \n",
- " 180 | \n",
- " 000 | \n",
- " -571511538_02 | \n",
- " 571542073_02 | \n",
- " i7 | \n",
+ " 3 | \n",
+ " i3 | \n",
+ " u31 | \n",
+ " -571500475_01 | \n",
+ " 571500475_02 | \n",
+ " 571500475_01.26 | \n",
"
\n",
" \n",
- " 97 | \n",
- " 206 | \n",
- " 3 | \n",
- " B | \n",
- " 4 | \n",
- " 북 | \n",
- " 남 | \n",
- " 000 | \n",
- " 180 | \n",
- " 571542073_01 | \n",
- " 571511538_02 | \n",
- " i7 | \n",
+ " 4 | \n",
+ " i3 | \n",
+ " u32 | \n",
+ " 571540303_02.21 | \n",
+ " 571540303_02 | \n",
+ " -571540303_02 | \n",
"
\n",
" \n",
- " 98 | \n",
- " 206 | \n",
- " 4 | \n",
- " A | \n",
- " 17 | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " i7 | \n",
- "
\n",
- " \n",
- " 99 | \n",
- " 206 | \n",
- " 4 | \n",
- " B | \n",
- " 18 | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " NaN | \n",
- " i7 | \n",
+ " 5 | \n",
+ " i6 | \n",
+ " u60 | \n",
+ " 571500535_02.18 | \n",
+ " 571500535_02 | \n",
+ " -571500535_02 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
- " inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n",
- "40 178 2 A 20 NaN NaN NaN \n",
- "41 178 2 B 20 NaN NaN NaN \n",
- "42 178 3 A 20 NaN NaN NaN \n",
- "43 178 3 B 20 NaN NaN NaN \n",
- "44 178 4 A 20 NaN NaN NaN \n",
- "45 178 4 B 20 NaN NaN NaN \n",
- "46 178 1 A 8 남 북 180 \n",
- "47 178 1 B 4 북 남 000 \n",
- "48 178 2 A 7 북 동 000 \n",
- "49 178 2 B 3 남 서 180 \n",
- "50 178 3 A 5 서 북 270 \n",
- "51 178 3 B 2 서 동 270 \n",
- "52 178 4 A 6 동 서 090 \n",
- "53 178 4 B 1 동 남 090 \n",
- "54 178 1 A 8 남 북 180 \n",
- "55 178 1 B 4 북 남 000 \n",
- "56 178 2 A 7 북 동 000 \n",
- "57 178 2 B 3 남 서 180 \n",
- "58 178 3 A 5 서 북 270 \n",
- "59 178 3 B 2 서 동 270 \n",
- "60 178 4 A 6 동 서 090 \n",
- "61 178 4 B 1 동 남 090 \n",
- "62 178 1 A 8 남 북 180 \n",
- "63 178 1 B 4 북 남 000 \n",
- "64 178 2 A 7 북 동 000 \n",
- "65 178 2 B 3 남 서 180 \n",
- "66 178 3 A 5 서 북 270 \n",
- "67 178 3 B 2 서 동 270 \n",
- "68 178 4 A 6 동 서 090 \n",
- "69 178 4 B 1 동 남 090 \n",
- "70 178 1 A 8 남 북 180 \n",
- "71 178 1 B 4 북 남 000 \n",
- "72 178 2 A 7 북 동 000 \n",
- "73 178 2 B 3 남 서 180 \n",
- "74 178 3 A 5 서 북 270 \n",
- "75 178 3 B 2 서 동 270 \n",
- "76 178 4 A 6 동 서 090 \n",
- "77 178 4 B 1 동 남 090 \n",
- "78 201 1 A 8 남 북 180 \n",
- "79 201 1 B 3 남 서 180 \n",
- "80 201 2 A 5 서 북 270 \n",
- "81 201 2 B 2 서 동 270 \n",
- "82 201 3 A 6 동 서 090 \n",
- "83 201 3 B 2 서 동 270 \n",
- "84 201 4 A 6 동 서 090 \n",
- "85 201 4 B 1 동 남 090 \n",
- "86 201 5 A 7 북 동 000 \n",
- "87 201 5 B 4 북 남 000 \n",
- "88 202 1 A 6 동 서 090 \n",
- "89 202 1 B 2 서 동 270 \n",
- "90 202 2 A 17 NaN NaN NaN \n",
- "91 202 2 B 18 NaN NaN NaN \n",
- "92 206 1 A 8 남 북 180 \n",
- "93 206 1 B 4 북 남 000 \n",
- "94 206 2 A 17 NaN NaN NaN \n",
- "95 206 2 B 18 NaN NaN NaN \n",
- "96 206 3 A 8 남 북 180 \n",
- "97 206 3 B 4 북 남 000 \n",
- "98 206 4 A 17 NaN NaN NaN \n",
- "99 206 4 B 18 NaN NaN NaN \n",
- "\n",
- " out_angle inc_edge_id out_edge_id node_id \n",
- "40 NaN 571542116_01 -571542116_02.96 c30 \n",
- "41 NaN 571542116_02.96 571542116_02.164 c30 \n",
- "42 NaN 571542116_01 -571542116_02.96 c30 \n",
- "43 NaN 571542116_02.96 571542116_02.164 c30 \n",
- "44 NaN 571542116_01 -571542116_02.96 c30 \n",
- "45 NaN 571542116_02.96 571542116_02.164 c30 \n",
- "46 000 571540304_02 571556450_01 i3 \n",
- "47 180 571556450_02 571540304_01 i3 \n",
- "48 090 571556450_02 571500475_01 i3 \n",
- "49 270 571540304_02 571540303_01 i3 \n",
- "50 000 571540303_02.21 571556450_01 i3 \n",
- "51 090 571540303_02.21 571500475_01 i3 \n",
- "52 270 -571500475_01 571540303_01 i3 \n",
- "53 180 -571500475_01 571540304_01 i3 \n",
- "54 000 NaN NaN u30 \n",
- "55 180 NaN NaN u30 \n",
- "56 090 NaN NaN u30 \n",
- "57 270 NaN NaN u30 \n",
- "58 000 NaN NaN u30 \n",
- "59 090 NaN NaN u30 \n",
- "60 270 571556452_01 571556452_02 u30 \n",
- "61 180 NaN NaN u30 \n",
- "62 000 571500475_02 571500475_01.26 u31 \n",
- "63 180 NaN NaN u31 \n",
- "64 090 NaN NaN u31 \n",
- "65 270 NaN NaN u31 \n",
- "66 000 NaN NaN u31 \n",
- "67 090 NaN NaN u31 \n",
- "68 270 NaN NaN u31 \n",
- "69 180 NaN NaN u31 \n",
- "70 000 NaN NaN u32 \n",
- "71 180 571540303_02 -571540303_02 u32 \n",
- "72 090 NaN NaN u32 \n",
- "73 270 NaN NaN u32 \n",
- "74 000 NaN NaN u32 \n",
- "75 090 NaN NaN u32 \n",
- "76 270 NaN NaN u32 \n",
- "77 180 NaN NaN u32 \n",
- "78 000 -571500569_01 571500583_02 i8 \n",
- "79 270 -571500569_01 571500618_01 i8 \n",
- "80 000 571500618_02 571500583_02 i8 \n",
- "81 090 571500618_02 571500617_01 i8 \n",
- "82 270 571500617_02 571500618_01 i8 \n",
- "83 090 571500618_02 571500617_01 i8 \n",
- "84 270 571500617_02 571500618_01 i8 \n",
- "85 180 571500617_02 571500569_01 i8 \n",
- "86 090 571500583_01 571500617_01 i8 \n",
- "87 180 571500583_01 571500569_01 i8 \n",
- "88 270 571510152_02 -571510152_01 i9 \n",
- "89 090 571510152_01 571510152_01.65 i9 \n",
- "90 NaN NaN NaN i9 \n",
- "91 NaN NaN NaN i9 \n",
- "92 000 -571511538_02 571542073_02 i7 \n",
- "93 180 571542073_01 571511538_02 i7 \n",
- "94 NaN NaN NaN i7 \n",
- "95 NaN NaN NaN i7 \n",
- "96 000 -571511538_02 571542073_02 i7 \n",
- "97 180 571542073_01 571511538_02 i7 \n",
- "98 NaN NaN NaN i7 \n",
- "99 NaN NaN NaN i7 "
+ " parent_id child_id head_edge_id inc_edge_id out_edge_id\n",
+ "0 i0 u00 -571500487_01 571500487_02 571500487_01.32\n",
+ "1 i2 u20 571542811_02 571542810_01.51 571542810_02\n",
+ "2 i3 u30 571556450_02 571556452_01 571556452_02\n",
+ "3 i3 u31 -571500475_01 571500475_02 571500475_01.26\n",
+ "4 i3 u32 571540303_02.21 571540303_02 -571540303_02\n",
+ "5 i6 u60 571500535_02.18 571500535_02 -571500535_02"
]
},
- "execution_count": 5,
"metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "self.match6[40:100]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [
+ "output_type": "display_data"
+ },
{
"data": {
"text/html": [
@@ -1528,168 +1757,694 @@
" \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",
+ " child_id | \n",
+ " condition | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
- " 175 | \n",
- " 1 | \n",
- " 동 | \n",
- " 남 | \n",
- " 571545870_02 | \n",
- " 571542797_02 | \n",
- " i0 | \n",
+ " u00 | \n",
+ " 좌회전시 | \n",
"
\n",
" \n",
" 1 | \n",
- " 175 | \n",
- " 2 | \n",
- " 서 | \n",
- " 동 | \n",
- " 571510153_02 | \n",
- " 571545870_01 | \n",
- " i0 | \n",
+ " u20 | \n",
+ " 보행신호시 | \n",
"
\n",
" \n",
" 2 | \n",
- " 175 | \n",
- " 3 | \n",
- " 남 | \n",
- " 서 | \n",
- " -571542797_02 | \n",
- " 571510153_01 | \n",
- " i0 | \n",
+ " u30 | \n",
+ " 보행신호시 | \n",
"
\n",
" \n",
" 3 | \n",
- " 175 | \n",
- " 4 | \n",
- " 북 | \n",
- " 남 | \n",
- " -571500487_01 | \n",
- " 571542797_02 | \n",
- " i0 | \n",
+ " u31 | \n",
+ " 보행신호시 | \n",
"
\n",
" \n",
" 4 | \n",
- " 175 | \n",
- " 5 | \n",
- " 서 | \n",
- " 북 | \n",
- " 571510153_02 | \n",
- " 571500487_01 | \n",
- " i0 | \n",
+ " u32 | \n",
+ " 보행신호시 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " u60 | \n",
+ " 좌회전시 | \n",
+ "
\n",
+ " \n",
+ "\n",
+ ""
+ ],
+ "text/plain": [
+ " child_id condition\n",
+ "0 u00 좌회전시\n",
+ "1 u20 보행신호시\n",
+ "2 u30 보행신호시\n",
+ "3 u31 보행신호시\n",
+ "4 u32 보행신호시\n",
+ "5 u60 좌회전시"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " parent_id | \n",
+ " child_id | \n",
+ " head_edge_id | \n",
+ " inc_edge_id | \n",
+ " out_edge_id | \n",
+ " condition | \n",
"
\n",
+ " \n",
+ " \n",
" \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
+ " 0 | \n",
+ " i0 | \n",
+ " u00 | \n",
+ " -571500487_01 | \n",
+ " 571500487_02 | \n",
+ " 571500487_01.32 | \n",
+ " 좌회전시 | \n",
"
\n",
" \n",
- " 71 | \n",
- " 210 | \n",
- " 21 | \n",
- " 북 | \n",
- " 서 | \n",
- " 571511538_02.121 | \n",
- " 571500535_01 | \n",
- " i6 | \n",
+ " 1 | \n",
+ " i2 | \n",
+ " u20 | \n",
+ " 571542811_02 | \n",
+ " 571542810_01.51 | \n",
+ " 571542810_02 | \n",
+ " 보행신호시 | \n",
"
\n",
" \n",
- " 72 | \n",
- " 210 | \n",
- " 21 | \n",
- " 서 | \n",
- " 남 | \n",
- " 571500535_02.18 | \n",
- " 571500585_01 | \n",
- " i6 | \n",
+ " 2 | \n",
+ " i3 | \n",
+ " u30 | \n",
+ " 571556450_02 | \n",
+ " 571556452_01 | \n",
+ " 571556452_02 | \n",
+ " 보행신호시 | \n",
"
\n",
" \n",
- " 73 | \n",
- " 210 | \n",
- " 21 | \n",
- " 남 | \n",
- " 동 | \n",
- " 571500585_02 | \n",
- " 571542115_01 | \n",
- " i6 | \n",
+ " 3 | \n",
+ " i3 | \n",
+ " u31 | \n",
+ " -571500475_01 | \n",
+ " 571500475_02 | \n",
+ " 571500475_01.26 | \n",
+ " 보행신호시 | \n",
"
\n",
" \n",
- " 74 | \n",
- " 210 | \n",
- " 21 | \n",
- " 동 | \n",
- " 북 | \n",
- " -571542115_01 | \n",
- " 571511538_01 | \n",
- " i6 | \n",
+ " 4 | \n",
+ " i3 | \n",
+ " u32 | \n",
+ " 571540303_02.21 | \n",
+ " 571540303_02 | \n",
+ " -571540303_02 | \n",
+ " 보행신호시 | \n",
"
\n",
" \n",
- " 75 | \n",
- " 210 | \n",
- " 5 | \n",
- " 서 | \n",
- " 북 | \n",
+ " 5 | \n",
+ " i6 | \n",
+ " u60 | \n",
+ " 571500535_02.18 | \n",
" 571500535_02 | \n",
" -571500535_02 | \n",
- " u60 | \n",
+ " 좌회전시 | \n",
"
\n",
" \n",
"
\n",
- "
76 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",
- "71 210 21 북 서 571511538_02.121 571500535_01 \n",
- "72 210 21 서 남 571500535_02.18 571500585_01 \n",
- "73 210 21 남 동 571500585_02 571542115_01 \n",
- "74 210 21 동 북 -571542115_01 571511538_01 \n",
- "75 210 5 서 북 571500535_02 -571500535_02 \n",
+ " parent_id child_id head_edge_id inc_edge_id out_edge_id \\\n",
+ "0 i0 u00 -571500487_01 571500487_02 571500487_01.32 \n",
+ "1 i2 u20 571542811_02 571542810_01.51 571542810_02 \n",
+ "2 i3 u30 571556450_02 571556452_01 571556452_02 \n",
+ "3 i3 u31 -571500475_01 571500475_02 571500475_01.26 \n",
+ "4 i3 u32 571540303_02.21 571540303_02 -571540303_02 \n",
+ "5 i6 u60 571500535_02.18 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",
- "71 i6 \n",
- "72 i6 \n",
- "73 i6 \n",
- "74 i6 \n",
- "75 u60 \n",
- "\n",
- "[76 rows x 7 columns]"
+ " condition \n",
+ "0 좌회전시 \n",
+ "1 보행신호시 \n",
+ "2 보행신호시 \n",
+ "3 보행신호시 \n",
+ "4 보행신호시 \n",
+ "5 좌회전시 "
]
},
- "execution_count": 6,
+ "execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "self.matching"
+ "display(self.uturn)\n",
+ "display(self.u_turn)\n",
+ "display(self.u_condition)\n",
+ "\n",
+ "self.u_turn = pd.merge(self.u_turn, self.u_condition, on='child_id')\n",
+ "self.u_turn"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "parent_id i0\n",
+ "child_id u00\n",
+ "head_edge_id -571500487_01\n",
+ "inc_edge_id 571500487_02\n",
+ "out_edge_id 571500487_01.32\n",
+ "condition 좌회전시\n",
+ "Name: 0, dtype: object\n"
+ ]
+ }
+ ],
+ "source": [
+ "cmatches = []\n",
+ "i = 0\n",
+ "row = self.u_turn.iloc[0]\n",
+ "print(row)\n",
+ "child_id = row.child_id\n",
+ "parent_id = row.parent_id\n",
+ "condition = row.condition\n",
+ "inc_edge_id = row.inc_edge_id\n",
+ "out_edge_id = row.out_edge_id\n",
+ "cmatch = self.match5.copy()[self.match5.node_id==parent_id] # match dataframe for a child node\n",
+ "cmatch = cmatch.sort_values(by=['phase_no', 'ring_type']).reset_index(drop=True)\n",
+ "cmatch['node_id'] = child_id"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# 각 uturn node에 대하여 (inc_edge_id, out_edge_id) 부여\n",
+ "cmatches = []\n",
+ "for _, row in self.uturn.iterrows():\n",
+ " child_id = row.child_id\n",
+ " parent_id = row.parent_id\n",
+ " dire = row.direction\n",
+ " condition = row.condition\n",
+ " inc_edge_id = row.inc_edge_id\n",
+ " out_edge_id = row.out_edge_id\n",
+ "\n",
+ " print(parent_id, condition)\n",
+ "\n",
+ " # match5에서 부모노드id에 해당하는 행들을 가져옴 (cmatch)\n",
+ " cmatch = self.match5.copy()[self.match5.node_id==parent_id] # match dataframe for a child node\n",
+ " cmatch = cmatch.sort_values(by=['phase_no', 'ring_type']).reset_index(drop=True)\n",
+ " cmatch['node_id'] = child_id\n",
+ " cmatch[['inc_edge_id', 'out_edge_id']] = np.nan\n",
+ " display(cmatch)\n",
+ "\n",
+ " # 보행신호시/좌회전시 진입/진출방향\n",
+ " ind = self.dires.index(dire)\n",
+ " inc_dire_pedes = self.dires[(ind + 2) % len(self.dires)]\n",
+ " out_dire_pedes = self.dires[(ind - 2) % len(self.dires)]\n",
+ " inc_dire_right = dire\n",
+ " out_dire_right = self.dires[(ind + 2) % len(self.dires)]\n",
+ "\n",
+ " if condition == '보행신호시':\n",
+ " print(inc_dire_pedes, out_dire_pedes)\n",
+ " else:\n",
+ " print(inc_dire_right, out_dire_right)\n",
+ "\n",
+ " # 보행신호시/좌회전시 조건\n",
+ " pedes_exists = (cmatch.inc_dire==inc_dire_pedes) & (cmatch.out_dire==out_dire_pedes)\n",
+ " right_exists = (cmatch.inc_dire==inc_dire_right) & (cmatch.out_dire==out_dire_right)\n",
+ "\n",
+ " # 보행신호시/좌회전시 진입/진출 엣지id 배정\n",
+ " ind = self.dires.index(dire)\n",
+ " if condition == \"보행신호시\":\n",
+ " cmatch.loc[pedes_exists, ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n",
+ " elif condition == \"좌회전시\":\n",
+ " cmatch.loc[right_exists, ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n",
+ " display(cmatch)\n",
+ "\n",
+ " # 신호없음이동류발생시/보행신호이동류발생시 조건\n",
+ " all_redsigns = cmatch.move_no == 18\n",
+ " crosswalk_on = cmatch.move_no == 17\n",
+ "\n",
+ " # 만약 어떤 유턴신호도 배정되지 않았다면\n",
+ " # 좌회전시 → 보행신호시 → 보행신호이동류발생시 → 신호없음이동류발생시 순으로 진입/진출 엣지id 배정\n",
+ " uturn_not_assigned = cmatch[['inc_edge_id','out_edge_id']].isna().any(axis=1).all()\n",
+ " if uturn_not_assigned:\n",
+ " # 좌회전시\n",
+ " if right_exists.any():\n",
+ " cmatch.loc[right_exists, ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n",
+ " # 보행신호시\n",
+ " elif pedes_exists.any():\n",
+ " cmatch.loc[pedes_exists, ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n",
+ " # 보행신호이동류(17) 발생시\n",
+ " elif crosswalk_on.any():\n",
+ " cmatch.loc[crosswalk_on & (cmatch.out_dire!=dire), ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n",
+ " # 신호없음이동류(18) 발생시\n",
+ " elif all_redsigns.any():\n",
+ " cmatch.loc[all_redsigns & (cmatch.out_dire!=dire), ['inc_edge_id', 'out_edge_id']] = [inc_edge_id, out_edge_id]\n",
+ " display(cmatch)\n",
+ "cmatches.append(cmatch)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 51,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "u31\n",
+ "5 5 s\n",
+ "6 6 s\n",
+ "7 7 s\n",
+ "0 0 s\n",
+ "1 1 s\n",
+ "2 2 s\n",
+ "3 3 s\n",
+ "4 4 t\n",
+ "\n",
+ "i3\n",
+ "5 5 r\n",
+ "6 6 s\n",
+ "7 7 s\n",
+ "8 8 s\n",
+ "9 9 l\n",
+ "15 15 r\n",
+ "16 16 s\n",
+ "17 17 s\n",
+ "18 18 s\n",
+ "19 19 l\n",
+ "10 10 r\n",
+ "11 11 s\n",
+ "12 12 s\n",
+ "13 13 s\n",
+ "14 14 l\n",
+ "0 0 r\n",
+ "1 1 s\n",
+ "2 2 s\n",
+ "3 3 s\n",
+ "4 4 l\n",
+ "\n",
+ "u00\n",
+ "5 5 s\n",
+ "6 6 s\n",
+ "7 7 s\n",
+ "8 8 s\n",
+ "0 0 s\n",
+ "1 1 s\n",
+ "2 2 s\n",
+ "3 3 s\n",
+ "4 4 t\n",
+ "\n",
+ "i0\n",
+ "0 0 r\n",
+ "1 1 s\n",
+ "2 2 s\n",
+ "3 3 l\n",
+ "8 8 r\n",
+ "9 9 s\n",
+ "10 10 s\n",
+ "11 11 s\n",
+ "12 12 s\n",
+ "13 13 l\n",
+ "14 14 r\n",
+ "15 15 s\n",
+ "16 16 l\n",
+ "4 4 r\n",
+ "5 5 s\n",
+ "6 6 s\n",
+ "7 7 l\n",
+ "\n",
+ "u60\n",
+ "0 0 s\n",
+ "1 1 s\n",
+ "2 2 s\n",
+ "3 3 s\n",
+ "4 4 s\n",
+ "5 5 s\n",
+ "6 6 s\n",
+ "7 7 s\n",
+ "8 8 t\n",
+ "\n",
+ "d12\n",
+ "\n",
+ "n13\n",
+ "0 -1 s\n",
+ "1 -1 s\n",
+ "2 -1 s\n",
+ "3 -1 s\n",
+ "4 -1 s\n",
+ "\n",
+ "i8\n",
+ "8 8 r\n",
+ "9 9 s\n",
+ "10 10 s\n",
+ "11 11 l\n",
+ "0 0 r\n",
+ "1 1 s\n",
+ "2 2 s\n",
+ "3 3 l\n",
+ "4 4 s\n",
+ "5 5 s\n",
+ "6 6 s\n",
+ "7 7 l\n",
+ "12 12 r\n",
+ "13 13 s\n",
+ "14 14 s\n",
+ "15 15 l\n",
+ "\n",
+ "i9\n",
+ "2 2 s\n",
+ "3 3 s\n",
+ "0 0 s\n",
+ "1 1 s\n",
+ "\n",
+ "n14\n",
+ "2 -1 r\n",
+ "3 -1 s\n",
+ "4 -1 s\n",
+ "5 -1 s\n",
+ "6 -1 s\n",
+ "7 -1 l\n",
+ "0 -1 r\n",
+ "1 -1 l\n",
+ "\n",
+ "n11\n",
+ "3 -1 s\n",
+ "4 -1 s\n",
+ "0 -1 s\n",
+ "1 -1 s\n",
+ "2 -1 s\n",
+ "\n",
+ "i7\n",
+ "4 4 r\n",
+ "5 5 s\n",
+ "6 6 s\n",
+ "3 3 r\n",
+ "0 0 s\n",
+ "1 1 s\n",
+ "2 2 l\n",
+ "\n",
+ "u32\n",
+ "0 0 s\n",
+ "1 1 s\n",
+ "2 2 s\n",
+ "3 3 s\n",
+ "4 4 s\n",
+ "5 5 s\n",
+ "6 6 s\n",
+ "7 7 t\n",
+ "\n",
+ "n06\n",
+ "0 -1 s\n",
+ "1 -1 s\n",
+ "2 -1 s\n",
+ "3 -1 s\n",
+ "4 -1 s\n",
+ "5 -1 s\n",
+ "6 -1 s\n",
+ "\n",
+ "n09\n",
+ "4 -1 s\n",
+ "5 -1 s\n",
+ "6 -1 s\n",
+ "0 -1 s\n",
+ "1 -1 s\n",
+ "2 -1 s\n",
+ "3 -1 s\n",
+ "\n",
+ "i6\n",
+ "4 4 r\n",
+ "5 5 s\n",
+ "6 6 s\n",
+ "7 7 s\n",
+ "8 8 l\n",
+ "12 12 r\n",
+ "13 13 s\n",
+ "14 14 s\n",
+ "15 15 l\n",
+ "9 9 r\n",
+ "10 10 s\n",
+ "11 11 s\n",
+ "0 0 r\n",
+ "1 1 s\n",
+ "2 2 s\n",
+ "3 3 l\n",
+ "\n",
+ "i5\n",
+ "0 0 s\n",
+ "1 1 s\n",
+ "2 2 s\n",
+ "3 3 s\n",
+ "4 4 s\n",
+ "5 5 s\n",
+ "\n",
+ "n08\n",
+ "0 -1 s\n",
+ "1 -1 s\n",
+ "2 -1 s\n",
+ "3 -1 l\n",
+ "7 -1 r\n",
+ "8 -1 s\n",
+ "9 -1 s\n",
+ "10 -1 s\n",
+ "4 -1 r\n",
+ "5 -1 l\n",
+ "6 -1 l\n",
+ "\n",
+ "c30\n",
+ "0 0 s\n",
+ "1 1 s\n",
+ "2 2 s\n",
+ "3 3 s\n",
+ "4 4 s\n",
+ "5 5 s\n",
+ "\n",
+ "n00\n",
+ "2 -1 s\n",
+ "3 -1 s\n",
+ "4 -1 s\n",
+ "5 -1 s\n",
+ "0 -1 s\n",
+ "1 -1 s\n",
+ "\n",
+ "i1\n",
+ "3 3 s\n",
+ "4 4 s\n",
+ "5 5 s\n",
+ "6 6 l\n",
+ "0 0 r\n",
+ "1 1 s\n",
+ "2 2 s\n",
+ "7 7 r\n",
+ "8 8 l\n",
+ "9 9 l\n",
+ "\n",
+ "n10\n",
+ "0 -1 s\n",
+ "1 -1 s\n",
+ "2 -1 s\n",
+ "3 -1 s\n",
+ "4 -1 s\n",
+ "5 -1 s\n",
+ "6 -1 s\n",
+ "7 -1 t\n",
+ "\n",
+ "n04\n",
+ "5 -1 r\n",
+ "6 -1 s\n",
+ "7 -1 s\n",
+ "8 -1 s\n",
+ "9 -1 l\n",
+ "0 -1 s\n",
+ "1 -1 s\n",
+ "2 -1 s\n",
+ "3 -1 l\n",
+ "10 -1 r\n",
+ "4 -1 r\n",
+ "\n",
+ "n03\n",
+ "0 -1 s\n",
+ "1 -1 s\n",
+ "2 -1 s\n",
+ "3 -1 s\n",
+ "4 -1 s\n",
+ "5 -1 s\n",
+ "\n",
+ "i2\n",
+ "3 3 r\n",
+ "4 4 s\n",
+ "5 5 s\n",
+ "6 6 s\n",
+ "2 2 r\n",
+ "0 0 s\n",
+ "1 1 s\n",
+ "\n",
+ "n01\n",
+ "2 -1 s\n",
+ "3 -1 s\n",
+ "4 -1 s\n",
+ "5 -1 s\n",
+ "0 -1 s\n",
+ "1 -1 s\n",
+ "\n",
+ "n02\n",
+ "0 -1 s\n",
+ "1 -1 s\n",
+ "2 -1 s\n",
+ "\n",
+ "d07\n",
+ "\n",
+ "d00\n",
+ "\n",
+ "n12\n",
+ "0 -1 s\n",
+ "1 -1 s\n",
+ "2 -1 r\n",
+ "3 -1 l\n",
+ "4 -1 r\n",
+ "5 -1 s\n",
+ "6 -1 s\n",
+ "\n",
+ "d16\n",
+ "\n",
+ "d11\n",
+ "\n",
+ "d15\n",
+ "\n",
+ "d17\n",
+ "\n",
+ "n15\n",
+ "5 -1 s\n",
+ "6 -1 s\n",
+ "7 -1 s\n",
+ "8 -1 l\n",
+ "2 -1 r\n",
+ "3 -1 s\n",
+ "4 -1 s\n",
+ "0 -1 r\n",
+ "1 -1 l\n",
+ "\n",
+ "d18\n",
+ "\n",
+ "n07\n",
+ "0 -1 s\n",
+ "1 -1 s\n",
+ "2 -1 s\n",
+ "3 -1 l\n",
+ "7 -1 s\n",
+ "8 -1 s\n",
+ "9 -1 s\n",
+ "4 -1 r\n",
+ "5 -1 l\n",
+ "6 -1 l\n",
+ "\n",
+ "d08\n",
+ "\n",
+ "d14\n",
+ "\n",
+ "d13\n",
+ "\n",
+ "d04\n",
+ "\n",
+ "d09\n",
+ "\n",
+ "n05\n",
+ "0 -1 s\n",
+ "1 -1 s\n",
+ "2 -1 s\n",
+ "3 -1 s\n",
+ "4 -1 s\n",
+ "5 -1 s\n",
+ "6 -1 s\n",
+ "7 -1 s\n",
+ "8 -1 s\n",
+ "\n",
+ "u20\n",
+ "0 0 s\n",
+ "1 1 s\n",
+ "2 2 t\n",
+ "3 3 s\n",
+ "4 4 s\n",
+ "5 5 s\n",
+ "\n",
+ "d10\n",
+ "\n",
+ "d03\n",
+ "\n",
+ "d06\n",
+ "\n",
+ "d01\n",
+ "\n",
+ "d05\n",
+ "\n",
+ "u30\n",
+ "5 5 s\n",
+ "6 6 s\n",
+ "7 7 s\n",
+ "0 0 s\n",
+ "1 1 s\n",
+ "2 2 s\n",
+ "3 3 s\n",
+ "4 4 t\n",
+ "\n"
+ ]
+ }
+ ],
+ "source": [
+ "nodes = self.net.getNodes()\n",
+ "for node in nodes:\n",
+ " node_id = node.getID()\n",
+ " print(node_id)\n",
+ " conns = [con for con in node.getConnections()]\n",
+ " for con in conns:\n",
+ " print(con.getJunctionIndex(), con.getTLLinkIndex(), con.getDirection())\n",
+ " print()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "'''Given `inter_no`, `inc_edge_id` and `out_edge_id`, we have `inc_vec = inter2inc2vec[inter_no][inc_edge_id]` and `out_vec = inter2out2vec[inter_no][out_edge_id]`.\n",
+ "Rotate `inc_vec` by 90, 180 and 270 degrees clockwise, to define \n",
+ "`out_vec_left`, `out_vec_straight` and `out_vec_right`.\n",
+ "Define `out_vecs={'right':out_vec_left, 'straight':out_vec_straight, 'right':out_vec_right}`.\n",
+ "Select the key that maximize the similarity of the corresponding value of the key and `inc_vec`.'''"
]
}
],
diff --git a/Data/tables/uturn.csv b/Data/tables/uturn.csv
index e45af0cda..f5c589f18 100644
--- a/Data/tables/uturn.csv
+++ b/Data/tables/uturn.csv
@@ -1,4 +1,4 @@
-parent_id,child_id,head_edge_id,from_edge_id,to_edge_id
+parent_id,child_id,head_edge_id,inc_edge_id,out_edge_id
i0,u00,-571500487_01,571500487_02,571500487_01.32
i2,u20,571542811_02,571542810_01.51,571542810_02
i3,u30,571556450_02,571556452_01,571556452_02
diff --git a/Scripts/__pycache__/preprocess_daily.cpython-38.pyc b/Scripts/__pycache__/preprocess_daily.cpython-38.pyc
index 1021878b8..95e89beb3 100644
Binary files a/Scripts/__pycache__/preprocess_daily.cpython-38.pyc and b/Scripts/__pycache__/preprocess_daily.cpython-38.pyc differ
diff --git a/Scripts/preprocess_daily.py b/Scripts/preprocess_daily.py
index aea0a228d..86c47b9fa 100644
--- a/Scripts/preprocess_daily.py
+++ b/Scripts/preprocess_daily.py
@@ -60,6 +60,8 @@ class DailyPreprocessor():
self.plan = pd.read_csv(os.path.join(self.path_tables, 'plan.csv'), dtype=loading_dtype)
self.inter_node = pd.read_csv(os.path.join(self.path_tables, 'inter_node.csv'), dtype=loading_dtype)
self.uturn = pd.read_csv(os.path.join(self.path_tables, 'child_uturn.csv'), dtype=loading_dtype)
+ self.u_turn = pd.read_csv(os.path.join(self.path_tables, 'uturn.csv'), dtype=loading_dtype)
+ self.u_condition= pd.read_csv(os.path.join(self.path_tables, 'u_condition.csv'), dtype=loading_dtype)
self.coord = pd.read_csv(os.path.join(self.path_tables, 'child_coord.csv'), dtype=loading_dtype)
self.nema = pd.read_csv(os.path.join(self.path_tables, 'nema.csv'), encoding='cp949', dtype=loading_dtype)