{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"def calculate_angle_code(lat1, lng1, lat2, lng2, lat3, lng3):\n",
" # 모든 좌표가 동일한 경우 NaN 반환\n",
" if ((lat1 == lat2) and (lng1 == lng2)) or ((lat2 == lat3) and (lng2 == lng3)):\n",
" return np.nan\n",
" # 위도와 경도를 라디안으로 변환\n",
" lat1, lng1, lat2, lng2, lat3, lng3 = map(np.radians, [lat1, lng1, lat2, lng2, lat3, lng3])\n",
" # 진입방위각 계산\n",
" dlng_entry = lng1 - lng2\n",
" x_entry = np.sin(dlng_entry) * np.cos(lat1)\n",
" y_entry = np.cos(lat2) * np.sin(lat1) - (np.sin(lat2) * np.cos(lat1) * np.cos(dlng_entry))\n",
" entry_bearing = np.arctan2(x_entry, y_entry)\n",
" entry_bearing = np.degrees(entry_bearing)\n",
" entry_bearing = round((entry_bearing + 360) % 360)\n",
" # 진출방위각 계산\n",
" dlng_exit = lng3 - lng2\n",
" x_exit = np.sin(dlng_exit) * np.cos(lat3)\n",
" y_exit = np.cos(lat2) * np.sin(lat3) - (np.sin(lat2) * np.cos(lat3) * np.cos(dlng_exit))\n",
" exit_bearing = np.arctan2(x_exit, y_exit)\n",
" exit_bearing = np.degrees(exit_bearing)\n",
" exit_bearing = round((exit_bearing + 360) % 360)\n",
" # angle_code 생성\n",
" angle_code = f\"{entry_bearing:03}{exit_bearing:03}\"\n",
" return angle_code\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'331047'"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"calculate_angle_code(37.5665, 126.9780, 37.5515, 126.9885, 37.5666, 127.0089)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" inter_no | \n",
" phase_no | \n",
" ring_type | \n",
" flow_lat_1 | \n",
" flow_lon_1 | \n",
" flow_lat_2 | \n",
" flow_lon_2 | \n",
" flow_lat_3 | \n",
" flow_lon_3 | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 175 | \n",
" 1 | \n",
" A | \n",
" 37.36825 | \n",
" 127.11491 | \n",
" 37.36857 | \n",
" 127.11490 | \n",
" 37.36869 | \n",
" 127.11491 | \n",
"
\n",
" \n",
" 1 | \n",
" 175 | \n",
" 1 | \n",
" B | \n",
" 37.36890 | \n",
" 127.11467 | \n",
" 37.36857 | \n",
" 127.11465 | \n",
" 37.36845 | \n",
" 127.11466 | \n",
"
\n",
" \n",
" 2 | \n",
" 175 | \n",
" 2 | \n",
" A | \n",
" 37.36889 | \n",
" 127.11491 | \n",
" 37.36857 | \n",
" 127.11490 | \n",
" 37.36856 | \n",
" 127.11505 | \n",
"
\n",
" \n",
" 3 | \n",
" 175 | \n",
" 2 | \n",
" B | \n",
" 37.36824 | \n",
" 127.11466 | \n",
" 37.36857 | \n",
" 127.11465 | \n",
" 37.36857 | \n",
" 127.11451 | \n",
"
\n",
" \n",
" 4 | \n",
" 175 | \n",
" 3 | \n",
" A | \n",
" 37.36867 | \n",
" 127.11519 | \n",
" 37.36867 | \n",
" 127.11478 | \n",
" 37.36867 | \n",
" 127.11463 | \n",
"
\n",
" \n",
" 5 | \n",
" 175 | \n",
" 3 | \n",
" B | \n",
" 37.36847 | \n",
" 127.11518 | \n",
" 37.36847 | \n",
" 127.11478 | \n",
" 37.36835 | \n",
" 127.11478 | \n",
"
\n",
" \n",
" 6 | \n",
" 175 | \n",
" 4 | \n",
" A | \n",
" 37.36866 | \n",
" 127.11437 | \n",
" 37.36867 | \n",
" 127.11478 | \n",
" 37.36878 | \n",
" 127.11478 | \n",
"
\n",
" \n",
" 7 | \n",
" 175 | \n",
" 4 | \n",
" B | \n",
" 37.36847 | \n",
" 127.11437 | \n",
" 37.36847 | \n",
" 127.11478 | \n",
" 37.36847 | \n",
" 127.11493 | \n",
"
\n",
" \n",
" 8 | \n",
" 176 | \n",
" 1 | \n",
" A | \n",
" 37.36691 | \n",
" 127.11493 | \n",
" 37.36724 | \n",
" 127.11493 | \n",
" 37.36735 | \n",
" 127.11493 | \n",
"
\n",
" \n",
" 9 | \n",
" 176 | \n",
" 1 | \n",
" B | \n",
" 37.36756 | \n",
" 127.11467 | \n",
" 37.36723 | \n",
" 127.11468 | \n",
" 37.36712 | \n",
" 127.11468 | \n",
"
\n",
" \n",
" 10 | \n",
" 176 | \n",
" 2 | \n",
" A | \n",
" 37.36691 | \n",
" 127.11493 | \n",
" 37.36724 | \n",
" 127.11493 | \n",
" 37.36735 | \n",
" 127.11493 | \n",
"
\n",
" \n",
" 11 | \n",
" 176 | \n",
" 2 | \n",
" B | \n",
" 37.36691 | \n",
" 127.11468 | \n",
" 37.36724 | \n",
" 127.11468 | \n",
" 37.36724 | \n",
" 127.11453 | \n",
"
\n",
" \n",
" 12 | \n",
" 176 | \n",
" 3 | \n",
" A | \n",
" 37.36734 | \n",
" 127.11440 | \n",
" 37.36734 | \n",
" 127.11481 | \n",
" 37.36745 | \n",
" 127.11480 | \n",
"
\n",
" \n",
" 13 | \n",
" 177 | \n",
" 1 | \n",
" A | \n",
" 37.36587 | \n",
" 127.11492 | \n",
" 37.36619 | \n",
" 127.11492 | \n",
" 37.36631 | \n",
" 127.11492 | \n",
"
\n",
" \n",
" 14 | \n",
" 177 | \n",
" 1 | \n",
" B | \n",
" 37.36652 | \n",
" 127.11468 | \n",
" 37.36619 | \n",
" 127.11467 | \n",
" 37.36608 | \n",
" 127.11468 | \n",
"
\n",
" \n",
" 15 | \n",
" 177 | \n",
" 2 | \n",
" A | \n",
" 37.36652 | \n",
" 127.11492 | \n",
" 37.36619 | \n",
" 127.11492 | \n",
" 37.36619 | \n",
" 127.11507 | \n",
"
\n",
" \n",
" 16 | \n",
" 177 | \n",
" 2 | \n",
" B | \n",
" 37.36587 | \n",
" 127.11468 | \n",
" 37.36619 | \n",
" 127.11467 | \n",
" 37.36619 | \n",
" 127.11453 | \n",
"
\n",
" \n",
" 17 | \n",
" 177 | \n",
" 3 | \n",
" A | \n",
" 19.69448 | \n",
" 117.99260 | \n",
" 19.69448 | \n",
" 117.99260 | \n",
" 19.69448 | \n",
" 117.99260 | \n",
"
\n",
" \n",
" 18 | \n",
" 177 | \n",
" 4 | \n",
" A | \n",
" 37.36628 | \n",
" 127.11439 | \n",
" 37.36629 | \n",
" 127.11480 | \n",
" 37.36641 | \n",
" 127.11480 | \n",
"
\n",
" \n",
" 19 | \n",
" 177 | \n",
" 4 | \n",
" B | \n",
" 37.36609 | \n",
" 127.11520 | \n",
" 37.36609 | \n",
" 127.11480 | \n",
" 37.36598 | \n",
" 127.11480 | \n",
"
\n",
" \n",
" 20 | \n",
" 178 | \n",
" 1 | \n",
" A | \n",
" 37.36313 | \n",
" 127.11493 | \n",
" 37.36346 | \n",
" 127.11493 | \n",
" 37.36358 | \n",
" 127.11493 | \n",
"
\n",
" \n",
" 21 | \n",
" 178 | \n",
" 1 | \n",
" B | \n",
" 37.36378 | \n",
" 127.11468 | \n",
" 37.36346 | \n",
" 127.11468 | \n",
" 37.36334 | \n",
" 127.11468 | \n",
"
\n",
" \n",
" 22 | \n",
" 178 | \n",
" 2 | \n",
" A | \n",
" 37.36378 | \n",
" 127.11493 | \n",
" 37.36346 | \n",
" 127.11493 | \n",
" 37.36346 | \n",
" 127.11507 | \n",
"
\n",
" \n",
" 23 | \n",
" 178 | \n",
" 2 | \n",
" B | \n",
" 37.36313 | \n",
" 127.11468 | \n",
" 37.36346 | \n",
" 127.11468 | \n",
" 37.36346 | \n",
" 127.11453 | \n",
"
\n",
" \n",
" 24 | \n",
" 178 | \n",
" 3 | \n",
" A | \n",
" 37.36356 | \n",
" 127.11440 | \n",
" 37.36356 | \n",
" 127.11480 | \n",
" 37.36367 | \n",
" 127.11480 | \n",
"
\n",
" \n",
" 25 | \n",
" 178 | \n",
" 3 | \n",
" B | \n",
" 37.36336 | \n",
" 127.11439 | \n",
" 37.36336 | \n",
" 127.11480 | \n",
" 37.36336 | \n",
" 127.11495 | \n",
"
\n",
" \n",
" 26 | \n",
" 178 | \n",
" 4 | \n",
" A | \n",
" 37.36356 | \n",
" 127.11521 | \n",
" 37.36356 | \n",
" 127.11480 | \n",
" 37.36356 | \n",
" 127.11465 | \n",
"
\n",
" \n",
" 27 | \n",
" 178 | \n",
" 4 | \n",
" B | \n",
" 37.36336 | \n",
" 127.11521 | \n",
" 37.36336 | \n",
" 127.11480 | \n",
" 37.36324 | \n",
" 127.11480 | \n",
"
\n",
" \n",
" 28 | \n",
" 201 | \n",
" 1 | \n",
" A | \n",
" 37.36822 | \n",
" 127.10996 | \n",
" 37.36854 | \n",
" 127.10996 | \n",
" 37.36866 | \n",
" 127.10996 | \n",
"
\n",
" \n",
" 29 | \n",
" 201 | \n",
" 1 | \n",
" B | \n",
" 37.36822 | \n",
" 127.10971 | \n",
" 37.36854 | \n",
" 127.10971 | \n",
" 37.36854 | \n",
" 127.10957 | \n",
"
\n",
" \n",
" 30 | \n",
" 201 | \n",
" 2 | \n",
" A | \n",
" 37.36864 | \n",
" 127.10943 | \n",
" 37.36864 | \n",
" 127.10984 | \n",
" 37.36876 | \n",
" 127.10984 | \n",
"
\n",
" \n",
" 31 | \n",
" 201 | \n",
" 2 | \n",
" B | \n",
" 37.36844 | \n",
" 127.10943 | \n",
" 37.36844 | \n",
" 127.10984 | \n",
" 37.36844 | \n",
" 127.10999 | \n",
"
\n",
" \n",
" 32 | \n",
" 201 | \n",
" 3 | \n",
" A | \n",
" 37.36864 | \n",
" 127.11025 | \n",
" 37.36864 | \n",
" 127.10984 | \n",
" 37.36864 | \n",
" 127.10969 | \n",
"
\n",
" \n",
" 33 | \n",
" 201 | \n",
" 3 | \n",
" B | \n",
" 37.36844 | \n",
" 127.10943 | \n",
" 37.36844 | \n",
" 127.10984 | \n",
" 37.36844 | \n",
" 127.10999 | \n",
"
\n",
" \n",
" 34 | \n",
" 201 | \n",
" 4 | \n",
" A | \n",
" 37.36864 | \n",
" 127.11025 | \n",
" 37.36864 | \n",
" 127.10984 | \n",
" 37.36864 | \n",
" 127.10969 | \n",
"
\n",
" \n",
" 35 | \n",
" 201 | \n",
" 4 | \n",
" B | \n",
" 37.36844 | \n",
" 127.11025 | \n",
" 37.36844 | \n",
" 127.10984 | \n",
" 37.36832 | \n",
" 127.10984 | \n",
"
\n",
" \n",
" 36 | \n",
" 201 | \n",
" 5 | \n",
" A | \n",
" 37.36887 | \n",
" 127.10996 | \n",
" 37.36854 | \n",
" 127.10996 | \n",
" 37.36854 | \n",
" 127.11011 | \n",
"
\n",
" \n",
" 37 | \n",
" 201 | \n",
" 5 | \n",
" B | \n",
" 37.36886 | \n",
" 127.10971 | \n",
" 37.36854 | \n",
" 127.10971 | \n",
" 37.36842 | \n",
" 127.10971 | \n",
"
\n",
" \n",
" 38 | \n",
" 202 | \n",
" 1 | \n",
" A | \n",
" 37.36865 | \n",
" 127.11282 | \n",
" 37.36865 | \n",
" 127.11241 | \n",
" 37.36865 | \n",
" 127.11227 | \n",
"
\n",
" \n",
" 39 | \n",
" 202 | \n",
" 1 | \n",
" B | \n",
" 37.36845 | \n",
" 127.11201 | \n",
" 37.36845 | \n",
" 127.11241 | \n",
" 37.36845 | \n",
" 127.11256 | \n",
"
\n",
" \n",
" 40 | \n",
" 202 | \n",
" 2 | \n",
" A | \n",
" 19.69448 | \n",
" 117.99260 | \n",
" 19.69448 | \n",
" 117.99260 | \n",
" 19.69448 | \n",
" 117.99260 | \n",
"
\n",
" \n",
" 41 | \n",
" 206 | \n",
" 1 | \n",
" A | \n",
" 37.36451 | \n",
" 127.10994 | \n",
" 37.36483 | \n",
" 127.10994 | \n",
" 37.36495 | \n",
" 127.10994 | \n",
"
\n",
" \n",
" 42 | \n",
" 206 | \n",
" 1 | \n",
" B | \n",
" 37.36516 | \n",
" 127.10969 | \n",
" 37.36484 | \n",
" 127.10969 | \n",
" 37.36472 | \n",
" 127.10969 | \n",
"
\n",
" \n",
" 43 | \n",
" 206 | \n",
" 2 | \n",
" A | \n",
" 19.69448 | \n",
" 117.99260 | \n",
" 19.69448 | \n",
" 117.99260 | \n",
" 19.69448 | \n",
" 117.99260 | \n",
"
\n",
" \n",
" 44 | \n",
" 206 | \n",
" 3 | \n",
" A | \n",
" 37.36451 | \n",
" 127.10994 | \n",
" 37.36483 | \n",
" 127.10994 | \n",
" 37.36495 | \n",
" 127.10994 | \n",
"
\n",
" \n",
" 45 | \n",
" 206 | \n",
" 3 | \n",
" B | \n",
" 37.36516 | \n",
" 127.10969 | \n",
" 37.36484 | \n",
" 127.10969 | \n",
" 37.36472 | \n",
" 127.10969 | \n",
"
\n",
" \n",
" 46 | \n",
" 206 | \n",
" 4 | \n",
" A | \n",
" 19.69448 | \n",
" 117.99260 | \n",
" 19.69448 | \n",
" 117.99260 | \n",
" 19.69448 | \n",
" 117.99260 | \n",
"
\n",
" \n",
" 47 | \n",
" 210 | \n",
" 1 | \n",
" A | \n",
" 37.36357 | \n",
" 127.11023 | \n",
" 37.36357 | \n",
" 127.10982 | \n",
" 37.36357 | \n",
" 127.10968 | \n",
"
\n",
" \n",
" 48 | \n",
" 210 | \n",
" 2 | \n",
" A | \n",
" 37.36356 | \n",
" 127.10941 | \n",
" 37.36357 | \n",
" 127.10982 | \n",
" 37.36369 | \n",
" 127.10982 | \n",
"
\n",
" \n",
" 49 | \n",
" 210 | \n",
" 2 | \n",
" B | \n",
" 37.36337 | \n",
" 127.10942 | \n",
" 37.36337 | \n",
" 127.10982 | \n",
" 37.36337 | \n",
" 127.10997 | \n",
"
\n",
" \n",
" 50 | \n",
" 210 | \n",
" 3 | \n",
" A | \n",
" 37.36380 | \n",
" 127.10994 | \n",
" 37.36347 | \n",
" 127.10995 | \n",
" 37.36347 | \n",
" 127.11009 | \n",
"
\n",
" \n",
" 51 | \n",
" 210 | \n",
" 3 | \n",
" B | \n",
" 37.36380 | \n",
" 127.10970 | \n",
" 37.36347 | \n",
" 127.10970 | \n",
" 37.36336 | \n",
" 127.10970 | \n",
"
\n",
" \n",
" 52 | \n",
" 210 | \n",
" 4 | \n",
" A | \n",
" 37.36315 | \n",
" 127.10995 | \n",
" 37.36347 | \n",
" 127.10995 | \n",
" 37.36359 | \n",
" 127.10995 | \n",
"
\n",
" \n",
" 53 | \n",
" 210 | \n",
" 4 | \n",
" B | \n",
" 37.36315 | \n",
" 127.10970 | \n",
" 37.36347 | \n",
" 127.10970 | \n",
" 37.36347 | \n",
" 127.10955 | \n",
"
\n",
" \n",
" 54 | \n",
" 211 | \n",
" 1 | \n",
" A | \n",
" 37.36356 | \n",
" 127.11277 | \n",
" 37.36356 | \n",
" 127.11237 | \n",
" 37.36356 | \n",
" 127.11222 | \n",
"
\n",
" \n",
" 55 | \n",
" 211 | \n",
" 1 | \n",
" B | \n",
" 37.36336 | \n",
" 127.11196 | \n",
" 37.36336 | \n",
" 127.11237 | \n",
" 37.36336 | \n",
" 127.11252 | \n",
"
\n",
" \n",
" 56 | \n",
" 211 | \n",
" 2 | \n",
" A | \n",
" 19.69448 | \n",
" 117.99260 | \n",
" 19.69448 | \n",
" 117.99260 | \n",
" 19.69448 | \n",
" 117.99260 | \n",
"
\n",
" \n",
" 57 | \n",
" 212 | \n",
" 1 | \n",
" A | \n",
" 37.36357 | \n",
" 127.11347 | \n",
" 37.36357 | \n",
" 127.11306 | \n",
" 37.36357 | \n",
" 127.11291 | \n",
"
\n",
" \n",
" 58 | \n",
" 212 | \n",
" 1 | \n",
" B | \n",
" 37.36336 | \n",
" 127.11266 | \n",
" 37.36337 | \n",
" 127.11306 | \n",
" 37.36337 | \n",
" 127.11321 | \n",
"
\n",
" \n",
" 59 | \n",
" 212 | \n",
" 2 | \n",
" A | \n",
" 19.69448 | \n",
" 117.99260 | \n",
" 19.69448 | \n",
" 117.99260 | \n",
" 19.69448 | \n",
" 117.99260 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" inter_no phase_no ring_type flow_lat_1 flow_lon_1 flow_lat_2 \\\n",
"0 175 1 A 37.36825 127.11491 37.36857 \n",
"1 175 1 B 37.36890 127.11467 37.36857 \n",
"2 175 2 A 37.36889 127.11491 37.36857 \n",
"3 175 2 B 37.36824 127.11466 37.36857 \n",
"4 175 3 A 37.36867 127.11519 37.36867 \n",
"5 175 3 B 37.36847 127.11518 37.36847 \n",
"6 175 4 A 37.36866 127.11437 37.36867 \n",
"7 175 4 B 37.36847 127.11437 37.36847 \n",
"8 176 1 A 37.36691 127.11493 37.36724 \n",
"9 176 1 B 37.36756 127.11467 37.36723 \n",
"10 176 2 A 37.36691 127.11493 37.36724 \n",
"11 176 2 B 37.36691 127.11468 37.36724 \n",
"12 176 3 A 37.36734 127.11440 37.36734 \n",
"13 177 1 A 37.36587 127.11492 37.36619 \n",
"14 177 1 B 37.36652 127.11468 37.36619 \n",
"15 177 2 A 37.36652 127.11492 37.36619 \n",
"16 177 2 B 37.36587 127.11468 37.36619 \n",
"17 177 3 A 19.69448 117.99260 19.69448 \n",
"18 177 4 A 37.36628 127.11439 37.36629 \n",
"19 177 4 B 37.36609 127.11520 37.36609 \n",
"20 178 1 A 37.36313 127.11493 37.36346 \n",
"21 178 1 B 37.36378 127.11468 37.36346 \n",
"22 178 2 A 37.36378 127.11493 37.36346 \n",
"23 178 2 B 37.36313 127.11468 37.36346 \n",
"24 178 3 A 37.36356 127.11440 37.36356 \n",
"25 178 3 B 37.36336 127.11439 37.36336 \n",
"26 178 4 A 37.36356 127.11521 37.36356 \n",
"27 178 4 B 37.36336 127.11521 37.36336 \n",
"28 201 1 A 37.36822 127.10996 37.36854 \n",
"29 201 1 B 37.36822 127.10971 37.36854 \n",
"30 201 2 A 37.36864 127.10943 37.36864 \n",
"31 201 2 B 37.36844 127.10943 37.36844 \n",
"32 201 3 A 37.36864 127.11025 37.36864 \n",
"33 201 3 B 37.36844 127.10943 37.36844 \n",
"34 201 4 A 37.36864 127.11025 37.36864 \n",
"35 201 4 B 37.36844 127.11025 37.36844 \n",
"36 201 5 A 37.36887 127.10996 37.36854 \n",
"37 201 5 B 37.36886 127.10971 37.36854 \n",
"38 202 1 A 37.36865 127.11282 37.36865 \n",
"39 202 1 B 37.36845 127.11201 37.36845 \n",
"40 202 2 A 19.69448 117.99260 19.69448 \n",
"41 206 1 A 37.36451 127.10994 37.36483 \n",
"42 206 1 B 37.36516 127.10969 37.36484 \n",
"43 206 2 A 19.69448 117.99260 19.69448 \n",
"44 206 3 A 37.36451 127.10994 37.36483 \n",
"45 206 3 B 37.36516 127.10969 37.36484 \n",
"46 206 4 A 19.69448 117.99260 19.69448 \n",
"47 210 1 A 37.36357 127.11023 37.36357 \n",
"48 210 2 A 37.36356 127.10941 37.36357 \n",
"49 210 2 B 37.36337 127.10942 37.36337 \n",
"50 210 3 A 37.36380 127.10994 37.36347 \n",
"51 210 3 B 37.36380 127.10970 37.36347 \n",
"52 210 4 A 37.36315 127.10995 37.36347 \n",
"53 210 4 B 37.36315 127.10970 37.36347 \n",
"54 211 1 A 37.36356 127.11277 37.36356 \n",
"55 211 1 B 37.36336 127.11196 37.36336 \n",
"56 211 2 A 19.69448 117.99260 19.69448 \n",
"57 212 1 A 37.36357 127.11347 37.36357 \n",
"58 212 1 B 37.36336 127.11266 37.36337 \n",
"59 212 2 A 19.69448 117.99260 19.69448 \n",
"\n",
" flow_lon_2 flow_lat_3 flow_lon_3 \n",
"0 127.11490 37.36869 127.11491 \n",
"1 127.11465 37.36845 127.11466 \n",
"2 127.11490 37.36856 127.11505 \n",
"3 127.11465 37.36857 127.11451 \n",
"4 127.11478 37.36867 127.11463 \n",
"5 127.11478 37.36835 127.11478 \n",
"6 127.11478 37.36878 127.11478 \n",
"7 127.11478 37.36847 127.11493 \n",
"8 127.11493 37.36735 127.11493 \n",
"9 127.11468 37.36712 127.11468 \n",
"10 127.11493 37.36735 127.11493 \n",
"11 127.11468 37.36724 127.11453 \n",
"12 127.11481 37.36745 127.11480 \n",
"13 127.11492 37.36631 127.11492 \n",
"14 127.11467 37.36608 127.11468 \n",
"15 127.11492 37.36619 127.11507 \n",
"16 127.11467 37.36619 127.11453 \n",
"17 117.99260 19.69448 117.99260 \n",
"18 127.11480 37.36641 127.11480 \n",
"19 127.11480 37.36598 127.11480 \n",
"20 127.11493 37.36358 127.11493 \n",
"21 127.11468 37.36334 127.11468 \n",
"22 127.11493 37.36346 127.11507 \n",
"23 127.11468 37.36346 127.11453 \n",
"24 127.11480 37.36367 127.11480 \n",
"25 127.11480 37.36336 127.11495 \n",
"26 127.11480 37.36356 127.11465 \n",
"27 127.11480 37.36324 127.11480 \n",
"28 127.10996 37.36866 127.10996 \n",
"29 127.10971 37.36854 127.10957 \n",
"30 127.10984 37.36876 127.10984 \n",
"31 127.10984 37.36844 127.10999 \n",
"32 127.10984 37.36864 127.10969 \n",
"33 127.10984 37.36844 127.10999 \n",
"34 127.10984 37.36864 127.10969 \n",
"35 127.10984 37.36832 127.10984 \n",
"36 127.10996 37.36854 127.11011 \n",
"37 127.10971 37.36842 127.10971 \n",
"38 127.11241 37.36865 127.11227 \n",
"39 127.11241 37.36845 127.11256 \n",
"40 117.99260 19.69448 117.99260 \n",
"41 127.10994 37.36495 127.10994 \n",
"42 127.10969 37.36472 127.10969 \n",
"43 117.99260 19.69448 117.99260 \n",
"44 127.10994 37.36495 127.10994 \n",
"45 127.10969 37.36472 127.10969 \n",
"46 117.99260 19.69448 117.99260 \n",
"47 127.10982 37.36357 127.10968 \n",
"48 127.10982 37.36369 127.10982 \n",
"49 127.10982 37.36337 127.10997 \n",
"50 127.10995 37.36347 127.11009 \n",
"51 127.10970 37.36336 127.10970 \n",
"52 127.10995 37.36359 127.10995 \n",
"53 127.10970 37.36347 127.10955 \n",
"54 127.11237 37.36356 127.11222 \n",
"55 127.11237 37.36336 127.11252 \n",
"56 117.99260 19.69448 117.99260 \n",
"57 127.11306 37.36357 127.11291 \n",
"58 127.11306 37.36337 127.11321 \n",
"59 117.99260 19.69448 117.99260 "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tp = pd.read_csv('flow_3points.csv') # three points\n",
"tp"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" inter_no | \n",
" phase_no | \n",
" ring_type | \n",
" angle_code | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 175 | \n",
" 1 | \n",
" A | \n",
" 179004 | \n",
"
\n",
" \n",
" 1 | \n",
" 175 | \n",
" 1 | \n",
" B | \n",
" 003176 | \n",
"
\n",
" \n",
" 2 | \n",
" 175 | \n",
" 2 | \n",
" A | \n",
" 001095 | \n",
"
\n",
" \n",
" 3 | \n",
" 175 | \n",
" 2 | \n",
" B | \n",
" 179270 | \n",
"
\n",
" \n",
" 4 | \n",
" 175 | \n",
" 3 | \n",
" A | \n",
" 090270 | \n",
"
\n",
" \n",
" 5 | \n",
" 175 | \n",
" 3 | \n",
" B | \n",
" 090180 | \n",
"
\n",
" \n",
" 6 | \n",
" 175 | \n",
" 4 | \n",
" A | \n",
" 268000 | \n",
"
\n",
" \n",
" 7 | \n",
" 175 | \n",
" 4 | \n",
" B | \n",
" 270090 | \n",
"
\n",
" \n",
" 8 | \n",
" 176 | \n",
" 1 | \n",
" A | \n",
" 180000 | \n",
"
\n",
" \n",
" 9 | \n",
" 176 | \n",
" 1 | \n",
" B | \n",
" 359180 | \n",
"
\n",
" \n",
" 10 | \n",
" 176 | \n",
" 2 | \n",
" A | \n",
" 180000 | \n",
"
\n",
" \n",
" 11 | \n",
" 176 | \n",
" 2 | \n",
" B | \n",
" 180270 | \n",
"
\n",
" \n",
" 12 | \n",
" 176 | \n",
" 3 | \n",
" A | \n",
" 270356 | \n",
"
\n",
" \n",
" 13 | \n",
" 177 | \n",
" 1 | \n",
" A | \n",
" 180000 | \n",
"
\n",
" \n",
" 14 | \n",
" 177 | \n",
" 1 | \n",
" B | \n",
" 001176 | \n",
"
\n",
" \n",
" 15 | \n",
" 177 | \n",
" 2 | \n",
" A | \n",
" 000090 | \n",
"
\n",
" \n",
" 16 | \n",
" 177 | \n",
" 2 | \n",
" B | \n",
" 179270 | \n",
"
\n",
" \n",
" 17 | \n",
" 177 | \n",
" 3 | \n",
" A | \n",
" NaN | \n",
"
\n",
" \n",
" 18 | \n",
" 177 | \n",
" 4 | \n",
" A | \n",
" 268000 | \n",
"
\n",
" \n",
" 19 | \n",
" 177 | \n",
" 4 | \n",
" B | \n",
" 090180 | \n",
"
\n",
" \n",
" 20 | \n",
" 178 | \n",
" 1 | \n",
" A | \n",
" 180000 | \n",
"
\n",
" \n",
" 21 | \n",
" 178 | \n",
" 1 | \n",
" B | \n",
" 000180 | \n",
"
\n",
" \n",
" 22 | \n",
" 178 | \n",
" 2 | \n",
" A | \n",
" 000090 | \n",
"
\n",
" \n",
" 23 | \n",
" 178 | \n",
" 2 | \n",
" B | \n",
" 180270 | \n",
"
\n",
" \n",
" 24 | \n",
" 178 | \n",
" 3 | \n",
" A | \n",
" 270000 | \n",
"
\n",
" \n",
" 25 | \n",
" 178 | \n",
" 3 | \n",
" B | \n",
" 270090 | \n",
"
\n",
" \n",
" 26 | \n",
" 178 | \n",
" 4 | \n",
" A | \n",
" 090270 | \n",
"
\n",
" \n",
" 27 | \n",
" 178 | \n",
" 4 | \n",
" B | \n",
" 090180 | \n",
"
\n",
" \n",
" 28 | \n",
" 201 | \n",
" 1 | \n",
" A | \n",
" 180000 | \n",
"
\n",
" \n",
" 29 | \n",
" 201 | \n",
" 1 | \n",
" B | \n",
" 180270 | \n",
"
\n",
" \n",
" 30 | \n",
" 201 | \n",
" 2 | \n",
" A | \n",
" 270000 | \n",
"
\n",
" \n",
" 31 | \n",
" 201 | \n",
" 2 | \n",
" B | \n",
" 270090 | \n",
"
\n",
" \n",
" 32 | \n",
" 201 | \n",
" 3 | \n",
" A | \n",
" 090270 | \n",
"
\n",
" \n",
" 33 | \n",
" 201 | \n",
" 3 | \n",
" B | \n",
" 270090 | \n",
"
\n",
" \n",
" 34 | \n",
" 201 | \n",
" 4 | \n",
" A | \n",
" 090270 | \n",
"
\n",
" \n",
" 35 | \n",
" 201 | \n",
" 4 | \n",
" B | \n",
" 090180 | \n",
"
\n",
" \n",
" 36 | \n",
" 201 | \n",
" 5 | \n",
" A | \n",
" 000090 | \n",
"
\n",
" \n",
" 37 | \n",
" 201 | \n",
" 5 | \n",
" B | \n",
" 000180 | \n",
"
\n",
" \n",
" 38 | \n",
" 202 | \n",
" 1 | \n",
" A | \n",
" 090270 | \n",
"
\n",
" \n",
" 39 | \n",
" 202 | \n",
" 1 | \n",
" B | \n",
" 270090 | \n",
"
\n",
" \n",
" 40 | \n",
" 202 | \n",
" 2 | \n",
" A | \n",
" NaN | \n",
"
\n",
" \n",
" 41 | \n",
" 206 | \n",
" 1 | \n",
" A | \n",
" 180000 | \n",
"
\n",
" \n",
" 42 | \n",
" 206 | \n",
" 1 | \n",
" B | \n",
" 000180 | \n",
"
\n",
" \n",
" 43 | \n",
" 206 | \n",
" 2 | \n",
" A | \n",
" NaN | \n",
"
\n",
" \n",
" 44 | \n",
" 206 | \n",
" 3 | \n",
" A | \n",
" 180000 | \n",
"
\n",
" \n",
" 45 | \n",
" 206 | \n",
" 3 | \n",
" B | \n",
" 000180 | \n",
"
\n",
" \n",
" 46 | \n",
" 206 | \n",
" 4 | \n",
" A | \n",
" NaN | \n",
"
\n",
" \n",
" 47 | \n",
" 210 | \n",
" 1 | \n",
" A | \n",
" 090270 | \n",
"
\n",
" \n",
" 48 | \n",
" 210 | \n",
" 2 | \n",
" A | \n",
" 268000 | \n",
"
\n",
" \n",
" 49 | \n",
" 210 | \n",
" 2 | \n",
" B | \n",
" 270090 | \n",
"
\n",
" \n",
" 50 | \n",
" 210 | \n",
" 3 | \n",
" A | \n",
" 359090 | \n",
"
\n",
" \n",
" 51 | \n",
" 210 | \n",
" 3 | \n",
" B | \n",
" 000180 | \n",
"
\n",
" \n",
" 52 | \n",
" 210 | \n",
" 4 | \n",
" A | \n",
" 180000 | \n",
"
\n",
" \n",
" 53 | \n",
" 210 | \n",
" 4 | \n",
" B | \n",
" 180270 | \n",
"
\n",
" \n",
" 54 | \n",
" 211 | \n",
" 1 | \n",
" A | \n",
" 090270 | \n",
"
\n",
" \n",
" 55 | \n",
" 211 | \n",
" 1 | \n",
" B | \n",
" 270090 | \n",
"
\n",
" \n",
" 56 | \n",
" 211 | \n",
" 2 | \n",
" A | \n",
" NaN | \n",
"
\n",
" \n",
" 57 | \n",
" 212 | \n",
" 1 | \n",
" A | \n",
" 090270 | \n",
"
\n",
" \n",
" 58 | \n",
" 212 | \n",
" 1 | \n",
" B | \n",
" 268090 | \n",
"
\n",
" \n",
" 59 | \n",
" 212 | \n",
" 2 | \n",
" A | \n",
" NaN | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" inter_no phase_no ring_type angle_code\n",
"0 175 1 A 179004\n",
"1 175 1 B 003176\n",
"2 175 2 A 001095\n",
"3 175 2 B 179270\n",
"4 175 3 A 090270\n",
"5 175 3 B 090180\n",
"6 175 4 A 268000\n",
"7 175 4 B 270090\n",
"8 176 1 A 180000\n",
"9 176 1 B 359180\n",
"10 176 2 A 180000\n",
"11 176 2 B 180270\n",
"12 176 3 A 270356\n",
"13 177 1 A 180000\n",
"14 177 1 B 001176\n",
"15 177 2 A 000090\n",
"16 177 2 B 179270\n",
"17 177 3 A NaN\n",
"18 177 4 A 268000\n",
"19 177 4 B 090180\n",
"20 178 1 A 180000\n",
"21 178 1 B 000180\n",
"22 178 2 A 000090\n",
"23 178 2 B 180270\n",
"24 178 3 A 270000\n",
"25 178 3 B 270090\n",
"26 178 4 A 090270\n",
"27 178 4 B 090180\n",
"28 201 1 A 180000\n",
"29 201 1 B 180270\n",
"30 201 2 A 270000\n",
"31 201 2 B 270090\n",
"32 201 3 A 090270\n",
"33 201 3 B 270090\n",
"34 201 4 A 090270\n",
"35 201 4 B 090180\n",
"36 201 5 A 000090\n",
"37 201 5 B 000180\n",
"38 202 1 A 090270\n",
"39 202 1 B 270090\n",
"40 202 2 A NaN\n",
"41 206 1 A 180000\n",
"42 206 1 B 000180\n",
"43 206 2 A NaN\n",
"44 206 3 A 180000\n",
"45 206 3 B 000180\n",
"46 206 4 A NaN\n",
"47 210 1 A 090270\n",
"48 210 2 A 268000\n",
"49 210 2 B 270090\n",
"50 210 3 A 359090\n",
"51 210 3 B 000180\n",
"52 210 4 A 180000\n",
"53 210 4 B 180270\n",
"54 211 1 A 090270\n",
"55 211 1 B 270090\n",
"56 211 2 A NaN\n",
"57 212 1 A 090270\n",
"58 212 1 B 268090\n",
"59 212 2 A NaN"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tp['angle_code'] = tp.apply(lambda row: calculate_angle_code(row['flow_lat_1'], row['flow_lon_1'], row['flow_lat_2'], row['flow_lon_2'], row['flow_lat_3'], row['flow_lon_3']), axis=1)\n",
"tp[['inter_no', 'phase_no', 'ring_type', 'angle_code']]\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "sts",
"language": "python",
"name": "sts"
},
"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
}