From 333d61a5acdd6b595b32558c4d2af1452295b698 Mon Sep 17 00:00:00 2001 From: govin08 Date: Wed, 17 Jul 2024 17:47:10 +0900 Subject: [PATCH] generate_signals.py : introduce self.sim_timespan, add parser (not tested), preprocess_signal.py : fix a specific date. --- Documents/신호생성 정리(240712).pptx | Bin 684325 -> 684416 bytes Scripts/generate_signals.py | 21 +- Scripts/preprocess_daily.py | 2 +- .../0712_revise_code/0717_revise_code.ipynb | 1877 ++++++++++++++++- 4 files changed, 1795 insertions(+), 105 deletions(-) diff --git a/Documents/신호생성 정리(240712).pptx b/Documents/신호생성 정리(240712).pptx index e341ed66bf4a71678341c797a6c30664b534a9eb..7a5e03e85a112bfcc38ce2b80aa00a405b5ecd7c 100644 GIT binary patch delta 8599 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 gSsS?= lsbs] start_unixes = np.array(group.start_unix) start_unixes = np.sort(np.unique(start_unixes))[:self.node2num_cycles[node_id]] - + group = group[group.start_unix.isin(start_unixes)] self.sigtable.append(group) self.sigtable = pd.concat(self.sigtable).reset_index(drop=True) @@ -855,7 +853,12 @@ class SignalGenerator(): print('total time :', self.time6 - self.time0) if __name__ == '__main__': - self = SignalGenerator() + parser = argparse.ArgumentParser() + parser.add_argument('-c','--config_name', dest='config_name', type=str, default='draft') + + args = parser.parse_args() + config_name = args.config_name + self = SignalGenerator(config_name=config_name) self.main() # self.path_unit = os.path.join(self.path_root, 'Analysis', '0207_unit_test') # self.hrhists.to_csv(os.path.join(self.path_unit, 'hrhists.csv')) diff --git a/Scripts/preprocess_daily.py b/Scripts/preprocess_daily.py index a7ef82987..bdd232a8f 100644 --- a/Scripts/preprocess_daily.py +++ b/Scripts/preprocess_daily.py @@ -272,7 +272,7 @@ class DailyPreprocessor(): 'PPC_TYPE', 'LOS_YN', 'USE_YN', 'FRST_REG_DT', 'LAST_MDFCN_DT']) # 날짜정보 추출 - now = datetime.now() + now = datetime.now().replace(month=1, day=5, hour=10) MM, DD = now.month, now.day # 월, 일 hplan = self.holyplan[(self.holyplan.MM==MM) & (self.holyplan.DD==DD)] dow_number = now.weekday() # 요일 diff --git a/analysis/0712_revise_code/0717_revise_code.ipynb b/analysis/0712_revise_code/0717_revise_code.ipynb index 8cb6c0934..36089b0be 100644 --- a/analysis/0712_revise_code/0717_revise_code.ipynb +++ b/analysis/0712_revise_code/0717_revise_code.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 6, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -22,7 +22,16 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "self = DailyPreprocessor(config_name='revised')" + ] + }, + { + "cell_type": "code", + "execution_count": 27, "metadata": {}, "outputs": [ { @@ -34,20 +43,1781 @@ "1-2. 테이블들이 로드되었습니다.\n", "1-3. 네트워크의 모든 clean state requirement들을 체크했습니다.\n", "1-5. 테이블을 표준화했습니다.\n", - "1-6. 주요 객체 (리스트, 딕셔너리)들을 저장했습니다.\n", - "2. 중간산출물을 생성합니다.\n", - "2-1. 매칭 테이블들을 생성했습니다.\n", - "2-2. 초기화 신호가 지정되었습니다. (우회전 : g)\n", - "2-3. 유턴 인덱스 / 비보호좌회전 인덱스를 지정했습니다.\n", - "2-4. 직진 및 좌회전(G)을 배정했습니다.\n", - "2-5. node2num_cycles.json를 저장했습니다.\n", - "3. 이슈사항을 저장합니다.\n" + "1-6. 주요 객체 (리스트, 딕셔너리)들을 저장했습니다.\n" ] } ], "source": [ - "self = DailyPreprocessor(config_name='revised')\n", - "self.main()" + "self.load_data()\n", + "self.make_match1()\n", + "self.make_match2()\n", + "self.make_match3()\n", + "self.make_match4()\n", + "self.make_match5()\n", + "self.make_match6()" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
inter_nophase_noring_typemove_noinc_direout_direinc_angleout_angleinc_edge_idout_edge_idnode_idnode_typeturn_type
01751A8179004-571542797_02571500487_01i0normalstraight
11751B4003176-571500487_01571542797_02i0normalstraight
21752A7001095-571500487_01571545870_01i0normalleft
31752B3179271-571542797_02571510153_01i0normalleft
41753A6092270571545870_02571510153_01i0normalstraight
..........................................
1032102B2270090NaNNaNu60u_turnstraight
1042103A7359090NaNNaNu60u_turnleft
1052103B4000180NaNNaNu60u_turnstraight
1062104A8180000NaNNaNu60u_turnstraight
1072104B3180270NaNNaNu60u_turnleft
\n", + "

108 rows × 13 columns

\n", + "
" + ], + "text/plain": [ + " inter_no phase_no ring_type move_no inc_dire out_dire inc_angle \\\n", + "0 175 1 A 8 남 북 179 \n", + "1 175 1 B 4 북 남 003 \n", + "2 175 2 A 7 북 동 001 \n", + "3 175 2 B 3 남 서 179 \n", + "4 175 3 A 6 동 서 092 \n", + ".. ... ... ... ... ... ... ... \n", + "103 210 2 B 2 서 동 270 \n", + "104 210 3 A 7 북 동 359 \n", + "105 210 3 B 4 북 남 000 \n", + "106 210 4 A 8 남 북 180 \n", + "107 210 4 B 3 남 서 180 \n", + "\n", + " out_angle inc_edge_id out_edge_id node_id node_type turn_type \n", + "0 004 -571542797_02 571500487_01 i0 normal straight \n", + "1 176 -571500487_01 571542797_02 i0 normal straight \n", + "2 095 -571500487_01 571545870_01 i0 normal left \n", + "3 271 -571542797_02 571510153_01 i0 normal left \n", + "4 270 571545870_02 571510153_01 i0 normal straight \n", + ".. ... ... ... ... ... ... \n", + "103 090 NaN NaN u60 u_turn straight \n", + "104 090 NaN NaN u60 u_turn left \n", + "105 180 NaN NaN u60 u_turn straight \n", + "106 000 NaN NaN u60 u_turn straight \n", + "107 270 NaN NaN u60 u_turn left \n", + "\n", + "[108 rows x 13 columns]" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "self.match6" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "self.match7 = self.match6.copy()\n", + "self.match7 = self.match7[['inter_no', 'node_id', 'move_no', 'inc_angle', 'out_angle', 'inc_dire', 'out_dire', 'inc_edge_id', 'out_edge_id', 'node_type', 'turn_type']]\n", + "\n", + "# (1) 각 교차로별 방향 목록 : pdires (possible directions)\n", + "p2dires = {} # parent_id to directions\n", + "for parent_id in self.parent_ids:\n", + " dires = self.match7[self.match7.node_id == parent_id][['inc_dire','out_dire']].values.flatten()\n", + " dires = {dire for dire in dires if type(dire)==str}\n", + " p2dires[parent_id] = dires\n", + "\n", + "# (2) 각 (교차로, 진입방향) 별 진입id 목록 : inc2id (incoming direction to incoming edge_id)\n", + "inc2id = {}\n", + "for parent_id in self.parent_ids:\n", + " for inc_dire in p2dires[parent_id]:\n", + " df = self.match7[(self.match7.node_id==parent_id) & (self.match7.inc_dire==inc_dire)]\n", + " inc2id[(parent_id, inc_dire)] = df.inc_edge_id.iloc[0]\n", + "\n", + "# (3) 각 (교차로, 진출방향) 별 진출id 목록 : out2id (outgoing direction to outgoing edge_id)\n", + "out2id = {}\n", + "for parent_id in self.parent_ids:\n", + " for out_dire in p2dires[parent_id]:\n", + " df = self.match7[(self.match7.node_id==parent_id) & (self.match7.out_dire==out_dire)]\n", + " out2id[(parent_id, out_dire)] = df.out_edge_id.iloc[0]\n", + "\n", + "# (4) 각 parent_id별 이동류번호 목록\n", + "p2move = dict() # parent id to a list of aligned movement numbers\n", + "for parent_id in self.parent_ids:\n", + " pnema = self.nema[self.nema.inc_dire.isin(p2dires[parent_id]) & self.nema.out_dire.isin(p2dires[parent_id])]\n", + " p2move[parent_id] = list(pnema.move_no)\n", + "\n", + "# (5) 방위별 방향벡터\n", + "dire2vec = dict() # direction to unit vector\n", + "theta = np.pi/2\n", + "for dire in self.dires:\n", + " dire2vec[dire] = np.array([np.cos(theta), np.sin(theta)])\n", + " theta -= np.pi/4\n", + "\n", + "# (6) 각 parent_id별 : 각 이동류별 진입/진출 엣지 id\n", + "p2move2inc_edge_id = dict() # parent id to move2inc_edge_id\n", + "p2move2out_edge_id = dict() # parent id to move2out_edge_id\n", + "for parent_id in self.parent_ids:\n", + " move2inc_edge_id = dict() # plain movement to incoming edge id\n", + " move2out_edge_id = dict() # plain movement to outgoing edge id\n", + " for move_no in range(1,17):\n", + " row = self.nema[self.nema.move_no==move_no].iloc[0]\n", + " inc_dire = row.inc_dire\n", + " out_dire = row.out_dire\n", + " inc_vec_true = dire2vec[inc_dire]\n", + " out_vec_true = dire2vec[out_dire]\n", + "\n", + " node = self.net.getNode(parent_id)\n", + " # 교차로의 모든 (from / to) edges\n", + " inc_edges = [edge for edge in node.getIncoming() if edge.getFunction() == ''] # incoming edges\n", + " out_edges = [edge for edge in node.getOutgoing() if edge.getFunction() == ''] # outgoing edges\n", + " # 교차로의 모든 (from / to) unit vector\n", + " inc_vecs = []\n", + " for inc_edge in inc_edges:\n", + " start = inc_edge.getShape()[-1]\n", + " end = inc_edge.getShape()[-2]\n", + " inc_vec = np.array(end) - np.array(start)\n", + " inc_vec = inc_vec / (inc_vec ** 2).sum() ** 0.5\n", + " inc_vecs.append(inc_vec)\n", + " out_vecs = []\n", + " for out_edge in out_edges:\n", + " start = out_edge.getShape()[0]\n", + " end = out_edge.getShape()[1]\n", + " out_vec = np.array(end) - np.array(start)\n", + " out_vec = out_vec / (out_vec ** 2).sum() ** 0.5\n", + " out_vecs.append(out_vec)\n", + " # 매칭 엣지 반환\n", + " inc_index = np.array([np.dot(inc_vec, inc_vec_true) for inc_vec in inc_vecs]).argmax()\n", + " out_index = np.array([np.dot(out_vec, out_vec_true) for out_vec in out_vecs]).argmax()\n", + " inc_edge_id = inc_edges[inc_index].getID()\n", + " out_edge_id = out_edges[out_index].getID()\n", + " move2inc_edge_id[move_no] = inc_edge_id\n", + " move2out_edge_id[move_no] = out_edge_id\n", + " p2move2inc_edge_id[parent_id] = move2inc_edge_id\n", + " p2move2out_edge_id[parent_id] = move2out_edge_id\n", + "\n", + "# (7) 각 이동류별 진입/진출 방위\n", + "m2inc_dire = dict()\n", + "m2out_dire = dict()\n", + "for move_no in range(1,17):\n", + " row = self.nema[self.nema.move_no==move_no].iloc[0]\n", + " m2inc_dire[move_no] = row.inc_dire\n", + " m2out_dire[move_no] = row.out_dire\n" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'i0': [1, 2, 3, 4, 5, 6, 7, 8],\n", + " 'i1': [3, 4, 5, 8],\n", + " 'i2': [4, 8],\n", + " 'i3': [1, 2, 3, 4, 5, 6, 7, 8],\n", + " 'i6': [1, 2, 3, 4, 5, 6, 7, 8],\n", + " 'i7': [4, 8],\n", + " 'i8': [1, 2, 3, 4, 5, 6, 7, 8],\n", + " 'i9': [2, 6]}" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p2move" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "i0\n", + "1\n", + "571545870_02\n", + "571545870_02\n", + "2\n", + "571510153_02\n", + "571510153_02\n", + "3\n", + "-571542797_02\n", + "-571542797_02\n", + "4\n", + "-571500487_01\n", + "-571500487_01\n", + "5\n", + "571510153_02\n", + "571510153_02\n", + "6\n", + "571545870_02\n", + "571545870_02\n", + "7\n", + "-571500487_01\n", + "-571500487_01\n", + "8\n", + "-571542797_02\n", + "-571542797_02\n", + "9\n", + "-571500487_01\n", + "-571500487_01\n", + "10\n", + "571510153_02\n", + "571510153_02\n", + "11\n", + "571545870_02\n", + "571545870_02\n", + "12\n", + "-571500487_01\n", + "-571500487_01\n", + "13\n", + "571510153_02\n", + "571510153_02\n", + "14\n", + "-571500487_01\n", + "-571500487_01\n", + "15\n", + "-571500487_01\n", + "-571500487_01\n", + "16\n", + "571545870_02\n", + "571545870_02\n", + "i1\n", + "1\n", + "571542797_02.99\n", + "571542797_02.99\n", + "2\n", + "571543469_02\n", + "571543469_02\n", + "3\n", + "-571542810_01\n", + "-571542810_01\n", + "4\n", + "571542797_02.99\n", + "571542797_02.99\n", + "5\n", + "571543469_02\n", + "571543469_02\n", + "6\n", + "571542797_02.99\n", + "571542797_02.99\n", + "7\n", + "571542797_02.99\n", + "571542797_02.99\n", + "8\n", + "-571542810_01\n", + "-571542810_01\n", + "9\n", + "571542797_02.99\n", + "571542797_02.99\n", + "10\n", + "-571542810_01\n", + "-571542810_01\n", + "11\n", + "-571542810_01\n", + "-571542810_01\n", + "12\n", + "571543469_02\n", + "571543469_02\n", + "13\n", + "-571542810_01\n", + "-571542810_01\n", + "14\n", + "571542797_02.99\n", + "571542797_02.99\n", + "15\n", + "571543469_02\n", + "571543469_02\n", + "16\n", + "-571542810_01\n", + "-571542810_01\n", + "i2\n", + "1\n", + "571542107_02\n", + "571542107_02\n", + "2\n", + "-571542809_01\n", + "-571542809_01\n", + "3\n", + "-571542809_01\n", + "-571542809_01\n", + "4\n", + "571542811_02\n", + "571542811_02\n", + "5\n", + "-571542809_01\n", + "-571542809_01\n", + "6\n", + "571542107_02\n", + "571542107_02\n", + "7\n", + "571542811_02\n", + "571542811_02\n", + "8\n", + "-571542809_01\n", + "-571542809_01\n", + "9\n", + "571542107_02\n", + "571542107_02\n", + "10\n", + "-571542809_01\n", + "-571542809_01\n", + "11\n", + "-571542809_01\n", + "-571542809_01\n", + "12\n", + "571542811_02\n", + "571542811_02\n", + "13\n", + "-571542809_01\n", + "-571542809_01\n", + "14\n", + "571542107_02\n", + "571542107_02\n", + "15\n", + "571542811_02\n", + "571542811_02\n", + "16\n", + "-571542809_01\n", + "-571542809_01\n", + "i3\n", + "1\n", + "-571500475_01\n", + "-571500475_01\n", + "2\n", + "571540303_02.21\n", + "571540303_02.21\n", + "3\n", + "571540304_02\n", + "571540304_02\n", + "4\n", + "571556450_02\n", + "571556450_02\n", + "5\n", + "571540303_02.21\n", + "571540303_02.21\n", + "6\n", + "-571500475_01\n", + "-571500475_01\n", + "7\n", + "571556450_02\n", + "571556450_02\n", + "8\n", + "571540304_02\n", + "571540304_02\n", + "9\n", + "571556450_02\n", + "571556450_02\n", + "10\n", + "571540304_02\n", + "571540304_02\n", + "11\n", + "-571500475_01\n", + "-571500475_01\n", + "12\n", + "571540303_02.21\n", + "571540303_02.21\n", + "13\n", + "571540304_02\n", + "571540304_02\n", + "14\n", + "571556450_02\n", + "571556450_02\n", + "15\n", + "571540303_02.21\n", + "571540303_02.21\n", + "16\n", + "-571500475_01\n", + "-571500475_01\n", + "i6\n", + "1\n", + "-571542115_01\n", + "-571542115_01\n", + "2\n", + "571500535_02.18\n", + "571500535_02.18\n", + "3\n", + "571500585_02\n", + "571500585_02\n", + "4\n", + "571511538_02.121\n", + "571511538_02.121\n", + "5\n", + "571500535_02.18\n", + "571500535_02.18\n", + "6\n", + "-571542115_01\n", + "-571542115_01\n", + "7\n", + "571511538_02.121\n", + "571511538_02.121\n", + "8\n", + "571500585_02\n", + "571500585_02\n", + "9\n", + "571511538_02.121\n", + "571511538_02.121\n", + "10\n", + "571500585_02\n", + "571500585_02\n", + "11\n", + "-571542115_01\n", + "-571542115_01\n", + "12\n", + "571500535_02.18\n", + "571500535_02.18\n", + "13\n", + "571500585_02\n", + "571500585_02\n", + "14\n", + "571511538_02.121\n", + "571511538_02.121\n", + "15\n", + "571500535_02.18\n", + "571500535_02.18\n", + "16\n", + "-571542115_01\n", + "-571542115_01\n", + "i7\n", + "1\n", + "571542071_02\n", + "571542071_02\n", + "2\n", + "-571511538_02\n", + "-571511538_02\n", + "3\n", + "-571511538_02\n", + "-571511538_02\n", + "4\n", + "571542073_01\n", + "571542073_01\n", + "5\n", + "-571511538_02\n", + "-571511538_02\n", + "6\n", + "571542071_02\n", + "571542071_02\n", + "7\n", + "571542073_01\n", + "571542073_01\n", + "8\n", + "-571511538_02\n", + "-571511538_02\n", + "9\n", + "571542073_01\n", + "571542073_01\n", + "10\n", + "-571511538_02\n", + "-571511538_02\n", + "11\n", + "571542071_02\n", + "571542071_02\n", + "12\n", + "571542073_01\n", + "571542073_01\n", + "13\n", + "-571511538_02\n", + "-571511538_02\n", + "14\n", + "571542073_01\n", + "571542073_01\n", + "15\n", + "571542073_01\n", + "571542073_01\n", + "16\n", + "571542071_02\n", + "571542071_02\n", + "i8\n", + "1\n", + "571500617_02\n", + "571500617_02\n", + "2\n", + "571500618_02\n", + "571500618_02\n", + "3\n", + "-571500569_01\n", + "-571500569_01\n", + "4\n", + "571500583_01\n", + "571500583_01\n", + "5\n", + "571500618_02\n", + "571500618_02\n", + "6\n", + "571500617_02\n", + "571500617_02\n", + "7\n", + "571500583_01\n", + "571500583_01\n", + "8\n", + "-571500569_01\n", + "-571500569_01\n", + "9\n", + "571500583_01\n", + "571500583_01\n", + "10\n", + "-571500569_01\n", + "-571500569_01\n", + "11\n", + "571500617_02\n", + "571500617_02\n", + "12\n", + "571500618_02\n", + "571500618_02\n", + "13\n", + "-571500569_01\n", + "-571500569_01\n", + "14\n", + "571500583_01\n", + "571500583_01\n", + "15\n", + "571500618_02\n", + "571500618_02\n", + "16\n", + "571500617_02\n", + "571500617_02\n", + "i9\n", + "1\n", + "571510152_02\n", + "571510152_02\n", + "2\n", + "571510152_01\n", + "571510152_01\n", + "3\n", + "571510152_02\n", + "571510152_02\n", + "4\n", + "571510152_01\n", + "571510152_01\n", + "5\n", + "571510152_01\n", + "571510152_01\n", + "6\n", + "571510152_02\n", + "571510152_02\n", + "7\n", + "571510152_01\n", + "571510152_01\n", + "8\n", + "571510152_02\n", + "571510152_02\n", + "9\n", + "571510152_02\n", + "571510152_02\n", + "10\n", + "571510152_01\n", + "571510152_01\n", + "11\n", + "571510152_02\n", + "571510152_02\n", + "12\n", + "571510152_01\n", + "571510152_01\n", + "13\n", + "571510152_01\n", + "571510152_01\n", + "14\n", + "571510152_02\n", + "571510152_02\n", + "15\n", + "571510152_01\n", + "571510152_01\n", + "16\n", + "571510152_02\n", + "571510152_02\n" + ] + } + ], + "source": [ + "for parent_id in self.parent_ids:\n", + " print(parent_id)\n", + " for move_no in range(1,17):\n", + " print(move_no)\n", + " print(p2move2inc_edge_id[parent_id][move_no])\n", + " print(p2move2inc_edge_id[parent_id][move_no])" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "move_no 1\n", + "inc_dire 동\n", + "out_dire 남\n", + "Name: 0, dtype: object\n", + "571545870_02 571542797_02\n", + "move_no 2\n", + "inc_dire 서\n", + "out_dire 동\n", + "Name: 1, dtype: object\n", + "571510153_02 571545870_01\n", + "move_no 3\n", + "inc_dire 남\n", + "out_dire 서\n", + "Name: 2, dtype: object\n", + "-571542797_02 571510153_01\n", + "move_no 4\n", + "inc_dire 북\n", + "out_dire 남\n", + "Name: 3, dtype: object\n", + "-571500487_01 571542797_02\n", + "move_no 5\n", + "inc_dire 서\n", + "out_dire 북\n", + "Name: 4, dtype: object\n", + "571510153_02 571500487_01\n", + "move_no 6\n", + "inc_dire 동\n", + "out_dire 서\n", + "Name: 5, dtype: object\n", + "571545870_02 571510153_01\n", + "move_no 7\n", + "inc_dire 북\n", + "out_dire 동\n", + "Name: 6, dtype: object\n", + "-571500487_01 571545870_01\n", + "move_no 8\n", + "inc_dire 남\n", + "out_dire 북\n", + "Name: 7, dtype: object\n", + "-571542797_02 571500487_01\n", + "move_no 9\n", + "inc_dire 북동\n", + "out_dire 남동\n", + "Name: 8, dtype: object\n", + "-571500487_01 571545870_01\n", + "move_no 10\n", + "inc_dire 남서\n", + "out_dire 북동\n", + "Name: 9, dtype: object\n", + "571510153_02 571500487_01\n", + "move_no 11\n", + "inc_dire 남동\n", + "out_dire 남서\n", + "Name: 10, dtype: object\n", + "571545870_02 571510153_01\n", + "move_no 12\n", + "inc_dire 북서\n", + "out_dire 남동\n", + "Name: 11, dtype: object\n", + "-571500487_01 571545870_01\n", + "move_no 13\n", + "inc_dire 남서\n", + "out_dire 북서\n", + "Name: 12, dtype: object\n", + "571510153_02 571500487_01\n", + "move_no 14\n", + "inc_dire 북동\n", + "out_dire 남서\n", + "Name: 13, dtype: object\n", + "-571500487_01 571510153_01\n", + "move_no 15\n", + "inc_dire 북서\n", + "out_dire 북동\n", + "Name: 14, dtype: object\n", + "-571500487_01 571500487_01\n", + "move_no 16\n", + "inc_dire 남동\n", + "out_dire 북서\n", + "Name: 15, dtype: object\n", + "571545870_02 571500487_01\n", + "move_no 1\n", + "inc_dire 동\n", + "out_dire 남\n", + "Name: 0, dtype: object\n", + "571542797_02.99 571542810_01\n", + "move_no 2\n", + "inc_dire 서\n", + "out_dire 동\n", + "Name: 1, dtype: object\n", + "571543469_02 -571542797_02.99\n", + "move_no 3\n", + "inc_dire 남\n", + "out_dire 서\n", + "Name: 2, dtype: object\n", + "-571542810_01 571543469_01\n", + "move_no 4\n", + "inc_dire 북\n", + "out_dire 남\n", + "Name: 3, dtype: object\n", + "571542797_02.99 571542810_01\n", + "move_no 5\n", + "inc_dire 서\n", + "out_dire 북\n", + "Name: 4, dtype: object\n", + "571543469_02 -571542797_02.99\n", + "move_no 6\n", + "inc_dire 동\n", + "out_dire 서\n", + "Name: 5, dtype: object\n", + "571542797_02.99 571543469_01\n", + "move_no 7\n", + "inc_dire 북\n", + "out_dire 동\n", + "Name: 6, dtype: object\n", + "571542797_02.99 -571542797_02.99\n", + "move_no 8\n", + "inc_dire 남\n", + "out_dire 북\n", + "Name: 7, dtype: object\n", + "-571542810_01 -571542797_02.99\n", + "move_no 9\n", + "inc_dire 북동\n", + "out_dire 남동\n", + "Name: 8, dtype: object\n", + "571542797_02.99 571542810_01\n", + "move_no 10\n", + "inc_dire 남서\n", + "out_dire 북동\n", + "Name: 9, dtype: object\n", + "-571542810_01 -571542797_02.99\n", + "move_no 11\n", + "inc_dire 남동\n", + "out_dire 남서\n", + "Name: 10, dtype: object\n", + "-571542810_01 571542810_01\n", + "move_no 12\n", + "inc_dire 북서\n", + "out_dire 남동\n", + "Name: 11, dtype: object\n", + "571543469_02 571542810_01\n", + "move_no 13\n", + "inc_dire 남서\n", + "out_dire 북서\n", + "Name: 12, dtype: object\n", + "-571542810_01 571543469_01\n", + "move_no 14\n", + "inc_dire 북동\n", + "out_dire 남서\n", + "Name: 13, dtype: object\n", + "571542797_02.99 571542810_01\n", + "move_no 15\n", + "inc_dire 북서\n", + "out_dire 북동\n", + "Name: 14, dtype: object\n", + "571543469_02 -571542797_02.99\n", + "move_no 16\n", + "inc_dire 남동\n", + "out_dire 북서\n", + "Name: 15, dtype: object\n", + "-571542810_01 571543469_01\n", + "move_no 1\n", + "inc_dire 동\n", + "out_dire 남\n", + "Name: 0, dtype: object\n", + "571542107_02 571542809_01\n", + "move_no 2\n", + "inc_dire 서\n", + "out_dire 동\n", + "Name: 1, dtype: object\n", + "-571542809_01 571542107_01\n", + "move_no 3\n", + "inc_dire 남\n", + "out_dire 서\n", + "Name: 2, dtype: object\n", + "-571542809_01 571542809_01\n", + "move_no 4\n", + "inc_dire 북\n", + "out_dire 남\n", + "Name: 3, dtype: object\n", + "571542811_02 571542809_01\n", + "move_no 5\n", + "inc_dire 서\n", + "out_dire 북\n", + "Name: 4, dtype: object\n", + "-571542809_01 571542811_01\n", + "move_no 6\n", + "inc_dire 동\n", + "out_dire 서\n", + "Name: 5, dtype: object\n", + "571542107_02 571542809_01\n", + "move_no 7\n", + "inc_dire 북\n", + "out_dire 동\n", + "Name: 6, dtype: object\n", + "571542811_02 571542107_01\n", + "move_no 8\n", + "inc_dire 남\n", + "out_dire 북\n", + "Name: 7, dtype: object\n", + "-571542809_01 571542811_01\n", + "move_no 9\n", + "inc_dire 북동\n", + "out_dire 남동\n", + "Name: 8, dtype: object\n", + "571542107_02 571542809_01\n", + "move_no 10\n", + "inc_dire 남서\n", + "out_dire 북동\n", + "Name: 9, dtype: object\n", + "-571542809_01 571542107_01\n", + "move_no 11\n", + "inc_dire 남동\n", + "out_dire 남서\n", + "Name: 10, dtype: object\n", + "-571542809_01 571542809_01\n", + "move_no 12\n", + "inc_dire 북서\n", + "out_dire 남동\n", + "Name: 11, dtype: object\n", + "571542811_02 571542809_01\n", + "move_no 13\n", + "inc_dire 남서\n", + "out_dire 북서\n", + "Name: 12, dtype: object\n", + "-571542809_01 571542811_01\n", + "move_no 14\n", + "inc_dire 북동\n", + "out_dire 남서\n", + "Name: 13, dtype: object\n", + "571542107_02 571542809_01\n", + "move_no 15\n", + "inc_dire 북서\n", + "out_dire 북동\n", + "Name: 14, dtype: object\n", + "571542811_02 571542107_01\n", + "move_no 16\n", + "inc_dire 남동\n", + "out_dire 북서\n", + "Name: 15, dtype: object\n", + "-571542809_01 571542811_01\n", + "move_no 1\n", + "inc_dire 동\n", + "out_dire 남\n", + "Name: 0, dtype: object\n", + "-571500475_01 571540304_01\n", + "move_no 2\n", + "inc_dire 서\n", + "out_dire 동\n", + "Name: 1, dtype: object\n", + "571540303_02.21 571500475_01\n", + "move_no 3\n", + "inc_dire 남\n", + "out_dire 서\n", + "Name: 2, dtype: object\n", + "571540304_02 571540303_01\n", + "move_no 4\n", + "inc_dire 북\n", + "out_dire 남\n", + "Name: 3, dtype: object\n", + "571556450_02 571540304_01\n", + "move_no 5\n", + "inc_dire 서\n", + "out_dire 북\n", + "Name: 4, dtype: object\n", + "571540303_02.21 571556450_01\n", + "move_no 6\n", + "inc_dire 동\n", + "out_dire 서\n", + "Name: 5, dtype: object\n", + "-571500475_01 571540303_01\n", + "move_no 7\n", + "inc_dire 북\n", + "out_dire 동\n", + "Name: 6, dtype: object\n", + "571556450_02 571500475_01\n", + "move_no 8\n", + "inc_dire 남\n", + "out_dire 북\n", + "Name: 7, dtype: object\n", + "571540304_02 571556450_01\n", + "move_no 9\n", + "inc_dire 북동\n", + "out_dire 남동\n", + "Name: 8, dtype: object\n", + "571556450_02 571500475_01\n", + "move_no 10\n", + "inc_dire 남서\n", + "out_dire 북동\n", + "Name: 9, dtype: object\n", + "571540304_02 571556450_01\n", + "move_no 11\n", + "inc_dire 남동\n", + "out_dire 남서\n", + "Name: 10, dtype: object\n", + "-571500475_01 571540304_01\n", + "move_no 12\n", + "inc_dire 북서\n", + "out_dire 남동\n", + "Name: 11, dtype: object\n", + "571540303_02.21 571500475_01\n", + "move_no 13\n", + "inc_dire 남서\n", + "out_dire 북서\n", + "Name: 12, dtype: object\n", + "571540304_02 571540303_01\n", + "move_no 14\n", + "inc_dire 북동\n", + "out_dire 남서\n", + "Name: 13, dtype: object\n", + "571556450_02 571540304_01\n", + "move_no 15\n", + "inc_dire 북서\n", + "out_dire 북동\n", + "Name: 14, dtype: object\n", + "571540303_02.21 571556450_01\n", + "move_no 16\n", + "inc_dire 남동\n", + "out_dire 북서\n", + "Name: 15, dtype: object\n", + "-571500475_01 571540303_01\n", + "move_no 1\n", + "inc_dire 동\n", + "out_dire 남\n", + "Name: 0, dtype: object\n", + "-571542115_01 571500585_01\n", + "move_no 2\n", + "inc_dire 서\n", + "out_dire 동\n", + "Name: 1, dtype: object\n", + "571500535_02.18 571542115_01\n", + "move_no 3\n", + "inc_dire 남\n", + "out_dire 서\n", + "Name: 2, dtype: object\n", + "571500585_02 571500535_01\n", + "move_no 4\n", + "inc_dire 북\n", + "out_dire 남\n", + "Name: 3, dtype: object\n", + "571511538_02.121 571500585_01\n", + "move_no 5\n", + "inc_dire 서\n", + "out_dire 북\n", + "Name: 4, dtype: object\n", + "571500535_02.18 571511538_01\n", + "move_no 6\n", + "inc_dire 동\n", + "out_dire 서\n", + "Name: 5, dtype: object\n", + "-571542115_01 571500535_01\n", + "move_no 7\n", + "inc_dire 북\n", + "out_dire 동\n", + "Name: 6, dtype: object\n", + "571511538_02.121 571542115_01\n", + "move_no 8\n", + "inc_dire 남\n", + "out_dire 북\n", + "Name: 7, dtype: object\n", + "571500585_02 571511538_01\n", + "move_no 9\n", + "inc_dire 북동\n", + "out_dire 남동\n", + "Name: 8, dtype: object\n", + "571511538_02.121 571542115_01\n", + "move_no 10\n", + "inc_dire 남서\n", + "out_dire 북동\n", + "Name: 9, dtype: object\n", + "571500585_02 571511538_01\n", + "move_no 11\n", + "inc_dire 남동\n", + "out_dire 남서\n", + "Name: 10, dtype: object\n", + "-571542115_01 571500585_01\n", + "move_no 12\n", + "inc_dire 북서\n", + "out_dire 남동\n", + "Name: 11, dtype: object\n", + "571500535_02.18 571542115_01\n", + "move_no 13\n", + "inc_dire 남서\n", + "out_dire 북서\n", + "Name: 12, dtype: object\n", + "571500585_02 571500535_01\n", + "move_no 14\n", + "inc_dire 북동\n", + "out_dire 남서\n", + "Name: 13, dtype: object\n", + "571511538_02.121 571500585_01\n", + "move_no 15\n", + "inc_dire 북서\n", + "out_dire 북동\n", + "Name: 14, dtype: object\n", + "571500535_02.18 571511538_01\n", + "move_no 16\n", + "inc_dire 남동\n", + "out_dire 북서\n", + "Name: 15, dtype: object\n", + "-571542115_01 571500535_01\n", + "move_no 1\n", + "inc_dire 동\n", + "out_dire 남\n", + "Name: 0, dtype: object\n", + "571542071_02 571511538_02\n", + "move_no 2\n", + "inc_dire 서\n", + "out_dire 동\n", + "Name: 1, dtype: object\n", + "-571511538_02 571542071_01\n", + "move_no 3\n", + "inc_dire 남\n", + "out_dire 서\n", + "Name: 2, dtype: object\n", + "-571511538_02 571511538_02\n", + "move_no 4\n", + "inc_dire 북\n", + "out_dire 남\n", + "Name: 3, dtype: object\n", + "571542073_01 571511538_02\n", + "move_no 5\n", + "inc_dire 서\n", + "out_dire 북\n", + "Name: 4, dtype: object\n", + "-571511538_02 571542073_02\n", + "move_no 6\n", + "inc_dire 동\n", + "out_dire 서\n", + "Name: 5, dtype: object\n", + "571542071_02 571511538_02\n", + "move_no 7\n", + "inc_dire 북\n", + "out_dire 동\n", + "Name: 6, dtype: object\n", + "571542073_01 571542071_01\n", + "move_no 8\n", + "inc_dire 남\n", + "out_dire 북\n", + "Name: 7, dtype: object\n", + "-571511538_02 571542073_02\n", + "move_no 9\n", + "inc_dire 북동\n", + "out_dire 남동\n", + "Name: 8, dtype: object\n", + "571542073_01 571542071_01\n", + "move_no 10\n", + "inc_dire 남서\n", + "out_dire 북동\n", + "Name: 9, dtype: object\n", + "-571511538_02 571542073_02\n", + "move_no 11\n", + "inc_dire 남동\n", + "out_dire 남서\n", + "Name: 10, dtype: object\n", + "571542071_02 571511538_02\n", + "move_no 12\n", + "inc_dire 북서\n", + "out_dire 남동\n", + "Name: 11, dtype: object\n", + "571542073_01 571542071_01\n", + "move_no 13\n", + "inc_dire 남서\n", + "out_dire 북서\n", + "Name: 12, dtype: object\n", + "-571511538_02 571542073_02\n", + "move_no 14\n", + "inc_dire 북동\n", + "out_dire 남서\n", + "Name: 13, dtype: object\n", + "571542073_01 571511538_02\n", + "move_no 15\n", + "inc_dire 북서\n", + "out_dire 북동\n", + "Name: 14, dtype: object\n", + "571542073_01 571542073_02\n", + "move_no 16\n", + "inc_dire 남동\n", + "out_dire 북서\n", + "Name: 15, dtype: object\n", + "571542071_02 571542073_02\n", + "move_no 1\n", + "inc_dire 동\n", + "out_dire 남\n", + "Name: 0, dtype: object\n", + "571500617_02 571500569_01\n", + "move_no 2\n", + "inc_dire 서\n", + "out_dire 동\n", + "Name: 1, dtype: object\n", + "571500618_02 571500617_01\n", + "move_no 3\n", + "inc_dire 남\n", + "out_dire 서\n", + "Name: 2, dtype: object\n", + "-571500569_01 571500618_01\n", + "move_no 4\n", + "inc_dire 북\n", + "out_dire 남\n", + "Name: 3, dtype: object\n", + "571500583_01 571500569_01\n", + "move_no 5\n", + "inc_dire 서\n", + "out_dire 북\n", + "Name: 4, dtype: object\n", + "571500618_02 571500583_02\n", + "move_no 6\n", + "inc_dire 동\n", + "out_dire 서\n", + "Name: 5, dtype: object\n", + "571500617_02 571500618_01\n", + "move_no 7\n", + "inc_dire 북\n", + "out_dire 동\n", + "Name: 6, dtype: object\n", + "571500583_01 571500617_01\n", + "move_no 8\n", + "inc_dire 남\n", + "out_dire 북\n", + "Name: 7, dtype: object\n", + "-571500569_01 571500583_02\n", + "move_no 9\n", + "inc_dire 북동\n", + "out_dire 남동\n", + "Name: 8, dtype: object\n", + "571500583_01 571500617_01\n", + "move_no 10\n", + "inc_dire 남서\n", + "out_dire 북동\n", + "Name: 9, dtype: object\n", + "-571500569_01 571500583_02\n", + "move_no 11\n", + "inc_dire 남동\n", + "out_dire 남서\n", + "Name: 10, dtype: object\n", + "571500617_02 571500569_01\n", + "move_no 12\n", + "inc_dire 북서\n", + "out_dire 남동\n", + "Name: 11, dtype: object\n", + "571500618_02 571500617_01\n", + "move_no 13\n", + "inc_dire 남서\n", + "out_dire 북서\n", + "Name: 12, dtype: object\n", + "-571500569_01 571500618_01\n", + "move_no 14\n", + "inc_dire 북동\n", + "out_dire 남서\n", + "Name: 13, dtype: object\n", + "571500583_01 571500569_01\n", + "move_no 15\n", + "inc_dire 북서\n", + "out_dire 북동\n", + "Name: 14, dtype: object\n", + "571500618_02 571500583_02\n", + "move_no 16\n", + "inc_dire 남동\n", + "out_dire 북서\n", + "Name: 15, dtype: object\n", + "571500617_02 571500618_01\n", + "move_no 1\n", + "inc_dire 동\n", + "out_dire 남\n", + "Name: 0, dtype: object\n", + "571510152_02 571510152_01.65\n", + "move_no 2\n", + "inc_dire 서\n", + "out_dire 동\n", + "Name: 1, dtype: object\n", + "571510152_01 571510152_01.65\n", + "move_no 3\n", + "inc_dire 남\n", + "out_dire 서\n", + "Name: 2, dtype: object\n", + "571510152_02 -571510152_01\n", + "move_no 4\n", + "inc_dire 북\n", + "out_dire 남\n", + "Name: 3, dtype: object\n", + "571510152_01 571510152_01.65\n", + "move_no 5\n", + "inc_dire 서\n", + "out_dire 북\n", + "Name: 4, dtype: object\n", + "571510152_01 -571510152_01\n", + "move_no 6\n", + "inc_dire 동\n", + "out_dire 서\n", + "Name: 5, dtype: object\n", + "571510152_02 -571510152_01\n", + "move_no 7\n", + "inc_dire 북\n", + "out_dire 동\n", + "Name: 6, dtype: object\n", + "571510152_01 571510152_01.65\n", + "move_no 8\n", + "inc_dire 남\n", + "out_dire 북\n", + "Name: 7, dtype: object\n", + "571510152_02 -571510152_01\n", + "move_no 9\n", + "inc_dire 북동\n", + "out_dire 남동\n", + "Name: 8, dtype: object\n", + "571510152_02 571510152_01.65\n", + "move_no 10\n", + "inc_dire 남서\n", + "out_dire 북동\n", + "Name: 9, dtype: object\n", + "571510152_01 571510152_01.65\n", + "move_no 11\n", + "inc_dire 남동\n", + "out_dire 남서\n", + "Name: 10, dtype: object\n", + "571510152_02 -571510152_01\n", + "move_no 12\n", + "inc_dire 북서\n", + "out_dire 남동\n", + "Name: 11, dtype: object\n", + "571510152_01 571510152_01.65\n", + "move_no 13\n", + "inc_dire 남서\n", + "out_dire 북서\n", + "Name: 12, dtype: object\n", + "571510152_01 -571510152_01\n", + "move_no 14\n", + "inc_dire 북동\n", + "out_dire 남서\n", + "Name: 13, dtype: object\n", + "571510152_02 -571510152_01\n", + "move_no 15\n", + "inc_dire 북서\n", + "out_dire 북동\n", + "Name: 14, dtype: object\n", + "571510152_01 571510152_01.65\n", + "move_no 16\n", + "inc_dire 남동\n", + "out_dire 북서\n", + "Name: 15, dtype: object\n", + "571510152_02 -571510152_01\n" + ] + } + ], + "source": [ + "for parent_id in self.parent_ids:\n", + " for move_no in range(1,17):\n", + " row = self.nema[self.nema.move_no==move_no].iloc[0]\n", + " inc_dire = row.inc_dire\n", + " out_dire = row.out_dire\n", + " inc_vec_true = dire2vec[inc_dire]\n", + " out_vec_true = dire2vec[out_dire]\n", + "\n", + " node = self.net.getNode(parent_id)\n", + " # 교차로의 모든 (from / to) edges\n", + " inc_edges = [edge for edge in node.getIncoming() if edge.getFunction() == ''] # incoming edges\n", + " out_edges = [edge for edge in node.getOutgoing() if edge.getFunction() == ''] # outgoing edges\n", + " # 교차로의 모든 (from / to) unit vector\n", + " inc_vecs = []\n", + " for inc_edge in inc_edges:\n", + " start = inc_edge.getShape()[-1]\n", + " end = inc_edge.getShape()[-2]\n", + " inc_vec = np.array(end) - np.array(start)\n", + " inc_vec = inc_vec / (inc_vec ** 2).sum() ** 0.5\n", + " inc_vecs.append(inc_vec)\n", + " out_vecs = []\n", + " for out_edge in out_edges:\n", + " start = out_edge.getShape()[0]\n", + " end = out_edge.getShape()[1]\n", + " out_vec = np.array(end) - np.array(start)\n", + " out_vec = out_vec / (out_vec ** 2).sum() ** 0.5\n", + " out_vecs.append(out_vec)\n", + " # 매칭 엣지 반환\n", + " inc_index = np.array([np.dot(inc_vec, inc_vec_true) for inc_vec in inc_vecs]).argmax()\n", + " out_index = np.array([np.dot(out_vec, out_vec_true) for out_vec in out_vecs]).argmax()\n", + " inc_edge_id = inc_edges[inc_index].getID()\n", + " out_edge_id = out_edges[out_index].getID()\n", + " print(row)\n", + " print(inc_edge_id, out_edge_id)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# (8) 가능한 모든 이동류에 대하여 진입id, 진출id 배정 : matching\n", + "self.matching = []\n", + "for parent_id in self.parent_ids:\n", + " inter_no = self.node2inter[parent_id]\n", + " # 좌회전과 직진(1 ~ 16)\n", + " for move_no in range(1,17):\n", + " inc_dire = m2inc_dire[move_no]\n", + " out_dire = m2out_dire[move_no]\n", + " if move_no in p2move[parent_id]:\n", + " inc_edge_id = inc2id[(parent_id, inc_dire)]\n", + " out_edge_id = out2id[(parent_id, out_dire)]\n", + " else:\n", + " inc_edge_id = p2move2inc_edge_id[parent_id][move_no]\n", + " out_edge_id = p2move2out_edge_id[parent_id][move_no]\n", + " if (inc_edge_id, out_edge_id) in self.n2io2turn[parent_id]:\n", + " turn_type = self.n2io2turn[parent_id][inc_edge_id, out_edge_id]\n", + " else:\n", + " turn_type = 'left' if move_no % 2 else 'straight'\n", + " new_row = pd.DataFrame({'inter_no':[inter_no], 'node_id':[parent_id], 'move_no':[move_no],\n", + " 'inc_dire':[inc_dire], 'out_dire':[out_dire],\n", + " 'inc_edge_id':[inc_edge_id], 'out_edge_id':[out_edge_id],\n", + " 'turn_type': turn_type})\n", + " self.matching.append(new_row)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
inter_nonode_idmove_noinc_edge_idout_edge_idstateturn_type
0175i01571545870_02571542797_02grrrgrrGgrrrrrgrrleft
1175i02571510153_02571545870_01grrrgrrrgrrrrrgGrstraight
2175i03-571542797_02571510153_01grrrgrrrgrrrrGgrrleft
3175i04-571500487_01571542797_02gGGrgrrrgrrrrrgrrstraight
4175i05571510153_02571500487_01grrrgrrrgrrrrrgrGleft
5175i06571545870_02571510153_01grrrgGGrgrrrrrgrrstraight
6175i07-571500487_01571545870_01grrGgrrrgrrrrrgrrleft
7175i08-571542797_02571500487_01grrrgrrrgGGGGrgrrstraight
8175i09-571500487_01571545870_01grrGgrrrgrrrrrgrrleft
9175i010571510153_02571500487_01grrrgrrrgrrrrrgrGleft
10175i011571545870_02571510153_01grrrgGGrgrrrrrgrrstraight
11175i012-571500487_01571545870_01grrGgrrrgrrrrrgrrleft
12175i013571510153_02571500487_01grrrgrrrgrrrrrgrGleft
13175i014-571500487_01571510153_01Grrrgrrrgrrrrrgrrstraight
14175i015-571500487_01571500487_01grrrgrrrgrrrrrgrrleft
15175i016571545870_02571500487_01grrrGrrrgrrrrrgrrstraight
\n", + "
" + ], + "text/plain": [ + " inter_no node_id move_no inc_edge_id out_edge_id state \\\n", + "0 175 i0 1 571545870_02 571542797_02 grrrgrrGgrrrrrgrr \n", + "1 175 i0 2 571510153_02 571545870_01 grrrgrrrgrrrrrgGr \n", + "2 175 i0 3 -571542797_02 571510153_01 grrrgrrrgrrrrGgrr \n", + "3 175 i0 4 -571500487_01 571542797_02 gGGrgrrrgrrrrrgrr \n", + "4 175 i0 5 571510153_02 571500487_01 grrrgrrrgrrrrrgrG \n", + "5 175 i0 6 571545870_02 571510153_01 grrrgGGrgrrrrrgrr \n", + "6 175 i0 7 -571500487_01 571545870_01 grrGgrrrgrrrrrgrr \n", + "7 175 i0 8 -571542797_02 571500487_01 grrrgrrrgGGGGrgrr \n", + "8 175 i0 9 -571500487_01 571545870_01 grrGgrrrgrrrrrgrr \n", + "9 175 i0 10 571510153_02 571500487_01 grrrgrrrgrrrrrgrG \n", + "10 175 i0 11 571545870_02 571510153_01 grrrgGGrgrrrrrgrr \n", + "11 175 i0 12 -571500487_01 571545870_01 grrGgrrrgrrrrrgrr \n", + "12 175 i0 13 571510153_02 571500487_01 grrrgrrrgrrrrrgrG \n", + "13 175 i0 14 -571500487_01 571510153_01 Grrrgrrrgrrrrrgrr \n", + "14 175 i0 15 -571500487_01 571500487_01 grrrgrrrgrrrrrgrr \n", + "15 175 i0 16 571545870_02 571500487_01 grrrGrrrgrrrrrgrr \n", + "\n", + " turn_type \n", + "0 left \n", + "1 straight \n", + "2 left \n", + "3 straight \n", + "4 left \n", + "5 straight \n", + "6 left \n", + "7 straight \n", + "8 left \n", + "9 left \n", + "10 straight \n", + "11 left \n", + "12 left \n", + "13 straight \n", + "14 left \n", + "15 straight " + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "self.matching[self.matching.inter_no==175]" ] }, { @@ -220,89 +1990,6 @@ "move = pd.read_csv(os.path.join(self.path_tables, 'move', f'move_{fsec}.csv'), index_col=0)\n", "move" ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "3. 이동류정보 테이블을 변환합니다.\n" - ] - } - ], - "source": [ - "self.process_movement()" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "1. 데이터를 준비합니다.\n", - "1-1. 네트워크가 로드되었습니다.\n", - "1-2. 테이블들이 로드되었습니다.\n", - "1-5. 필요한 보조 객체들이 모두 준비되었습니다.\n", - "2. 신호이력 테이블을 변환합니다.\n", - "3. 이동류정보 테이블을 변환합니다.\n", - "4. 통합 테이블을 생성합니다.\n", - "5. 신호를 생성합니다.\n", - "6. 이슈사항을 저장합니다.\n", - "(1) 0:00:00.054716\n", - "(1-1) 0:00:00.014528\n", - "(1-2) 0:00:00.020856\n", - "(1-3) 0:00:00\n", - "(1-4) 0:00:00\n", - "(1-5) 0:00:00.019332\n", - "(2) 0:00:00.411311\n", - "(2-1) 0:00:00.068086\n", - "(2-2) 0:00:00.321290\n", - "(2-3) 0:00:00.021935\n", - "(3) 0:00:00.313751\n", - "(3-1) 0:00:00.302413\n", - "(3-2) 0:00:00.011338\n", - "(4) 0:00:00.165357\n", - "(4-1) 0:00:00\n", - "(4-2) 0:00:00.015405\n", - "(4-2) 0:00:00.149952\n", - "(5) 0:00:00.633411\n", - "(5-1) 0:00:00.016632\n", - "(5-2) 0:00:00.603078\n", - "(5-3) 0:00:00.013701\n", - "(6) 0:00:00\n", - "total time : 0:00:01.578546\n" - ] - } - ], - "source": [ - "self.main()" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [], - "source": [ - "self.make_movement()" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "self.update_movement()" - ] } ], "metadata": {