diff --git a/1108_requirements/1108_requirements.html b/1108_requirements/1108_requirements.html new file mode 100644 index 0000000..4fe6133 --- /dev/null +++ b/1108_requirements/1108_requirements.html @@ -0,0 +1,14647 @@ +None + + + + +1108_requirements + + + + + + + + + +
+
+
+
+
+
In [2]:
+
+
+
import sumolib, math
+import pandas as pd
+import numpy as np
+import os, glob
+from datetime import datetime
+
+### intersections
+intersections_path = os.path.join('daily/S_INT_CONFIG.csv')
+intersections = pd.read_csv(intersections_path)
+intersections_original = intersections.copy()
+
+# demo names
+demo_names = \
+["한솔삼거리(한솔마을3거리)",
+"느티마을4단지",
+"한솔6단지(정자동사무소)",
+"신기4거리",
+"느티마을4거리",
+"느티마을 안촌유치원",
+"상록마을 321동",
+"상록4거리(상록마을입구4거리)",
+"상록마을단일로",
+"상록마을302동 단일로"]
+intersections = intersections[intersections['INT_NAME'].isin(demo_names)]
+demo_node_ids = ["n0", "n1", "n2", "n3", "n4", "n5", "n6", "n7", "n8", "n9"]
+demo_int_nos = list(intersections['INT_NO'])
+
+# SUMO node_id 정보 추가
+name2node_id = dict(zip(demo_names, demo_node_ids))
+intersections['node_ids'] = intersections['INT_NAME'].map(name2node_id)
+
+# SUMO X, Y 좌표 정보 추가
+origin_name = '상록4거리(상록마을입구4거리)'
+ref_lng = intersections[intersections['INT_NAME'] == origin_name]['INT_LNG'].values[0]
+ref_lat = intersections[intersections['INT_NAME'] == origin_name]['INT_LAT'].values[0]
+intersections['X'] = (intersections['INT_LNG'] - ref_lng) * 111000 * math.cos(math.radians(ref_lat))
+intersections['Y'] = (intersections['INT_LAT'] - ref_lat) * 111000
+intersections.reset_index(drop=True, inplace=True)
+
+# n=ways 정보 추가 where "n지교차로"
+name2way = \
+{"한솔삼거리(한솔마을3거리)":3,
+"느티마을4단지":3,
+"한솔6단지(정자동사무소)":4,
+"신기4거리":4,
+"느티마을4거리":4,
+"느티마을 안촌유치원":2,
+"상록마을 321동":2,
+"상록4거리(상록마을입구4거리)":4,
+"상록마을단일로":2,
+"상록마을302동 단일로":2}
+intersections['ways'] = intersections['INT_NAME'].map(name2way)
+
+### phase_config
+phase_config_path = os.path.join('daily/S_INT_PHASE_CONFIG.csv')
+phase_config = pd.read_csv(phase_config_path)
+phase_config_original = phase_config.copy()
+phase_config = phase_config[phase_config['INT_NO'].isin(demo_int_nos)]
+
+# INT_NO, ways 가져옴
+phase_config = pd.merge(phase_config, intersections[['INT_NO', 'ways']], on='INT_NO', how='left')
+cols = phase_config.columns.tolist()
+cols.remove('ways')
+cols.insert(1, 'ways')
+phase_config = phase_config[cols]
+
+# 링번호 변경, 주현시여부, 황색시간, 최소녹색시간, 최대녹색시간 임의 지정
+phase_config['INT_RING'] = phase_config['INT_RING'].replace({0: 'A', 1: 'B'})
+phase_config['INT_MAIN_PHASE'] = np.where(phase_config['INT_PHASE_NO'] == 1, 20, 10)
+null_condition = phase_config['INT_FLOW_NO'] == 17
+phase_config['INT_YELLOW'] = np.where(null_condition, 0, 4)
+np.random.seed(0)
+phase_config['INT_MIN_SPLIT'] = np.where(~null_condition, np.random.randint(12, 41, size=len(phase_config)), phase_config['INT_MIN_SPLIT'])
+phase_config['INT_MAX_SPLIT'] = np.where(~null_condition, phase_config['INT_MIN_SPLIT'] + np.random.randint(5, 20, size=len(phase_config)) ,phase_config['INT_MAX_SPLIT'])
+phase_config.sort_values(by=['INT_NO', 'INT_PHASE_NO','INT_RING'], inplace=True)
+
+
+
+
+
+
+
+
In [ ]:
+
+
+
# 1. 교차로정보 (intersections, 테이블명 : S_INT_CONFIG)
+intersections_original[:10]
+
+
+
+
+
+
+
+
Out[ ]:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INT_NOINT_NAMESA_NOINT_LATINT_LNGIS_SMART
01도촌4거리137.41405127.143851.0
12동원SK삼거리(아시아 주유소)137.41282127.14382NaN
23상탑4거리037.40809127.14296NaN
34돌마4거리(상탑3거리)037.40683127.142011.0
45상탑초3거리037.40561127.14473NaN
56야탑3치안센터(상탑 P.B)037.40549127.14823NaN
67테크노 단일로037.40486127.15121NaN
78분당테크노파크A동037.40499127.15034NaN
89분당테크노파크C동(분당테크노파크)037.40545127.15526NaN
910야탑차량등록사업소037.40682127.15470NaN
+
+
+
+
+
+
+
+
In [ ]:
+
+
+
# 1*. 교차로정보 수정 (데모버전)
+intersections[:10]
+
+
+
+
+
+
+
+
Out[ ]:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INT_NOINT_NAMESA_NOINT_LATINT_LNGIS_SMARTnode_idsXYways
0175한솔삼거리(한솔마을3거리)037.36857127.11478NaNn0437.586026566.103
1176느티마을4단지037.36724127.11480NaNn1439.350485418.473
2177한솔6단지(정자동사무소)037.36619127.11480NaNn2439.350485301.924
3178신기4거리037.36346127.11480NaNn3439.350485-1.114
4201느티마을4거리037.36854127.109840.0n41.764460562.774
5202느티마을 안촌유치원037.36855127.11241NaNn5228.497542563.882
6206상록마을 321동037.36483127.10981NaNn6-0.882230150.962
7210상록4거리(상록마을입구4거리)037.36347127.109820.0n70.0000000.004
8211상록마을단일로037.36346127.11237NaNn8224.968622-1.112
9212상록마을302동 단일로037.36347127.11306NaNn9285.8424840.002
+
+
+
+
+
+
+
+
In [ ]:
+
+
+
# 2. 현시정보 (phase_config, 테이블명 : S_INT_PHASE_CONFIG)
+phase_config_original[:10]
+
+
+
+
+
+
+
+
Out[ ]:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INT_NOINT_PHASE_NOINT_PLAN_CLSSINT_RINGINT_FLOW_NOINT_MIN_SPLITINT_MAX_SPLITINT_YELLOWINT_MAIN_PHASEINT_LANEINT_PHASE_LAT1INT_PHASE_LNG1INT_PHASE_LAT2INT_PHASE_LNG2INT_PHASE_LAT3INT_PHASE_LNG3
020410080000037.36581127.1082237.36614127.1082237.36626127.10822
120410140000037.36646127.1079737.36614127.1079737.36602127.10797
2204200170000019.69448117.9926019.69448117.9926019.69448117.99260
320510070000037.36595127.1060737.36563127.1060837.36563127.10622
420510140000037.36595127.1058237.36563127.1058337.36551127.10583
520520130000037.36530127.1058337.36563127.1058337.36563127.10568
620520080000037.36530127.1060837.36563127.1060837.36575127.10607
7205300170000019.69448117.9926019.69448117.9926019.69448117.99260
820540060000037.36573127.1063637.36573127.1059537.36573127.10580
920540110000037.36553127.1063637.36553127.1059537.36541127.10595
+
+
+
+
+
+
+
+
In [ ]:
+
+
+
# 2*. 현시정보 수정 (데모버전)
+phase_config[:10]
+
+
+
+
+
+
+
+
Out[ ]:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INT_NOwaysINT_PHASE_NOINT_PLAN_CLSSINT_RINGINT_FLOW_NOINT_MIN_SPLITINT_MAX_SPLITINT_YELLOWINT_MAIN_PHASEINT_LANEINT_PHASE_LAT1INT_PHASE_LNG1INT_PHASE_LAT2INT_PHASE_LNG2INT_PHASE_LAT3INT_PHASE_LNG3
20175310A81832420037.36825127.1149137.36857127.1149037.36869127.11491
19175310B41327420037.36890127.1146737.36857127.1146537.36845127.11466
21175320A71927410037.36889127.1149137.36857127.1149037.36856127.11505
22175320B33546410037.36824127.1146637.36857127.1146537.36857127.11451
23175330A62638410037.36867127.1151937.36867127.1147837.36867127.11463
24175330B13652410037.36847127.1151837.36847127.1147837.36835127.11478
25175340A52948410037.36866127.1143737.36867127.1147837.36878127.11478
26175340B21724410037.36847127.1143737.36847127.1147837.36847127.11493
27176310A83753420037.36691127.1149337.36724127.1149337.36735127.11493
28176310B42530420037.36756127.1146737.36723127.1146837.36712127.11468
+
+
+
+
+
+
+
+
In [ ]:
+
+
+
### tplan
+tplan_path = os.path.join('daily/S_INT_TPLAN.csv')
+tplan = pd.read_csv(tplan_path)
+# cycleplan
+cycleplan_path = os.path.join(recent_folder, 'daily/S_SA_CYCLE_PLAN.csv')
+cycleplan = pd.read_csv(cycleplan_path)
+# wplan
+wplan_path = os.path.join(recent_folder, 'daily/S_SA_WPLAN.csv')
+wplan = pd.read_csv(wplan_path)
+# dplan
+dplan_path = os.path.join(recent_folder, 'daily/S_SA_DPLAN.csv')
+dplan = pd.read_csv(dplan_path)
+# history
+history_path = os.path.join(recent_folder, 'realtime/S_TOD_HIS.csv')
+history= pd.read_csv(history_path)
+
+
+
+
+
+
+
+
In [ ]:
+
+
+
# 3. 신호계획정보 (tplan, wplan, dplan, 테이블명 : S_INT_TPLAN, S_INT_WPLAN, S_INT_DPLAN)
+display(tplan[:10])
+display(wplan[:10])
+display(dplan[:10])
+
+
+
+
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INT_NOINT_PLAN_NOINT_PLAN_INDEXINT_ASPLIT1INT_ASPLIT2INT_ASPLIT3INT_ASPLIT4INT_ASPLIT5INT_ASPLIT6INT_ASPLIT7INT_ASPLIT8INT_BSPLIT1INT_BSPLIT2INT_BSPLIT3INT_BSPLIT4INT_BSPLIT5INT_BSPLIT6INT_BSPLIT7INT_BSPLIT8INT_OFFSET
08061160503020NaNNaNNaNNaN60503020NaNNaNNaNNaNNaN
18081160503020NaNNaNNaNNaN60503020NaNNaNNaNNaNNaN
28091160503020NaNNaNNaNNaN60503020NaNNaNNaNNaNNaN
38101160503020NaNNaNNaNNaN60503020NaNNaNNaNNaNNaN
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SA_NOSA_WEEKSA_DPLAN
03011
13021
23031
33041
43051
53061
63071
7121
8131
9111
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SA_NOSA_DPLAN_NOSA_DPLAN_INDEXSA_START_HOURSA_START_MINSA_CYCLE_INDEXSA_OFFSETSA_SPLIT
011100111
111260222
2113100355
3114160222
411500000
511600000
611700000
711800000
811900000
9111000000
+
+
+
+
+
+
+
+
In [ ]:
+
+
+
# 4. 신호이력정보 (history, 테이블명 : S_TOD_HIS)
+history
+
+
+
+
+
+
+
+
Out[ ]:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
INT_NOINT_CREATE_DATEINT_SPLIT1INT_SPLIT2INT_SPLIT3INT_SPLIT4INT_SPLIT5INT_SPLIT6INT_SPLIT7INT_SPLIT8INT_OFFSETINT_CYCLE
07432023-10-18 08:10:00000000NaNNaN00
17432023-10-18 08:13:00000000NaNNaN00
27432023-10-18 08:14:00000000NaNNaN00
37432023-10-18 08:16:00000000NaNNaN00
47432023-10-18 08:17:00000000NaNNaN00
.......................................
110934772023-10-18 08:05:00000000NaNNaN00
110944772023-10-18 08:06:00000000NaNNaN00
110954772023-10-18 08:07:00000000NaNNaN00
110964772023-10-18 08:08:00000000NaNNaN00
110974772023-10-18 08:09:00000000NaNNaN00
+

11098 rows × 12 columns

+
+
+
+
+
+
+
+
+ +