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

1867 lines
65 KiB

{
"cells": [
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"import pandas as pd\n",
"from datetime import datetime"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"path_root = os.path.dirname(os.path.dirname(os.path.abspath('.')))\n",
"path_tables_draft = os.path.join(path_root, 'draft', 'data', 'tables')\n",
"path_tables = os.path.join(path_root,'data', 'tables')"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"alphs = ['A', 'B']\n",
"now = datetime.now()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>CRSRD_ID</th>\n",
" <th>PLAN_NO</th>\n",
" <th>HOUR</th>\n",
" <th>MIN</th>\n",
" <th>CYCL</th>\n",
" <th>OFFSET</th>\n",
" <th>RINGA_PHASE1</th>\n",
" <th>RINGA_PHASE2</th>\n",
" <th>RINGA_PHASE3</th>\n",
" <th>RINGA_PHASE4</th>\n",
" <th>...</th>\n",
" <th>RINGA_PHASE8</th>\n",
" <th>RINGB_PHASE1</th>\n",
" <th>RINGB_PHASE2</th>\n",
" <th>RINGB_PHASE3</th>\n",
" <th>RINGB_PHASE4</th>\n",
" <th>RINGB_PHASE5</th>\n",
" <th>RINGB_PHASE6</th>\n",
" <th>RINGB_PHASE7</th>\n",
" <th>RINGB_PHASE8</th>\n",
" <th>LAST_MDFCN_DT</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>160</td>\n",
" <td>57</td>\n",
" <td>37</td>\n",
" <td>39</td>\n",
" <td>55</td>\n",
" <td>29</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>37</td>\n",
" <td>39</td>\n",
" <td>25</td>\n",
" <td>59</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>7</td>\n",
" <td>0</td>\n",
" <td>170</td>\n",
" <td>40</td>\n",
" <td>40</td>\n",
" <td>42</td>\n",
" <td>55</td>\n",
" <td>33</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>40</td>\n",
" <td>42</td>\n",
" <td>29</td>\n",
" <td>59</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>9</td>\n",
" <td>0</td>\n",
" <td>180</td>\n",
" <td>28</td>\n",
" <td>43</td>\n",
" <td>45</td>\n",
" <td>55</td>\n",
" <td>37</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>43</td>\n",
" <td>45</td>\n",
" <td>33</td>\n",
" <td>59</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>18</td>\n",
" <td>30</td>\n",
" <td>190</td>\n",
" <td>18</td>\n",
" <td>46</td>\n",
" <td>48</td>\n",
" <td>55</td>\n",
" <td>41</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>46</td>\n",
" <td>48</td>\n",
" <td>37</td>\n",
" <td>59</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>176</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>150</td>\n",
" <td>131</td>\n",
" <td>37</td>\n",
" <td>73</td>\n",
" <td>40</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>0</td>\n",
" <td>37</td>\n",
" <td>73</td>\n",
" <td>40</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 23 columns</p>\n",
"</div>"
],
"text/plain": [
" CRSRD_ID PLAN_NO HOUR MIN CYCL OFFSET RINGA_PHASE1 RINGA_PHASE2 \\\n",
"0 175 1 0 0 160 57 37 39 \n",
"1 175 1 7 0 170 40 40 42 \n",
"2 175 1 9 0 180 28 43 45 \n",
"3 175 1 18 30 190 18 46 48 \n",
"4 176 1 0 0 150 131 37 73 \n",
"\n",
" RINGA_PHASE3 RINGA_PHASE4 ... RINGA_PHASE8 RINGB_PHASE1 RINGB_PHASE2 \\\n",
"0 55 29 ... 0 37 39 \n",
"1 55 33 ... 0 40 42 \n",
"2 55 37 ... 0 43 45 \n",
"3 55 41 ... 0 46 48 \n",
"4 40 0 ... 0 37 73 \n",
"\n",
" RINGB_PHASE3 RINGB_PHASE4 RINGB_PHASE5 RINGB_PHASE6 RINGB_PHASE7 \\\n",
"0 25 59 0 0 0 \n",
"1 29 59 0 0 0 \n",
"2 33 59 0 0 0 \n",
"3 37 59 0 0 0 \n",
"4 40 0 0 0 0 \n",
"\n",
" RINGB_PHASE8 LAST_MDFCN_DT \n",
"0 0 2024-07-12 16:50:38.378729 \n",
"1 0 2024-07-12 16:50:38.378729 \n",
"2 0 2024-07-12 16:50:38.378729 \n",
"3 0 2024-07-12 16:50:38.378729 \n",
"4 0 2024-07-12 16:50:38.378729 \n",
"\n",
"[5 rows x 23 columns]"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"plan = pd.read_csv(os.path.join(path_tables_draft, 'plan.csv'))\n",
"plan = plan.drop(columns=[f'red_{alph}{i}' for alph in alphs for i in range(1,9)])\n",
"plan = plan.drop(columns=[f'yellow_{alph}{i}' for alph in alphs for i in range(1,9)])\n",
"plan['PLAN_NO'] = 1\n",
"plan['LAST_MDFCN_DT'] = now\n",
"plan = plan.rename(columns={'inter_no':'CRSRD_ID',\n",
" 'start_hour':'HOUR',\n",
" 'start_minute':'MIN',\n",
" 'cycle':'CYCL',\n",
" 'offset':'OFFSET'})\n",
"plan = plan.rename(columns={f'dura_{alph}{i}':f'RING{alph}_PHASE{i}' for alph in alphs for i in range(1,9)})\n",
"TC_IF_TOD_DAY_PLAN = plan[['CRSRD_ID', 'PLAN_NO', 'HOUR', 'MIN', 'CYCL', 'OFFSET']\n",
" + [f'RING{alph}_PHASE{i}' for alph in alphs for i in range(1,9)]\n",
" + ['LAST_MDFCN_DT']]\n",
"TC_IF_TOD_DAY_PLAN.head()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>CRSRD_ID</th>\n",
" <th>MNTH</th>\n",
" <th>DAY</th>\n",
" <th>PLAN_NO</th>\n",
" <th>LAST_MDFCN_DT</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>175</td>\n",
" <td>2</td>\n",
" <td>9</td>\n",
" <td>1</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>175</td>\n",
" <td>2</td>\n",
" <td>10</td>\n",
" <td>1</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>175</td>\n",
" <td>2</td>\n",
" <td>11</td>\n",
" <td>1</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>175</td>\n",
" <td>2</td>\n",
" <td>12</td>\n",
" <td>1</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" CRSRD_ID MNTH DAY PLAN_NO LAST_MDFCN_DT\n",
"0 175 1 1 1 2024-07-12 16:50:38.378729\n",
"1 175 2 9 1 2024-07-12 16:50:38.378729\n",
"2 175 2 10 1 2024-07-12 16:50:38.378729\n",
"3 175 2 11 1 2024-07-12 16:50:38.378729\n",
"4 175 2 12 1 2024-07-12 16:50:38.378729"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"holidays = [(1,1), (2,9), (2,10), (2,11), (2,12), (3,1), (4,10), (5,1), (5,5), (5,6), (5,15), (6,6), (8,15), (9, 16), (9,17), (9,18), (10,3), (10,9), (12,25)]\n",
"TC_IF_TOD_HOLIDAY_PLAN = []\n",
"CRSRD_IDs = sorted(TC_IF_TOD_DAY_PLAN.CRSRD_ID.unique())\n",
"for CRSRD_ID in CRSRD_IDs:\n",
" for (MNTH, DAY) in holidays:\n",
" TC_IF_TOD_HOLIDAY_PLAN.append({'CRSRD_ID':CRSRD_ID,'MNTH':MNTH, 'DAY':DAY, 'PLAN_NO':1, 'LAST_MDFCN_DT':now})\n",
"TC_IF_TOD_HOLIDAY_PLAN = pd.DataFrame(TC_IF_TOD_HOLIDAY_PLAN)\n",
"TC_IF_TOD_HOLIDAY_PLAN.head()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>CRSRD_ID</th>\n",
" <th>PLAN_NO</th>\n",
" <th>PHASE</th>\n",
" <th>RINGA_FLOW</th>\n",
" <th>RINGA_RED_SEC</th>\n",
" <th>RINGA_YELLO_SEC</th>\n",
" <th>RINGA_MIN_SEC</th>\n",
" <th>RINGB_FLOW</th>\n",
" <th>RINGB_RED_SEC</th>\n",
" <th>RINGB_YELLO_SEC</th>\n",
" <th>RINGB_MIN_SEC</th>\n",
" <th>LAST_MDFCN_DT</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>-1</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>-1</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>-1</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>-1</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>-1</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>-1</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>-1</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>-1</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>-1</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>-1</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" CRSRD_ID PLAN_NO PHASE RINGA_FLOW RINGA_RED_SEC RINGA_YELLO_SEC \\\n",
"0 175 1 1 -1 1 4 \n",
"1 175 1 2 -1 1 4 \n",
"2 175 1 3 -1 1 4 \n",
"3 175 1 4 -1 1 4 \n",
"4 175 1 5 -1 1 4 \n",
"\n",
" RINGA_MIN_SEC RINGB_FLOW RINGB_RED_SEC RINGB_YELLO_SEC RINGB_MIN_SEC \\\n",
"0 -1 -1 1 4 -1 \n",
"1 -1 -1 1 4 -1 \n",
"2 -1 -1 1 4 -1 \n",
"3 -1 -1 1 4 -1 \n",
"4 -1 -1 1 4 -1 \n",
"\n",
" LAST_MDFCN_DT \n",
"0 2024-07-12 16:50:38.378729 \n",
"1 2024-07-12 16:50:38.378729 \n",
"2 2024-07-12 16:50:38.378729 \n",
"3 2024-07-12 16:50:38.378729 \n",
"4 2024-07-12 16:50:38.378729 "
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"plan = pd.read_csv(os.path.join(path_tables_draft, 'plan.csv'))\n",
"plan = plan.drop(columns=[f'dura_{alph}{i}' for alph in alphs for i in range(1,9)]\n",
" +['start_hour', 'start_minute', 'cycle', 'offset'])\n",
"TC_IF_TOD_RED_YELLO = []\n",
"for row in plan.itertuples():\n",
" for i in range(1,9):\n",
" TC_IF_TOD_RED_YELLO.append({\n",
" 'CRSRD_ID': row.inter_no,\n",
" 'PLAN_NO': 1,\n",
" 'PHASE': i,\n",
" 'RINGA_FLOW': -1,\n",
" 'RINGA_RED_SEC': getattr(row, f'red_A{i}'),\n",
" 'RINGA_YELLO_SEC': getattr(row, f'yellow_A{i}'),\n",
" 'RINGA_MIN_SEC': -1,\n",
" 'RINGB_FLOW': -1,\n",
" 'RINGB_RED_SEC': getattr(row, f'red_B{i}'),\n",
" 'RINGB_YELLO_SEC': getattr(row, f'yellow_B{i}'),\n",
" 'RINGB_MIN_SEC': -1,\n",
" 'LAST_MDFCN_DT':now})\n",
"TC_IF_TOD_RED_YELLO = pd.DataFrame(TC_IF_TOD_RED_YELLO)\n",
"TC_IF_TOD_RED_YELLO.head()"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>CRSRD_ID</th>\n",
" <th>SUN_PLAN_NO</th>\n",
" <th>MON_PLAN_NO</th>\n",
" <th>TUE_PLAN_NO</th>\n",
" <th>WED_PLAN_NO</th>\n",
" <th>THU_PLAN_NO</th>\n",
" <th>FRI_PLAN_NO</th>\n",
" <th>SAT_PLAN_NO</th>\n",
" <th>LAST_MDFCN_DT</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>176</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>177</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>178</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>201</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" CRSRD_ID SUN_PLAN_NO MON_PLAN_NO TUE_PLAN_NO WED_PLAN_NO THU_PLAN_NO \\\n",
"0 175 1 1 1 1 1 \n",
"1 176 1 1 1 1 1 \n",
"2 177 1 1 1 1 1 \n",
"3 178 1 1 1 1 1 \n",
"4 201 1 1 1 1 1 \n",
"\n",
" FRI_PLAN_NO SAT_PLAN_NO LAST_MDFCN_DT \n",
"0 1 1 2024-07-12 16:50:38.378729 \n",
"1 1 1 2024-07-12 16:50:38.378729 \n",
"2 1 1 2024-07-12 16:50:38.378729 \n",
"3 1 1 2024-07-12 16:50:38.378729 \n",
"4 1 1 2024-07-12 16:50:38.378729 "
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"TC_IF_TOD_WEEK_PLAN = []\n",
"\n",
"for CRSRD_ID in CRSRD_IDs:\n",
" TC_IF_TOD_WEEK_PLAN.append({\n",
" 'CRSRD_ID':CRSRD_ID,\n",
" 'SUN_PLAN_NO':1,\n",
" 'MON_PLAN_NO':1,\n",
" 'TUE_PLAN_NO':1,\n",
" 'WED_PLAN_NO':1,\n",
" 'THU_PLAN_NO':1,\n",
" 'FRI_PLAN_NO':1,\n",
" 'SAT_PLAN_NO':1,\n",
" 'LAST_MDFCN_DT':now,\n",
" })\n",
"TC_IF_TOD_WEEK_PLAN = pd.DataFrame(TC_IF_TOD_WEEK_PLAN)\n",
"TC_IF_TOD_WEEK_PLAN.head()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>PHASE_DT</th>\n",
" <th>CRSRD_ID</th>\n",
" <th>RINGA_PHASE1</th>\n",
" <th>RINGA_PHASE2</th>\n",
" <th>RINGA_PHASE3</th>\n",
" <th>RINGA_PHASE4</th>\n",
" <th>RINGA_PHASE5</th>\n",
" <th>RINGA_PHASE6</th>\n",
" <th>RINGA_PHASE7</th>\n",
" <th>RINGA_PHASE8</th>\n",
" <th>RINGB_PHASE1</th>\n",
" <th>RINGB_PHASE2</th>\n",
" <th>RINGB_PHASE3</th>\n",
" <th>RINGB_PHASE4</th>\n",
" <th>RINGB_PHASE5</th>\n",
" <th>RINGB_PHASE6</th>\n",
" <th>RINGB_PHASE7</th>\n",
" <th>RINGB_PHASE8</th>\n",
" <th>LAST_MDFCN_DT</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2024-01-05 00:01:59</td>\n",
" <td>206</td>\n",
" <td>33</td>\n",
" <td>35</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>33</td>\n",
" <td>35</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2024-01-05 00:02:20</td>\n",
" <td>178</td>\n",
" <td>38</td>\n",
" <td>39</td>\n",
" <td>40</td>\n",
" <td>23</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>38</td>\n",
" <td>39</td>\n",
" <td>40</td>\n",
" <td>23</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2024-01-05 00:02:20</td>\n",
" <td>201</td>\n",
" <td>24</td>\n",
" <td>24</td>\n",
" <td>17</td>\n",
" <td>58</td>\n",
" <td>17</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>24</td>\n",
" <td>24</td>\n",
" <td>17</td>\n",
" <td>58</td>\n",
" <td>17</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2024-01-05 00:02:20</td>\n",
" <td>202</td>\n",
" <td>39</td>\n",
" <td>101</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>39</td>\n",
" <td>101</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2024-01-05 00:02:30</td>\n",
" <td>177</td>\n",
" <td>36</td>\n",
" <td>20</td>\n",
" <td>68</td>\n",
" <td>26</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>36</td>\n",
" <td>20</td>\n",
" <td>68</td>\n",
" <td>26</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2024-07-12 16:50:38.378729</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" PHASE_DT CRSRD_ID RINGA_PHASE1 RINGA_PHASE2 RINGA_PHASE3 \\\n",
"0 2024-01-05 00:01:59 206 33 35 26 \n",
"1 2024-01-05 00:02:20 178 38 39 40 \n",
"2 2024-01-05 00:02:20 201 24 24 17 \n",
"3 2024-01-05 00:02:20 202 39 101 0 \n",
"4 2024-01-05 00:02:30 177 36 20 68 \n",
"\n",
" RINGA_PHASE4 RINGA_PHASE5 RINGA_PHASE6 RINGA_PHASE7 RINGA_PHASE8 \\\n",
"0 26 0 0 0 0 \n",
"1 23 0 0 0 0 \n",
"2 58 17 0 0 0 \n",
"3 0 0 0 0 0 \n",
"4 26 0 0 0 0 \n",
"\n",
" RINGB_PHASE1 RINGB_PHASE2 RINGB_PHASE3 RINGB_PHASE4 RINGB_PHASE5 \\\n",
"0 33 35 26 26 0 \n",
"1 38 39 40 23 0 \n",
"2 24 24 17 58 17 \n",
"3 39 101 0 0 0 \n",
"4 36 20 68 26 0 \n",
"\n",
" RINGB_PHASE6 RINGB_PHASE7 RINGB_PHASE8 LAST_MDFCN_DT \n",
"0 0 0 0 2024-07-12 16:50:38.378729 \n",
"1 0 0 0 2024-07-12 16:50:38.378729 \n",
"2 0 0 0 2024-07-12 16:50:38.378729 \n",
"3 0 0 0 2024-07-12 16:50:38.378729 \n",
"4 0 0 0 2024-07-12 16:50:38.378729 "
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"TL_IF_SIGL_CYCL = pd.read_csv(os.path.join(path_tables_draft, 'history.csv'))\n",
"TL_IF_SIGL_CYCL = TL_IF_SIGL_CYCL.rename(columns={**{'inter_no':'CRSRD_ID', 'end_unix':'PHASE_DT'},\n",
" **{f'dura_{alph}{i}':f'RING{alph}_PHASE{i}' for alph in alphs for i in range(1,9)}})\n",
"TL_IF_SIGL_CYCL = TL_IF_SIGL_CYCL[['PHASE_DT', 'CRSRD_ID'] + [f'RING{alph}_PHASE{i}' for alph in alphs for i in range(1,9)]]\n",
"TL_IF_SIGL_CYCL['PHASE_DT'] = TL_IF_SIGL_CYCL['PHASE_DT'].apply(lambda x:datetime.fromtimestamp(x))\n",
"TL_IF_SIGL_CYCL['LAST_MDFCN_DT'] = now\n",
"TL_IF_SIGL_CYCL.head()"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>node_id</th>\n",
" <th>inter_type</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>175</td>\n",
" <td>i0</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>175</td>\n",
" <td>u00</td>\n",
" <td>child</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>176</td>\n",
" <td>i1</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>177</td>\n",
" <td>i2</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>177</td>\n",
" <td>u20</td>\n",
" <td>child</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>178</td>\n",
" <td>i3</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>178</td>\n",
" <td>u30</td>\n",
" <td>child</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>178</td>\n",
" <td>u31</td>\n",
" <td>child</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>178</td>\n",
" <td>u32</td>\n",
" <td>child</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>201</td>\n",
" <td>i8</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>202</td>\n",
" <td>i9</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>206</td>\n",
" <td>i7</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>210</td>\n",
" <td>i6</td>\n",
" <td>parent</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>210</td>\n",
" <td>u60</td>\n",
" <td>child</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>178</td>\n",
" <td>c30</td>\n",
" <td>child</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no node_id inter_type\n",
"0 175 i0 parent\n",
"1 175 u00 child\n",
"2 176 i1 parent\n",
"3 177 i2 parent\n",
"4 177 u20 child\n",
"5 178 i3 parent\n",
"6 178 u30 child\n",
"7 178 u31 child\n",
"8 178 u32 child\n",
"9 201 i8 parent\n",
"10 202 i9 parent\n",
"11 206 i7 parent\n",
"12 210 i6 parent\n",
"13 210 u60 child\n",
"14 178 c30 child"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"inter_node = pd.read_csv(os.path.join(path_tables_draft, 'inter_node.csv'))\n",
"inter_node"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[175, 176, 177, 178, 201, 202, 206, 210]\n",
"['i0', 'u00', 'i1', 'i2', 'u20', 'i3', 'u30', 'u31', 'u32', 'i8', 'i9', 'i7', 'i6', 'u60', 'c30']\n",
"{'i0': 175, 'u00': 175, 'i1': 176, 'i2': 177, 'u20': 177, 'i3': 178, 'u30': 178, 'u31': 178, 'u32': 178, 'i8': 201, 'i9': 202, 'i7': 206, 'i6': 210, 'u60': 210, 'c30': 178}\n",
"{175: ['i0', 'u00'], 176: ['i1'], 177: ['i2', 'u20'], 178: ['i3', 'u30', 'u31', 'u32', 'c30'], 201: ['i8'], 202: ['i9'], 206: ['i7'], 210: ['i6', 'u60']}\n",
"{175: 'i0', 176: 'i1', 177: 'i2', 178: 'i3', 201: 'i8', 202: 'i9', 206: 'i7', 210: 'i6'}\n",
"{'i0': 'parent', 'u00': 'child', 'i1': 'parent', 'i2': 'parent', 'u20': 'child', 'i3': 'parent', 'u30': 'child', 'u31': 'child', 'u32': 'child', 'i8': 'parent', 'i9': 'parent', 'i7': 'parent', 'i6': 'parent', 'u60': 'child', 'c30': 'child'}\n",
"{'u00': 'i0', 'u20': 'i2', 'u30': 'i3', 'u31': 'i3', 'u32': 'i3', 'u60': 'i6', 'c30': 'i3'}\n",
"{'i0': ['u00'], 'i2': ['u20'], 'i3': ['u30', 'u31', 'u32', 'c30'], 'i6': ['u60']}\n"
]
}
],
"source": [
"inter_nos = sorted(inter_node['inter_no'].unique())\n",
"node_ids = list(inter_node['node_id'])\n",
"node2inter = dict(zip(inter_node['node_id'], inter_node['inter_no']))\n",
"inter2nodes = {inter:[key for key, value in node2inter.items() if value == inter] for inter in node2inter.values()}\n",
"inter2node = dict(zip(inter_node[inter_node.inter_type=='parent']['inter_no'], inter_node[inter_node.inter_type=='parent']['node_id']))\n",
"node2type = dict(zip(inter_node['node_id'], inter_node['inter_type']))\n",
"child2parent = dict()\n",
"for child_id in list(inter_node[inter_node.inter_type=='child']['node_id'].unique()):\n",
" inter_no = inter_node[inter_node.node_id==child_id].iloc[0].inter_no\n",
" parent_id = inter_node[inter_node.inter_no==inter_no][inter_node[inter_node.inter_no==inter_no].inter_type=='parent'].iloc[0].node_id\n",
" child2parent[child_id] = parent_id\n",
"parent2childs = {parent_id:[key for key, value in child2parent.items() if value == parent_id] for parent_id in child2parent.values()}\n",
"print(inter_nos)\n",
"print(node_ids)\n",
"print(node2inter)\n",
"print(inter2nodes)\n",
"print(inter2node)\n",
"print(node2type)\n",
"print(child2parent)\n",
"print(parent2childs)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>inter_no</th>\n",
" <th>inter_name</th>\n",
" <th>inter_lat</th>\n",
" <th>inter_lon</th>\n",
" <th>group_no</th>\n",
" <th>main_phase_no</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>175</td>\n",
" <td>한솔삼거리(한솔마을3거리)</td>\n",
" <td>37.36857</td>\n",
" <td>127.11478</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>176</td>\n",
" <td>느티마을4단지</td>\n",
" <td>37.36724</td>\n",
" <td>127.11480</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>177</td>\n",
" <td>한솔6단지(정자동사무소)</td>\n",
" <td>37.36619</td>\n",
" <td>127.11480</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>178</td>\n",
" <td>신기4거리</td>\n",
" <td>37.36346</td>\n",
" <td>127.11480</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>201</td>\n",
" <td>느티마을4거리</td>\n",
" <td>37.36854</td>\n",
" <td>127.10984</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" inter_no inter_name inter_lat inter_lon group_no main_phase_no\n",
"0 175 한솔삼거리(한솔마을3거리) 37.36857 127.11478 3 2\n",
"1 176 느티마을4단지 37.36724 127.11480 3 2\n",
"2 177 한솔6단지(정자동사무소) 37.36619 127.11480 3 2\n",
"3 178 신기4거리 37.36346 127.11480 3 2\n",
"4 201 느티마을4거리 37.36854 127.10984 3 2"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"inter_info = pd.read_csv(os.path.join(path_tables_draft, 'inter_info.csv'))\n",
"inter_info.head()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{175: '한솔삼거리(한솔마을3거리)', 176: '느티마을4단지', 177: '한솔6단지(정자동사무소)', 178: '신기4거리', 201: '느티마을4거리', 202: '느티마을 안촌유치원', 206: '상록마을 321동', 210: '상록4거리(상록마을입구4거리)'}\n",
"{175: (37.36857, 127.11478), 176: (37.36724, 127.1148), 177: (37.36619, 127.1148), 178: (37.36346, 127.1148), 201: (37.36854, 127.10984), 202: (37.36855, 127.11241), 206: (37.36483, 127.10981), 210: (37.36347, 127.10982)}\n",
"{175: 2, 176: 2, 177: 2, 178: 2, 201: 2, 202: 2, 206: 2, 210: 2}\n"
]
}
],
"source": [
"inter2name = dict(zip(inter_info['inter_no'], inter_info['inter_name']))\n",
"inter2LL = dict(zip(inter_info['inter_no'], zip(inter_info['inter_lat'], inter_info['inter_lon'])))\n",
"inter2mp = dict(zip(inter_info['inter_no'], inter_info['main_phase_no']))\n",
"print(inter2name)\n",
"print(inter2LL)\n",
"print(inter2mp)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>CRSRD_ID</th>\n",
" <th>CRSRD_NM</th>\n",
" <th>CRSRD_TYPE</th>\n",
" <th>CTRLER_TYPE</th>\n",
" <th>TRFLIG_TYPE</th>\n",
" <th>NODE_ID</th>\n",
" <th>LTTD</th>\n",
" <th>LGTD</th>\n",
" <th>PPC_TYPE</th>\n",
" <th>MAIN_PHASE</th>\n",
" <th>LOS_YN</th>\n",
" <th>USE_YN</th>\n",
" <th>FRST_REG_DT</th>\n",
" <th>LAST_MDFCN_DT</th>\n",
" <th>MAIN_CRSRD_ID</th>\n",
" <th>GRP_NO</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>175</td>\n",
" <td>한솔삼거리(한솔마을3거리)</td>\n",
" <td>0</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>i0</td>\n",
" <td>37.36857</td>\n",
" <td>127.11478</td>\n",
" <td>-1</td>\n",
" <td>2</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>i0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>175</td>\n",
" <td>한솔삼거리(한솔마을3거리)</td>\n",
" <td>1</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>u00</td>\n",
" <td>37.36857</td>\n",
" <td>127.11478</td>\n",
" <td>-1</td>\n",
" <td>2</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>i0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>176</td>\n",
" <td>느티마을4단지</td>\n",
" <td>0</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>i1</td>\n",
" <td>37.36724</td>\n",
" <td>127.11480</td>\n",
" <td>-1</td>\n",
" <td>2</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>i1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>177</td>\n",
" <td>한솔6단지(정자동사무소)</td>\n",
" <td>0</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>i2</td>\n",
" <td>37.36619</td>\n",
" <td>127.11480</td>\n",
" <td>-1</td>\n",
" <td>2</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>i2</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>177</td>\n",
" <td>한솔6단지(정자동사무소)</td>\n",
" <td>1</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>u20</td>\n",
" <td>37.36619</td>\n",
" <td>127.11480</td>\n",
" <td>-1</td>\n",
" <td>2</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>i2</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>178</td>\n",
" <td>신기4거리</td>\n",
" <td>0</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>i3</td>\n",
" <td>37.36346</td>\n",
" <td>127.11480</td>\n",
" <td>-1</td>\n",
" <td>2</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>i3</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>178</td>\n",
" <td>신기4거리</td>\n",
" <td>1</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>u30</td>\n",
" <td>37.36346</td>\n",
" <td>127.11480</td>\n",
" <td>-1</td>\n",
" <td>2</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>i3</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>178</td>\n",
" <td>신기4거리</td>\n",
" <td>1</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>u31</td>\n",
" <td>37.36346</td>\n",
" <td>127.11480</td>\n",
" <td>-1</td>\n",
" <td>2</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>i3</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>178</td>\n",
" <td>신기4거리</td>\n",
" <td>1</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>u32</td>\n",
" <td>37.36346</td>\n",
" <td>127.11480</td>\n",
" <td>-1</td>\n",
" <td>2</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>i3</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>201</td>\n",
" <td>느티마을4거리</td>\n",
" <td>0</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>i8</td>\n",
" <td>37.36854</td>\n",
" <td>127.10984</td>\n",
" <td>-1</td>\n",
" <td>2</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>i8</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>202</td>\n",
" <td>느티마을 안촌유치원</td>\n",
" <td>0</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>i9</td>\n",
" <td>37.36855</td>\n",
" <td>127.11241</td>\n",
" <td>-1</td>\n",
" <td>2</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>i9</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>206</td>\n",
" <td>상록마을 321동</td>\n",
" <td>0</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>i7</td>\n",
" <td>37.36483</td>\n",
" <td>127.10981</td>\n",
" <td>-1</td>\n",
" <td>2</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>i7</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>210</td>\n",
" <td>상록4거리(상록마을입구4거리)</td>\n",
" <td>0</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>i6</td>\n",
" <td>37.36347</td>\n",
" <td>127.10982</td>\n",
" <td>-1</td>\n",
" <td>2</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>i6</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>210</td>\n",
" <td>상록4거리(상록마을입구4거리)</td>\n",
" <td>1</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>u60</td>\n",
" <td>37.36347</td>\n",
" <td>127.10982</td>\n",
" <td>-1</td>\n",
" <td>2</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>i6</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>178</td>\n",
" <td>신기4거리</td>\n",
" <td>1</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>c30</td>\n",
" <td>37.36346</td>\n",
" <td>127.11480</td>\n",
" <td>-1</td>\n",
" <td>2</td>\n",
" <td>-1</td>\n",
" <td>-1</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>2024-07-12 16:36:43.702267</td>\n",
" <td>i3</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" CRSRD_ID CRSRD_NM CRSRD_TYPE CTRLER_TYPE TRFLIG_TYPE NODE_ID \\\n",
"0 175 한솔삼거리(한솔마을3거리) 0 -1 -1 i0 \n",
"1 175 한솔삼거리(한솔마을3거리) 1 -1 -1 u00 \n",
"2 176 느티마을4단지 0 -1 -1 i1 \n",
"3 177 한솔6단지(정자동사무소) 0 -1 -1 i2 \n",
"4 177 한솔6단지(정자동사무소) 1 -1 -1 u20 \n",
"5 178 신기4거리 0 -1 -1 i3 \n",
"6 178 신기4거리 1 -1 -1 u30 \n",
"7 178 신기4거리 1 -1 -1 u31 \n",
"8 178 신기4거리 1 -1 -1 u32 \n",
"9 201 느티마을4거리 0 -1 -1 i8 \n",
"10 202 느티마을 안촌유치원 0 -1 -1 i9 \n",
"11 206 상록마을 321동 0 -1 -1 i7 \n",
"12 210 상록4거리(상록마을입구4거리) 0 -1 -1 i6 \n",
"13 210 상록4거리(상록마을입구4거리) 1 -1 -1 u60 \n",
"14 178 신기4거리 1 -1 -1 c30 \n",
"\n",
" LTTD LGTD PPC_TYPE MAIN_PHASE LOS_YN USE_YN \\\n",
"0 37.36857 127.11478 -1 2 -1 -1 \n",
"1 37.36857 127.11478 -1 2 -1 -1 \n",
"2 37.36724 127.11480 -1 2 -1 -1 \n",
"3 37.36619 127.11480 -1 2 -1 -1 \n",
"4 37.36619 127.11480 -1 2 -1 -1 \n",
"5 37.36346 127.11480 -1 2 -1 -1 \n",
"6 37.36346 127.11480 -1 2 -1 -1 \n",
"7 37.36346 127.11480 -1 2 -1 -1 \n",
"8 37.36346 127.11480 -1 2 -1 -1 \n",
"9 37.36854 127.10984 -1 2 -1 -1 \n",
"10 37.36855 127.11241 -1 2 -1 -1 \n",
"11 37.36483 127.10981 -1 2 -1 -1 \n",
"12 37.36347 127.10982 -1 2 -1 -1 \n",
"13 37.36347 127.10982 -1 2 -1 -1 \n",
"14 37.36346 127.11480 -1 2 -1 -1 \n",
"\n",
" FRST_REG_DT LAST_MDFCN_DT MAIN_CRSRD_ID GRP_NO \n",
"0 2024-07-12 16:36:43.702267 2024-07-12 16:36:43.702267 i0 1 \n",
"1 2024-07-12 16:36:43.702267 2024-07-12 16:36:43.702267 i0 1 \n",
"2 2024-07-12 16:36:43.702267 2024-07-12 16:36:43.702267 i1 1 \n",
"3 2024-07-12 16:36:43.702267 2024-07-12 16:36:43.702267 i2 1 \n",
"4 2024-07-12 16:36:43.702267 2024-07-12 16:36:43.702267 i2 1 \n",
"5 2024-07-12 16:36:43.702267 2024-07-12 16:36:43.702267 i3 1 \n",
"6 2024-07-12 16:36:43.702267 2024-07-12 16:36:43.702267 i3 1 \n",
"7 2024-07-12 16:36:43.702267 2024-07-12 16:36:43.702267 i3 1 \n",
"8 2024-07-12 16:36:43.702267 2024-07-12 16:36:43.702267 i3 1 \n",
"9 2024-07-12 16:36:43.702267 2024-07-12 16:36:43.702267 i8 1 \n",
"10 2024-07-12 16:36:43.702267 2024-07-12 16:36:43.702267 i9 1 \n",
"11 2024-07-12 16:36:43.702267 2024-07-12 16:36:43.702267 i7 1 \n",
"12 2024-07-12 16:36:43.702267 2024-07-12 16:36:43.702267 i6 1 \n",
"13 2024-07-12 16:36:43.702267 2024-07-12 16:36:43.702267 i6 1 \n",
"14 2024-07-12 16:36:43.702267 2024-07-12 16:36:43.702267 i3 1 "
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"TM_FA_CRSRD = []\n",
"for node_id in node_ids:\n",
" inter_no = node2inter[node_id]\n",
" TM_FA_CRSRD.append({\n",
" 'CRSRD_ID':inter_no,\n",
" 'CRSRD_NM':inter2name[inter_no],\n",
" 'CRSRD_TYPE':0 if node2type[node_id]=='parent' else 1,\n",
" 'CTRLER_TYPE':-1,\n",
" 'TRFLIG_TYPE':-1,\n",
" 'NODE_ID':node_id,\n",
" 'LTTD':inter2LL[inter_no][0],\n",
" 'LGTD':inter2LL[inter_no][1],\n",
" 'PPC_TYPE':-1,\n",
" 'MAIN_PHASE':inter2mp[inter_no],\n",
" 'LOS_YN':-1,\n",
" 'USE_YN':-1,\n",
" 'FRST_REG_DT':now,\n",
" 'LAST_MDFCN_DT':now,\n",
" 'MAIN_CRSRD_ID':inter2node[inter_no],\n",
" 'GRP_NO':1\n",
" })\n",
"TM_FA_CRSRD = pd.DataFrame(TM_FA_CRSRD)\n",
"TM_FA_CRSRD"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"c:\\Github\\snits_siggen\\draft\\data\\tables\\angle_old.csv\n"
]
}
],
"source": [
"print(os.path.join(path_tables_draft, 'angle_old.csv'))"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>CRSRD_ID</th>\n",
" <th>PHASE</th>\n",
" <th>RING</th>\n",
" <th>FLOW_NO</th>\n",
" <th>STOS_NO</th>\n",
" <th>SIGL_ANGLE</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>179004</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>003176</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>175</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>001095</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>175</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>179271</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>175</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>092270</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>123</th>\n",
" <td>210</td>\n",
" <td>6</td>\n",
" <td>B</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>124</th>\n",
" <td>210</td>\n",
" <td>7</td>\n",
" <td>A</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>125</th>\n",
" <td>210</td>\n",
" <td>7</td>\n",
" <td>B</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>126</th>\n",
" <td>210</td>\n",
" <td>8</td>\n",
" <td>A</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>127</th>\n",
" <td>210</td>\n",
" <td>8</td>\n",
" <td>B</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>128 rows × 6 columns</p>\n",
"</div>"
],
"text/plain": [
" CRSRD_ID PHASE RING FLOW_NO STOS_NO SIGL_ANGLE\n",
"0 175 1 A -1 0 179004\n",
"1 175 1 B -1 0 003176\n",
"2 175 2 A -1 0 001095\n",
"3 175 2 B -1 0 179271\n",
"4 175 3 A -1 0 092270\n",
".. ... ... ... ... ... ...\n",
"123 210 6 B -1 0 NaN\n",
"124 210 7 A -1 0 NaN\n",
"125 210 7 B -1 0 NaN\n",
"126 210 8 A -1 0 NaN\n",
"127 210 8 B -1 0 NaN\n",
"\n",
"[128 rows x 6 columns]"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"angle = pd.read_csv(os.path.join(path_tables_draft, 'angle_old.csv'), dtype={f'angle_{alph}{i}':str for alph in alphs for i in range(1,9)}, index_col=0)\n",
"\n",
"TN_IF_SIGL_FLOW = []\n",
"for row in angle.itertuples():\n",
" inter_no = row.inter_no\n",
" for i in range(1,9):\n",
" for alph in alphs:\n",
" TN_IF_SIGL_FLOW.append({\n",
" 'CRSRD_ID':inter_no,\n",
" 'PHASE':i,\n",
" 'RING':alph,\n",
" 'FLOW_NO':-1,\n",
" 'STOS_NO':0,\n",
" 'SIGL_ANGLE':getattr(row, f'angle_{alph}{i}')\n",
" })\n",
"TN_IF_SIGL_FLOW = pd.DataFrame(TN_IF_SIGL_FLOW)\n",
"TN_IF_SIGL_FLOW"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"TC_IF_TOD_DAY_PLAN.to_csv(os.path.join(path_tables, 'TC_IF_TOD_DAY_PLAN.csv'), index=0)\n",
"TC_IF_TOD_HOLIDAY_PLAN.to_csv(os.path.join(path_tables, 'TC_IF_TOD_HOLIDAY_PLAN.csv'), index=0)\n",
"TC_IF_TOD_RED_YELLO.to_csv(os.path.join(path_tables, 'TC_IF_TOD_RED_YELLO.csv'), index=0)\n",
"TC_IF_TOD_WEEK_PLAN.to_csv(os.path.join(path_tables, 'TC_IF_TOD_WEEK_PLAN.csv'), index=0)\n",
"TL_IF_SIGL_CYCL.to_csv(os.path.join(path_tables, 'TL_IF_SIGL_CYCL.csv'), index=0)\n",
"TM_FA_CRSRD.to_csv(os.path.join(path_tables, 'TM_FA_CRSRD.csv'), index=0)\n",
"TN_IF_SIGL_FLOW.to_csv(os.path.join(path_tables, 'TN_IF_SIGL_FLOW.csv'), index=0)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "siggen",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.10"
}
},
"nbformat": 4,
"nbformat_minor": 2
}