Browse Source

a commit before transferring department

master
김선중 1 year ago
parent
commit
00c847142b
12 changed files with 400814 additions and 489 deletions
  1. +102
    -0
      .vscode/launch.json
  2. BIN
      Documents/신호생성 정리(240712).pptx
  3. +8
    -1
      analysis/0807_compare_SIGL_FLOWs/0807_compare_SIGL_FLOWs.ipynb
  4. +165
    -488
      analysis/0809_make_intermediates/make_intermediates.ipynb
  5. +354237
    -0
      analysis/0809_make_intermediates/new_sungnam_network_internal_0811.net.xml
  6. +42208
    -0
      analysis/0809_make_intermediates/new_sungnam_network_internal_target_0811.net.xml
  7. +3887
    -0
      analysis/0809_make_intermediates/nodes.json
  8. BIN
      analysis/0809_make_intermediates/signal_node_matching.xlsx
  9. BIN
      analysis/0809_make_intermediates/signal_node_matching_0809.xlsx
  10. +142
    -0
      analysis/0809_make_intermediates/turn_type_info.csv
  11. +17
    -0
      analysis/0809_make_intermediates/uturn_data_info.csv
  12. +48
    -0
      analysis/0822_fetch_tables_test/fetch_tables.py

+ 102
- 0
.vscode/launch.json View File

@ -3,6 +3,108 @@
"configurations": [ "configurations": [

BIN
Documents/신호생성 정리(240712).pptx View File


+ 8
- 1
analysis/0807_compare_SIGL_FLOWs/0807_compare_SIGL_FLOWs.ipynb View File

@ -3032,9 +3032,16 @@
"print(f'진입방향이 90도 이상 차이나는 경우의 개수 : {len(inc_dots_90)}')\n", "print(f'진입방향이 90도 이상 차이나는 경우의 개수 : {len(inc_dots_90)}')\n",
"print(f'전체 진출방향 개수 : {len(out_dots)}')\n", "print(f'전체 진출방향 개수 : {len(out_dots)}')\n",
"print(f'진출방향이 45도 이상 차이나는 경우의 개수 : {len(out_dots_45)}')\n", "print(f'진출방향이 45도 이상 차이나는 경우의 개수 : {len(out_dots_45)}')\n",
"print(f'진출방향이 90도 이상 차이나는 경우의 개수 : {len(out_dots_90)}')\n"
"print(f'진출방향이 90도 이상 차이나는 경우의 개수 : {len(out_dots_90)}')"
] ]
}, },
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 98, "execution_count": 98,

+ 165
- 488
analysis/0809_make_intermediates/make_intermediates.ipynb View File

@ -2,7 +2,7 @@
"cells": [ "cells": [
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 1,
"execution_count": 14,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
@ -16,7 +16,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 2,
"execution_count": 15,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
@ -29,49 +29,62 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 3,
"execution_count": 16,
"metadata": {}, "metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"56\n",
"436, 437, 438, 442, 443, 444, 455, 456, 457, 458, 459, 460, 461, 462, 463, 472, 474, 482, 483, 484, \n",
"485, 486, 488, 490, 491, 492, 493, 494, 498, 499, 502, 503, 504, 514, 515, 523, 524, 527, 565, 575, \n",
"576, 581, 582, 583, 611, 615, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640\n"
]
}
],
"outputs": [],
"source": [
"self.net = sumolib.net.readNet('new_sungnam_network_internal_target_0811.net.xml')"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [ "source": [
"## 교차로목록 정의\n",
"sixties = pd.read_excel('교차로기반정보_(시범지역).xlsx', header=1)\n",
"self.inter_nos = set(sixties['교차로 ID'].dropna().astype(int))\n",
"# 551, 561은 TC_IF_TOD_RED_YELLO, TN_IF_SIGL_FLOW에 존재하지 않음. TOD 보고서에서도 확인할 수 없음\n",
"# 551 : 보육시설 삼거리, 561 : 공영주차장 단일로\n",
"self.inter_nos = self.inter_nos - {551, 561}\n",
"# 464는 매칭테이블에 존재하지 않음. 500에 매칭되는 node_id가 네트워크에 존재하지 않음.\n",
"# 464 : 성남공판장 단일로, 500 : 단남아파트 단일로\n",
"self.inter_nos = self.inter_nos - {464, 500}\n",
"print(len(self.inter_nos))\n",
"inter_nos_display = \", \".join(map(str, sorted(self.inter_nos)))\n",
"inter_nos_display = \"\\n\".join([inter_nos_display[i:i+100] for i in range(0, len(inter_nos_display), 100)])\n",
"# print(len(inter_nos_display))\n",
"print(inter_nos_display)"
"# ## 교차로목록 정의\n",
"# sixties = pd.read_excel('교차로기반정보_(시범지역).xlsx', header=1)\n",
"# self.inter_nos = set(sixties['교차로 ID'].dropna().astype(int))\n",
"# # 551, 561은 TC_IF_TOD_RED_YELLO, TN_IF_SIGL_FLOW에 존재하지 않음. TOD 보고서에서도 확인할 수 없음\n",
"# # 551 : 보육시설 삼거리, 561 : 공영주차장 단일로\n",
"\n",
"\n",
"# self.inter_nos = self.inter_nos - {551, 561}\n",
"# # 464는 매칭테이블에 존재하지 않음. 500에 매칭되는 node_id가 네트워크에 존재하지 않음.\n",
"# # 464 : 성남공판장 단일로, 500 : 단남아파트 단일로\n",
"# self.inter_nos = self.inter_nos - {464, 500}\n",
"# print(len(self.inter_nos))\n",
"# inter_nos_display = \", \".join(map(str, sorted(self.inter_nos)))\n",
"# inter_nos_display = \"\\n\".join([inter_nos_display[i:i+100] for i in range(0, len(inter_nos_display), 100)])\n",
"# # print(len(inter_nos_display))\n",
"# print(inter_nos_display)"
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [],
"source": [
"## 매칭테이블 정의, 교차로-노드 딕셔너리 정의\n",
"self.inter_node = pd.read_excel('signal_node_matching.xlsx', dtype={'node_id':str})\n",
"self.inter_node = self.inter_node.rename(columns={'signal_id':'inter_no'})\n",
"self.inter_node['inter_type'] = 'parent'\n",
"self.inter_node = self.inter_node[self.inter_node.node_id.isin(node.getID() for node in self.net.getNodes())]"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 4,
"execution_count": 18,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"## 매칭테이블 정의, 교차로-노드 딕셔너리 정의\n", "## 매칭테이블 정의, 교차로-노드 딕셔너리 정의\n",
"self.net = sumolib.net.readNet('new_sungnam_network_internal_0809.net.xml')\n",
"self.inter_node = pd.read_excel('signal_node_matching.xlsx', dtype={'node_id':str})\n", "self.inter_node = pd.read_excel('signal_node_matching.xlsx', dtype={'node_id':str})\n",
"self.inter_node = self.inter_node.rename(columns={'signal_id':'inter_no'})\n", "self.inter_node = self.inter_node.rename(columns={'signal_id':'inter_no'})\n",
"self.inter_node['inter_type'] = 'parent'\n", "self.inter_node['inter_type'] = 'parent'\n",
"self.inter_node = self.inter_node[self.inter_node.inter_no.isin(self.inter_nos)].reset_index(drop=True)\n",
"# self.inter_node = self.inter_node[self.inter_node.inter_no.isin(self.inter_nos)].reset_index(drop=True)\n",
"self.inter_nos = sorted(self.inter_node.inter_no)\n",
"\n", "\n",
"# 일대일대응 확인\n", "# 일대일대응 확인\n",
"if not len(self.inter_node) == self.inter_node.inter_no.nunique() == self.inter_node.node_id.nunique():\n", "if not len(self.inter_node) == self.inter_node.inter_no.nunique() == self.inter_node.node_id.nunique():\n",
@ -85,7 +98,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 5,
"execution_count": 19,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
@ -100,7 +113,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 6,
"execution_count": 20,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
@ -133,12 +146,12 @@
"self.dayplan = self.dayplan.rename(columns=rename_cname)\n", "self.dayplan = self.dayplan.rename(columns=rename_cname)\n",
"self.holyplan = self.holyplan.rename(columns=rename_cname)\n", "self.holyplan = self.holyplan.rename(columns=rename_cname)\n",
"self.weekplan = self.weekplan.rename(columns=rename_cname)\n", "self.weekplan = self.weekplan.rename(columns=rename_cname)\n",
"self.red_yel = self.red_yel.rename(columns=rename_cname)\n"
"self.red_yel = self.red_yel.rename(columns=rename_cname)"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 7,
"execution_count": 21,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
@ -178,7 +191,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 8,
"execution_count": 22,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
@ -266,7 +279,7 @@
" <td>...</td>\n", " <td>...</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>371</th>\n",
" <th>354</th>\n",
" <td>639</td>\n", " <td>639</td>\n",
" <td>4</td>\n", " <td>4</td>\n",
" <td>A</td>\n", " <td>A</td>\n",
@ -275,7 +288,7 @@
" <td>120312</td>\n", " <td>120312</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>372</th>\n",
" <th>355</th>\n",
" <td>639</td>\n", " <td>639</td>\n",
" <td>4</td>\n", " <td>4</td>\n",
" <td>B</td>\n", " <td>B</td>\n",
@ -284,7 +297,7 @@
" <td>126221</td>\n", " <td>126221</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>373</th>\n",
" <th>356</th>\n",
" <td>640</td>\n", " <td>640</td>\n",
" <td>1</td>\n", " <td>1</td>\n",
" <td>A</td>\n", " <td>A</td>\n",
@ -293,7 +306,7 @@
" <td>226052</td>\n", " <td>226052</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>374</th>\n",
" <th>357</th>\n",
" <td>640</td>\n", " <td>640</td>\n",
" <td>1</td>\n", " <td>1</td>\n",
" <td>B</td>\n", " <td>B</td>\n",
@ -302,7 +315,7 @@
" <td>043222</td>\n", " <td>043222</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>375</th>\n",
" <th>358</th>\n",
" <td>640</td>\n", " <td>640</td>\n",
" <td>2</td>\n", " <td>2</td>\n",
" <td>A</td>\n", " <td>A</td>\n",
@ -312,7 +325,7 @@
" </tr>\n", " </tr>\n",
" </tbody>\n", " </tbody>\n",
"</table>\n", "</table>\n",
"<p>376 rows × 6 columns</p>\n",
"<p>359 rows × 6 columns</p>\n",
"</div>" "</div>"
], ],
"text/plain": [ "text/plain": [
@ -323,16 +336,16 @@
"3 436 2 B 3 0 172263\n", "3 436 2 B 3 0 172263\n",
"4 436 3 A 7 0 356074\n", "4 436 3 A 7 0 356074\n",
".. ... ... ... ... ... ...\n", ".. ... ... ... ... ... ...\n",
"371 639 4 A 6 0 120312\n",
"372 639 4 B 1 0 126221\n",
"373 640 1 A 8 0 226052\n",
"374 640 1 B 4 0 043222\n",
"375 640 2 A 17 0 None\n",
"354 639 4 A 6 0 120312\n",
"355 639 4 B 1 0 126221\n",
"356 640 1 A 8 0 226052\n",
"357 640 1 B 4 0 043222\n",
"358 640 2 A 17 0 None\n",
"\n", "\n",
"[376 rows x 6 columns]"
"[359 rows x 6 columns]"
] ]
}, },
"execution_count": 8,
"execution_count": 22,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
@ -372,7 +385,6 @@
"\n", "\n",
" # 각도코드 설정\n", " # 각도코드 설정\n",
" angle_code = str(inc_angle).zfill(3) + str(out_angle).zfill(3)\n", " angle_code = str(inc_angle).zfill(3) + str(out_angle).zfill(3)\n",
" # print(angle_code)\n",
" self.angle.loc[ind, 'angle_code'] = angle_code\n", " self.angle.loc[ind, 'angle_code'] = angle_code\n",
" else:\n", " else:\n",
" self.angle.loc[ind, 'angle_code'] = None\n", " self.angle.loc[ind, 'angle_code'] = None\n",
@ -384,7 +396,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 13,
"execution_count": 23,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
@ -458,35 +470,35 @@
" <td>...</td>\n", " <td>...</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>383</th>\n",
" <th>367</th>\n",
" <td>576</td>\n", " <td>576</td>\n",
" <td>2</td>\n", " <td>2</td>\n",
" <td>B</td>\n", " <td>B</td>\n",
" <td>17</td>\n", " <td>17</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>384</th>\n",
" <th>368</th>\n",
" <td>582</td>\n", " <td>582</td>\n",
" <td>2</td>\n", " <td>2</td>\n",
" <td>B</td>\n", " <td>B</td>\n",
" <td>17</td>\n", " <td>17</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>385</th>\n",
" <th>369</th>\n",
" <td>632</td>\n", " <td>632</td>\n",
" <td>2</td>\n", " <td>2</td>\n",
" <td>B</td>\n", " <td>B</td>\n",
" <td>17</td>\n", " <td>17</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>386</th>\n",
" <th>370</th>\n",
" <td>634</td>\n", " <td>634</td>\n",
" <td>4</td>\n", " <td>4</td>\n",
" <td>B</td>\n", " <td>B</td>\n",
" <td>5</td>\n", " <td>5</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>387</th>\n",
" <th>371</th>\n",
" <td>640</td>\n", " <td>640</td>\n",
" <td>2</td>\n", " <td>2</td>\n",
" <td>B</td>\n", " <td>B</td>\n",
@ -494,7 +506,7 @@
" </tr>\n", " </tr>\n",
" </tbody>\n", " </tbody>\n",
"</table>\n", "</table>\n",
"<p>388 rows × 4 columns</p>\n",
"<p>372 rows × 4 columns</p>\n",
"</div>" "</div>"
], ],
"text/plain": [ "text/plain": [
@ -505,13 +517,13 @@
"3 436 2 B 3\n", "3 436 2 B 3\n",
"4 436 3 A 7\n", "4 436 3 A 7\n",
".. ... ... ... ...\n", ".. ... ... ... ...\n",
"383 576 2 B 17\n",
"384 582 2 B 17\n",
"385 632 2 B 17\n",
"386 634 4 B 5\n",
"387 640 2 B 17\n",
"367 576 2 B 17\n",
"368 582 2 B 17\n",
"369 632 2 B 17\n",
"370 634 4 B 5\n",
"371 640 2 B 17\n",
"\n", "\n",
"[388 rows x 4 columns]"
"[372 rows x 4 columns]"
] ]
}, },
"metadata": {}, "metadata": {},
@ -588,35 +600,35 @@
" <td>...</td>\n", " <td>...</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>383</th>\n",
" <th>367</th>\n",
" <td>576</td>\n", " <td>576</td>\n",
" <td>2</td>\n", " <td>2</td>\n",
" <td>B</td>\n", " <td>B</td>\n",
" <td>17</td>\n", " <td>17</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>384</th>\n",
" <th>368</th>\n",
" <td>582</td>\n", " <td>582</td>\n",
" <td>2</td>\n", " <td>2</td>\n",
" <td>B</td>\n", " <td>B</td>\n",
" <td>17</td>\n", " <td>17</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>385</th>\n",
" <th>369</th>\n",
" <td>632</td>\n", " <td>632</td>\n",
" <td>2</td>\n", " <td>2</td>\n",
" <td>B</td>\n", " <td>B</td>\n",
" <td>17</td>\n", " <td>17</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>386</th>\n",
" <th>370</th>\n",
" <td>634</td>\n", " <td>634</td>\n",
" <td>4</td>\n", " <td>4</td>\n",
" <td>B</td>\n", " <td>B</td>\n",
" <td>5</td>\n", " <td>5</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>387</th>\n",
" <th>371</th>\n",
" <td>640</td>\n", " <td>640</td>\n",
" <td>2</td>\n", " <td>2</td>\n",
" <td>B</td>\n", " <td>B</td>\n",
@ -624,7 +636,7 @@
" </tr>\n", " </tr>\n",
" </tbody>\n", " </tbody>\n",
"</table>\n", "</table>\n",
"<p>388 rows × 4 columns</p>\n",
"<p>372 rows × 4 columns</p>\n",
"</div>" "</div>"
], ],
"text/plain": [ "text/plain": [
@ -635,13 +647,13 @@
"3 436 2 B 3\n", "3 436 2 B 3\n",
"4 436 3 A 7\n", "4 436 3 A 7\n",
".. ... ... ... ...\n", ".. ... ... ... ...\n",
"383 576 2 B 17\n",
"384 582 2 B 17\n",
"385 632 2 B 17\n",
"386 634 4 B 5\n",
"387 640 2 B 17\n",
"367 576 2 B 17\n",
"368 582 2 B 17\n",
"369 632 2 B 17\n",
"370 634 4 B 5\n",
"371 640 2 B 17\n",
"\n", "\n",
"[388 rows x 4 columns]"
"[372 rows x 4 columns]"
] ]
}, },
"metadata": {}, "metadata": {},
@ -690,62 +702,37 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 10,
"execution_count": 73,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
"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>parent_id</th>\n",
" <th>child_id</th>\n",
" <th>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>inc_edge_id</th>\n",
" <th>out_edge_id</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [ "text/plain": [
"Empty DataFrame\n",
"Columns: [parent_id, child_id, phase_no, ring_type, inc_edge_id, out_edge_id]\n",
"Index: []"
"['make_intermediates.ipynb',\n",
" 'new_sungnam_network_internal_0809.net.xml',\n",
" 'new_sungnam_network_internal_0811.net.xml',\n",
" 'new_sungnam_network_internal_target_0811.net.xml',\n",
" 'nodes.json',\n",
" 'signal_node_matching.xlsx',\n",
" 'signal_node_matching_0809.xlsx',\n",
" 'sn_admin_tables',\n",
" 'turn_type_info.csv',\n",
" 'uturn_data_info.csv',\n",
" '교차로기반정보_(시범지역).xlsx']"
] ]
}, },
"execution_count": 10,
"execution_count": 73,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
], ],
"source": [ "source": [
"# # self.coord : 연등교차로 테이블 생성\n",
"# self.coord = pd.DataFrame(columns=['parent_id', 'child_id', 'phase_no', 'ring_type', 'inc_edge_id', 'out_edge_id'])"
"os.listdir()"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 11,
"execution_count": 78,
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
@ -769,450 +756,140 @@
" <thead>\n", " <thead>\n",
" <tr style=\"text-align: right;\">\n", " <tr style=\"text-align: right;\">\n",
" <th></th>\n", " <th></th>\n",
" <th>inter_no</th>\n",
" <th>node_id</th>\n",
" <th>inter_type</th>\n",
" <th>child_id</th>\n",
" <th>condition</th>\n",
" </tr>\n", " </tr>\n",
" </thead>\n", " </thead>\n",
" <tbody>\n", " <tbody>\n",
" <tr>\n", " <tr>\n",
" <th>0</th>\n", " <th>0</th>\n",
" <td>436</td>\n",
" <td>109836</td>\n",
" <td>parent</td>\n",
" <td>109187</td>\n",
" <td>좌회전시</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>1</th>\n", " <th>1</th>\n",
" <td>437</td>\n",
" <td>109986</td>\n",
" <td>parent</td>\n",
" <td>109188</td>\n",
" <td>좌회전시</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>2</th>\n", " <th>2</th>\n",
" <td>438</td>\n",
" <td>106350</td>\n",
" <td>parent</td>\n",
" <td>109189</td>\n",
" <td>좌회전시</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>3</th>\n", " <th>3</th>\n",
" <td>442</td>\n",
" <td>106332</td>\n",
" <td>parent</td>\n",
" <td>109192</td>\n",
" <td>좌회전시</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>4</th>\n", " <th>4</th>\n",
" <td>443</td>\n",
" <td>108769</td>\n",
" <td>parent</td>\n",
" <td>109193</td>\n",
" <td>좌회전시</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>5</th>\n", " <th>5</th>\n",
" <td>444</td>\n",
" <td>109842</td>\n",
" <td>parent</td>\n",
" <td>109595</td>\n",
" <td>좌회전시</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>6</th>\n", " <th>6</th>\n",
" <td>455</td>\n",
" <td>109901</td>\n",
" <td>parent</td>\n",
" <td>107169</td>\n",
" <td>좌회전시</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>7</th>\n", " <th>7</th>\n",
" <td>456</td>\n",
" <td>106231</td>\n",
" <td>parent</td>\n",
" <td>108093</td>\n",
" <td>좌회전시</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>8</th>\n", " <th>8</th>\n",
" <td>457</td>\n",
" <td>106234</td>\n",
" <td>parent</td>\n",
" <td>108098</td>\n",
" <td>좌회전시</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>9</th>\n", " <th>9</th>\n",
" <td>458</td>\n",
" <td>106238</td>\n",
" <td>parent</td>\n",
" <td>108102</td>\n",
" <td>좌회전시</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>10</th>\n", " <th>10</th>\n",
" <td>459</td>\n",
" <td>106242</td>\n",
" <td>parent</td>\n",
" <td>108099</td>\n",
" <td>좌회전시</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>11</th>\n", " <th>11</th>\n",
" <td>460</td>\n",
" <td>109946</td>\n",
" <td>parent</td>\n",
" <td>108106</td>\n",
" <td>좌회전시</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>12</th>\n", " <th>12</th>\n",
" <td>461</td>\n",
" <td>109829</td>\n",
" <td>parent</td>\n",
" <td>107717</td>\n",
" <td>좌회전시</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>13</th>\n", " <th>13</th>\n",
" <td>462</td>\n",
" <td>106174</td>\n",
" <td>parent</td>\n",
" <td>110754</td>\n",
" <td>좌회전시</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>14</th>\n", " <th>14</th>\n",
" <td>463</td>\n",
" <td>106267</td>\n",
" <td>parent</td>\n",
" <td>109205</td>\n",
" <td>좌회전시</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>15</th>\n", " <th>15</th>\n",
" <td>472</td>\n",
" <td>109965</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>474</td>\n",
" <td>109845</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>482</td>\n",
" <td>106329</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>483</td>\n",
" <td>107928</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>484</td>\n",
" <td>106303</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>485</td>\n",
" <td>107940</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>486</td>\n",
" <td>106273</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>488</td>\n",
" <td>107093</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>490</td>\n",
" <td>106908</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>491</td>\n",
" <td>109987</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>492</td>\n",
" <td>106244</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>493</td>\n",
" <td>106225</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>494</td>\n",
" <td>108235</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>498</td>\n",
" <td>107120</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>499</td>\n",
" <td>107111</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>502</td>\n",
" <td>106286</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>503</td>\n",
" <td>106313</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>504</td>\n",
" <td>109897</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>514</td>\n",
" <td>106708</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>515</td>\n",
" <td>106969</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>523</td>\n",
" <td>106325</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>524</td>\n",
" <td>107049</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>527</td>\n",
" <td>107123</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>565</td>\n",
" <td>109943</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>575</td>\n",
" <td>106197</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>576</td>\n",
" <td>107955</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>581</td>\n",
" <td>106326</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>582</td>\n",
" <td>108639</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>583</td>\n",
" <td>106184</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>611</td>\n",
" <td>107345</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>615</td>\n",
" <td>106717</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>631</td>\n",
" <td>109823</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>632</td>\n",
" <td>109964</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>633</td>\n",
" <td>106450</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>634</td>\n",
" <td>108112</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50</th>\n",
" <td>635</td>\n",
" <td>108179</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51</th>\n",
" <td>636</td>\n",
" <td>107293</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>637</td>\n",
" <td>109852</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td>638</td>\n",
" <td>109853</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54</th>\n",
" <td>639</td>\n",
" <td>109854</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>55</th>\n",
" <td>640</td>\n",
" <td>109990</td>\n",
" <td>parent</td>\n",
" <td>107270</td>\n",
" <td>좌회전시</td>\n",
" </tr>\n", " </tr>\n",
" </tbody>\n", " </tbody>\n",
"</table>\n", "</table>\n",
"</div>" "</div>"
], ],
"text/plain": [ "text/plain": [
" inter_no node_id inter_type\n",
"0 436 109836 parent\n",
"1 437 109986 parent\n",
"2 438 106350 parent\n",
"3 442 106332 parent\n",
"4 443 108769 parent\n",
"5 444 109842 parent\n",
"6 455 109901 parent\n",
"7 456 106231 parent\n",
"8 457 106234 parent\n",
"9 458 106238 parent\n",
"10 459 106242 parent\n",
"11 460 109946 parent\n",
"12 461 109829 parent\n",
"13 462 106174 parent\n",
"14 463 106267 parent\n",
"15 472 109965 parent\n",
"16 474 109845 parent\n",
"17 482 106329 parent\n",
"18 483 107928 parent\n",
"19 484 106303 parent\n",
"20 485 107940 parent\n",
"21 486 106273 parent\n",
"22 488 107093 parent\n",
"23 490 106908 parent\n",
"24 491 109987 parent\n",
"25 492 106244 parent\n",
"26 493 106225 parent\n",
"27 494 108235 parent\n",
"28 498 107120 parent\n",
"29 499 107111 parent\n",
"30 502 106286 parent\n",
"31 503 106313 parent\n",
"32 504 109897 parent\n",
"33 514 106708 parent\n",
"34 515 106969 parent\n",
"35 523 106325 parent\n",
"36 524 107049 parent\n",
"37 527 107123 parent\n",
"38 565 109943 parent\n",
"39 575 106197 parent\n",
"40 576 107955 parent\n",
"41 581 106326 parent\n",
"42 582 108639 parent\n",
"43 583 106184 parent\n",
"44 611 107345 parent\n",
"45 615 106717 parent\n",
"46 631 109823 parent\n",
"47 632 109964 parent\n",
"48 633 106450 parent\n",
"49 634 108112 parent\n",
"50 635 108179 parent\n",
"51 636 107293 parent\n",
"52 637 109852 parent\n",
"53 638 109853 parent\n",
"54 639 109854 parent\n",
"55 640 109990 parent"
" child_id condition\n",
"0 109187 좌회전시\n",
"1 109188 좌회전시\n",
"2 109189 좌회전시\n",
"3 109192 좌회전시\n",
"4 109193 좌회전시\n",
"5 109595 좌회전시\n",
"6 107169 좌회전시\n",
"7 108093 좌회전시\n",
"8 108098 좌회전시\n",
"9 108102 좌회전시\n",
"10 108099 좌회전시\n",
"11 108106 좌회전시\n",
"12 107717 좌회전시\n",
"13 110754 좌회전시\n",
"14 109205 좌회전시\n",
"15 107270 좌회전시"
] ]
}, },
"execution_count": 11,
"execution_count": 78,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
], ],
"source": [ "source": [
"self.inter_node"
"self.uturn = pd.read_csv('uturn_data_info.csv')\n",
"self.u_condition = self.uturn.copy()[['child_id']]\n",
"self.u_condition['condition'] = '좌회전시'\n",
"self.u_condition"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 41,
"execution_count": 24,
"metadata": {}, "metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['make_intermediates.ipynb',\n",
" 'new_sungnam_network_internal_0809.net.xml',\n",
" 'signal_node_matching.xlsx',\n",
" 'sn_admin_tables',\n",
" '~$signal_node_matching.xlsx',\n",
" '~$교차로기반정보_(시범지역).xlsx',\n",
" '교차로기반정보_(시범지역).xlsx']"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"outputs": [],
"source": [ "source": [
"os.listdir()"
"# # self.coord : 연등교차로 테이블 생성\n",
"# self.coord = pd.DataFrame(columns=['parent_id', 'child_id', 'phase_no', 'ring_type', 'inc_edge_id', 'out_edge_id'])"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 42,
"execution_count": 27,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
@ -1228,7 +905,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 43,
"execution_count": null,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [

+ 354237
- 0
analysis/0809_make_intermediates/new_sungnam_network_internal_0811.net.xml
File diff suppressed because it is too large
View File


+ 42208
- 0
analysis/0809_make_intermediates/new_sungnam_network_internal_target_0811.net.xml
File diff suppressed because it is too large
View File


+ 3887
- 0
analysis/0809_make_intermediates/nodes.json
File diff suppressed because it is too large
View File


BIN
analysis/0809_make_intermediates/signal_node_matching.xlsx View File


BIN
analysis/0809_make_intermediates/signal_node_matching_0809.xlsx View File


+ 142
- 0
analysis/0809_make_intermediates/turn_type_info.csv View File

@ -0,0 +1,142 @@
node_id,inc_edge_id,out_edge_id,turn_type
106165,512896,512897,straight
106165,512898,512899,left
106165,512898,512895,straight
106165,512901,512895,left
106175,512938,512939,left
106175,512940,512941,straight
106175,512942,512937,left
106175,512942,512939,straight
106222,513131,513132,straight
106222,513131,513134,left
106222,513133,513130,straight
106222,513135,513132,left
106225,513147,513148,left
106225,513147,513150,straight
106225,513149,513150,left
106225,513149,513152,straight
106225,513151,513146,straight
106225,513151,513152,left
106225,513153,513148,straight
106225,513153,513146,left
106233,513197,513214,left
106233,513197,513216,straight
106233,513213,513198,left
106233,513213,513214,straight
106233,513215,513212,straight
106233,513215,513216,left
106233,513217,513198,straight
106233,513217,513212,left
106235,512986,513232,straight
106235,512986,513227,left
106235,513229,519672,straight
106235,513229,513232,left
106235,513233,519672,left
106235,513233,512987,straight
106235,519673,512987,left
106235,519673,513227,straight
106258,513353,513356,straight
106258,513353,513354,left
106258,513355,513358,straight
106258,513355,513356,left
106258,513357,513358,left
106258,513357,513352,straight
106258,513359,513352,left
106258,513359,513354,straight
106263,512715,513393,straight
106263,512715,513391,left
106263,513390,513391,straight
106263,513390,512716,left
106263,513392,513393,left
106263,513392,513389,straight
106263,513394,513389,left
106263,513394,512716,straight
106292,513556,513557,straight
106292,513556,513559,left
106292,513558,513555,straight
106292,513561,513557,left
106301,513601,513606,straight
106301,513605,513600,left
106301,513607,513604,left
106301,513607,513600,straight
106313,513663,513664,left
106313,513663,513670,left
106313,513665,513666,left
106313,513665,513673,left
106313,513669,513673,left
106313,513669,513662,left
106313,513669,513670,straight
106313,513672,513666,straight
106313,513672,513664,left
106313,513674,513662,left
106313,513674,513670,left
106317,513700,513701,left
106317,513702,513703,straight
106317,513704,513699,left
106317,513704,513701,straight
106434,514052,514177,left
106434,514052,519725,straight
106434,514176,514177,straight
106434,514176,514053,left
106434,514178,519725,left
106434,514178,514175,straight
106434,519788,514053,straight
106434,519788,514175,left
106674,514483,514552,left
106674,514483,514931,straight
106674,514551,514931,left
106674,514551,514933,straight
106674,514932,514484,straight
106674,514932,514933,left
106674,514934,514552,straight
106674,514934,514484,left
107247,513999,516300,left
107247,514267,516300,straight
107247,516301,514268,straight
108028,512787,514084,straight
108028,514049,514081,straight
108028,514049,515016,left
108028,515017,514081,left
108666,513847,516798,straight
108666,513847,518359,left
108666,516797,513848,straight
108666,518358,516798,left
109721,512897,515406,straight
109721,512897,515408,left
109721,515397,515398,straight
109721,515397,515406,left
109721,515407,515398,left
109721,515407,512898,straight
109721,515409,512898,left
109721,515409,515408,straight
109744,513995,517225,straight
109744,513995,515430,left
109744,517224,517915,left
109744,517224,513996,straight
109744,517911,515430,straight
109744,517914,517915,straight
109745,516923,517918,straight
109745,516923,516925,left
109745,516924,516928,straight
109745,516924,517918,left
109745,516926,516928,left
109745,516926,517917,straight
109745,516927,517917,left
109745,516927,516925,straight
109746,516929,516931,left
109746,516929,517196,straight
109746,516930,517196,left
109746,517925,517924,straight
109746,517925,517928,left
109877,513770,512764,left
109877,513826,512764,straight
109877,513826,513771,left
109877,513828,513825,left
109877,513828,513771,straight
109877,516933,513827,left
109877,516933,513825,straight
109878,513328,515044,straight
109878,513328,515331,left
109878,515043,513329,straight
109878,515332,515329,left
109878,515332,515044,left

+ 17
- 0
analysis/0809_make_intermediates/uturn_data_info.csv View File

@ -0,0 +1,17 @@
parent_id,child_id,adj_inc_edge_id,adj_out_edge_id,inc_edge_id,out_edge_id
106222,109187,513131,513130,519604,519603
106225,109188,513147,513146,519606,519605
106225,109189,513151,513150,519608,519607
106233,109192,513213,513212,519614,519613
106235,109193,512986,512987,519615,519616
106434,109595,519788,519725,519728,519729
109721,107169,515409,515398,513111,516167
109721,108093,515397,515408,517905,517902
109744,108098,517911,517915,517230,517912
109745,108102,516926,517918,517923,517919
109745,108099,516923,517917,517231,517916
109746,108106,516929,517924,517930,517926
109746,107717,517925,517196,517187,517185
109877,110754,516933,512764,516932,519813
109877,109205,513826,513825,519641,519640
109878,107270,515332,515331,513230,513231

+ 48
- 0
analysis/0822_fetch_tables_test/fetch_tables.py View File

@ -0,0 +1,48 @@
import pyodbc, os, csv
# 현재 스크립트가 포함된 폴더 지정
path_present = os.path.dirname(os.path.abspath(__file__))
# 접속정보
DSNNAME = "Tibero6"
DBUSER = "snits"
DBPWD = "snitsUIspxmworks#PW"
cnxn = pyodbc.connect(f'DSN={DSNNAME};UID={DBUSER};PWD={DBPWD};charset=utf-8')
cursor = cnxn.cursor()
# 스키마 및 테이블명
schema = 'SNMS'
tables = ['TC_IF_TOD_DAY_PLAN', # TOD 일계획 현황
'TC_IF_TOD_HOLIDAY_PLAN', # TOD 휴일 계획
'TC_IF_TOD_RED_YELLO', # TOD 적색 및 황색 시간
'TC_IF_TOD_WEEK_PLAN', # TOD 주 계획
# 'TL_IF_SIGL', # 신호 운영 이력 (5초)
# 'TL_IF_SIGL_CYCL', # 신호 운영 주기 이력 (5분)
'TM_FA_CRSRD', # 교차로 마스터
'TN_IF_SIGL_FLOW', # 신호 현시 별 이동류 방향
]
# 테이블 불러오는 함수
def fetch_table(table, condition=""):
try:
query = f"SELECT * FROM {schema}.{table} {condition}"
cursor.execute(query)
csv_file_path = os.path.join(path_present, f"{table}.csv")
with open(csv_file_path, 'w', newline='', encoding='utf-8-sig') as csvfile:
csv_writer = csv.writer(csvfile)
columns = [column[0] for column in cursor.description]
csv_writer.writerow(columns)
for row in cursor.fetchall():
csv_writer.writerow(row)
except Exception as e:
print(f"오류 발생: {e}")
# 신호이력을 제외한 테이블들 불러오기
for table in tables:
fetch_table(table)
# 초단위 신호이력 불러오기
fetch_table('TL_IF_SIGL', condition="WHERE TRUNC(PHASE_DT) = TO_DATE('2024-07-31', 'YYYY-MM-DD') AND CRSRD_ID IN (436, 437, 438, 442, 443, 444, 455, 456, 457, 458)")
# 주기단위 신호이력 불러오기
fetch_table('TL_IF_SIGL_CYCL', condition="WHERE TRUNC(OCRN_DT) = TO_DATE('2024-07-31', 'YYYY-MM-DD') AND CRSRD_ID IN (436, 437, 438, 442, 443, 444, 455, 456, 457, 458)")

Loading…
Cancel
Save