신호생성 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.
 
 

1515 lines
50 KiB

{
"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": [
"<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>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>flow_lat_1</th>\n",
" <th>flow_lon_1</th>\n",
" <th>flow_lat_2</th>\n",
" <th>flow_lon_2</th>\n",
" <th>flow_lat_3</th>\n",
" <th>flow_lon_3</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>37.36825</td>\n",
" <td>127.11491</td>\n",
" <td>37.36857</td>\n",
" <td>127.11490</td>\n",
" <td>37.36869</td>\n",
" <td>127.11491</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>37.36890</td>\n",
" <td>127.11467</td>\n",
" <td>37.36857</td>\n",
" <td>127.11465</td>\n",
" <td>37.36845</td>\n",
" <td>127.11466</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>175</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>37.36889</td>\n",
" <td>127.11491</td>\n",
" <td>37.36857</td>\n",
" <td>127.11490</td>\n",
" <td>37.36856</td>\n",
" <td>127.11505</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>175</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>37.36824</td>\n",
" <td>127.11466</td>\n",
" <td>37.36857</td>\n",
" <td>127.11465</td>\n",
" <td>37.36857</td>\n",
" <td>127.11451</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>175</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>37.36867</td>\n",
" <td>127.11519</td>\n",
" <td>37.36867</td>\n",
" <td>127.11478</td>\n",
" <td>37.36867</td>\n",
" <td>127.11463</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>175</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>37.36847</td>\n",
" <td>127.11518</td>\n",
" <td>37.36847</td>\n",
" <td>127.11478</td>\n",
" <td>37.36835</td>\n",
" <td>127.11478</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>175</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>37.36866</td>\n",
" <td>127.11437</td>\n",
" <td>37.36867</td>\n",
" <td>127.11478</td>\n",
" <td>37.36878</td>\n",
" <td>127.11478</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>175</td>\n",
" <td>4</td>\n",
" <td>B</td>\n",
" <td>37.36847</td>\n",
" <td>127.11437</td>\n",
" <td>37.36847</td>\n",
" <td>127.11478</td>\n",
" <td>37.36847</td>\n",
" <td>127.11493</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>176</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>37.36691</td>\n",
" <td>127.11493</td>\n",
" <td>37.36724</td>\n",
" <td>127.11493</td>\n",
" <td>37.36735</td>\n",
" <td>127.11493</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>176</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>37.36756</td>\n",
" <td>127.11467</td>\n",
" <td>37.36723</td>\n",
" <td>127.11468</td>\n",
" <td>37.36712</td>\n",
" <td>127.11468</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>176</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>37.36691</td>\n",
" <td>127.11493</td>\n",
" <td>37.36724</td>\n",
" <td>127.11493</td>\n",
" <td>37.36735</td>\n",
" <td>127.11493</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>176</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>37.36691</td>\n",
" <td>127.11468</td>\n",
" <td>37.36724</td>\n",
" <td>127.11468</td>\n",
" <td>37.36724</td>\n",
" <td>127.11453</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>176</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>37.36734</td>\n",
" <td>127.11440</td>\n",
" <td>37.36734</td>\n",
" <td>127.11481</td>\n",
" <td>37.36745</td>\n",
" <td>127.11480</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>177</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>37.36587</td>\n",
" <td>127.11492</td>\n",
" <td>37.36619</td>\n",
" <td>127.11492</td>\n",
" <td>37.36631</td>\n",
" <td>127.11492</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>177</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>37.36652</td>\n",
" <td>127.11468</td>\n",
" <td>37.36619</td>\n",
" <td>127.11467</td>\n",
" <td>37.36608</td>\n",
" <td>127.11468</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>177</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>37.36652</td>\n",
" <td>127.11492</td>\n",
" <td>37.36619</td>\n",
" <td>127.11492</td>\n",
" <td>37.36619</td>\n",
" <td>127.11507</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>177</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>37.36587</td>\n",
" <td>127.11468</td>\n",
" <td>37.36619</td>\n",
" <td>127.11467</td>\n",
" <td>37.36619</td>\n",
" <td>127.11453</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>177</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>19.69448</td>\n",
" <td>117.99260</td>\n",
" <td>19.69448</td>\n",
" <td>117.99260</td>\n",
" <td>19.69448</td>\n",
" <td>117.99260</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>177</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>37.36628</td>\n",
" <td>127.11439</td>\n",
" <td>37.36629</td>\n",
" <td>127.11480</td>\n",
" <td>37.36641</td>\n",
" <td>127.11480</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>177</td>\n",
" <td>4</td>\n",
" <td>B</td>\n",
" <td>37.36609</td>\n",
" <td>127.11520</td>\n",
" <td>37.36609</td>\n",
" <td>127.11480</td>\n",
" <td>37.36598</td>\n",
" <td>127.11480</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>178</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>37.36313</td>\n",
" <td>127.11493</td>\n",
" <td>37.36346</td>\n",
" <td>127.11493</td>\n",
" <td>37.36358</td>\n",
" <td>127.11493</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>178</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>37.36378</td>\n",
" <td>127.11468</td>\n",
" <td>37.36346</td>\n",
" <td>127.11468</td>\n",
" <td>37.36334</td>\n",
" <td>127.11468</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>178</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>37.36378</td>\n",
" <td>127.11493</td>\n",
" <td>37.36346</td>\n",
" <td>127.11493</td>\n",
" <td>37.36346</td>\n",
" <td>127.11507</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>178</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>37.36313</td>\n",
" <td>127.11468</td>\n",
" <td>37.36346</td>\n",
" <td>127.11468</td>\n",
" <td>37.36346</td>\n",
" <td>127.11453</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>178</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>37.36356</td>\n",
" <td>127.11440</td>\n",
" <td>37.36356</td>\n",
" <td>127.11480</td>\n",
" <td>37.36367</td>\n",
" <td>127.11480</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>178</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>37.36336</td>\n",
" <td>127.11439</td>\n",
" <td>37.36336</td>\n",
" <td>127.11480</td>\n",
" <td>37.36336</td>\n",
" <td>127.11495</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>178</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>37.36356</td>\n",
" <td>127.11521</td>\n",
" <td>37.36356</td>\n",
" <td>127.11480</td>\n",
" <td>37.36356</td>\n",
" <td>127.11465</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>178</td>\n",
" <td>4</td>\n",
" <td>B</td>\n",
" <td>37.36336</td>\n",
" <td>127.11521</td>\n",
" <td>37.36336</td>\n",
" <td>127.11480</td>\n",
" <td>37.36324</td>\n",
" <td>127.11480</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>201</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>37.36822</td>\n",
" <td>127.10996</td>\n",
" <td>37.36854</td>\n",
" <td>127.10996</td>\n",
" <td>37.36866</td>\n",
" <td>127.10996</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>201</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>37.36822</td>\n",
" <td>127.10971</td>\n",
" <td>37.36854</td>\n",
" <td>127.10971</td>\n",
" <td>37.36854</td>\n",
" <td>127.10957</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>201</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>37.36864</td>\n",
" <td>127.10943</td>\n",
" <td>37.36864</td>\n",
" <td>127.10984</td>\n",
" <td>37.36876</td>\n",
" <td>127.10984</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>201</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>37.36844</td>\n",
" <td>127.10943</td>\n",
" <td>37.36844</td>\n",
" <td>127.10984</td>\n",
" <td>37.36844</td>\n",
" <td>127.10999</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>201</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>37.36864</td>\n",
" <td>127.11025</td>\n",
" <td>37.36864</td>\n",
" <td>127.10984</td>\n",
" <td>37.36864</td>\n",
" <td>127.10969</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>201</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>37.36844</td>\n",
" <td>127.10943</td>\n",
" <td>37.36844</td>\n",
" <td>127.10984</td>\n",
" <td>37.36844</td>\n",
" <td>127.10999</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>201</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>37.36864</td>\n",
" <td>127.11025</td>\n",
" <td>37.36864</td>\n",
" <td>127.10984</td>\n",
" <td>37.36864</td>\n",
" <td>127.10969</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>201</td>\n",
" <td>4</td>\n",
" <td>B</td>\n",
" <td>37.36844</td>\n",
" <td>127.11025</td>\n",
" <td>37.36844</td>\n",
" <td>127.10984</td>\n",
" <td>37.36832</td>\n",
" <td>127.10984</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>201</td>\n",
" <td>5</td>\n",
" <td>A</td>\n",
" <td>37.36887</td>\n",
" <td>127.10996</td>\n",
" <td>37.36854</td>\n",
" <td>127.10996</td>\n",
" <td>37.36854</td>\n",
" <td>127.11011</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>201</td>\n",
" <td>5</td>\n",
" <td>B</td>\n",
" <td>37.36886</td>\n",
" <td>127.10971</td>\n",
" <td>37.36854</td>\n",
" <td>127.10971</td>\n",
" <td>37.36842</td>\n",
" <td>127.10971</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>202</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>37.36865</td>\n",
" <td>127.11282</td>\n",
" <td>37.36865</td>\n",
" <td>127.11241</td>\n",
" <td>37.36865</td>\n",
" <td>127.11227</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>202</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>37.36845</td>\n",
" <td>127.11201</td>\n",
" <td>37.36845</td>\n",
" <td>127.11241</td>\n",
" <td>37.36845</td>\n",
" <td>127.11256</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>202</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>19.69448</td>\n",
" <td>117.99260</td>\n",
" <td>19.69448</td>\n",
" <td>117.99260</td>\n",
" <td>19.69448</td>\n",
" <td>117.99260</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>206</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>37.36451</td>\n",
" <td>127.10994</td>\n",
" <td>37.36483</td>\n",
" <td>127.10994</td>\n",
" <td>37.36495</td>\n",
" <td>127.10994</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>206</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>37.36516</td>\n",
" <td>127.10969</td>\n",
" <td>37.36484</td>\n",
" <td>127.10969</td>\n",
" <td>37.36472</td>\n",
" <td>127.10969</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>206</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>19.69448</td>\n",
" <td>117.99260</td>\n",
" <td>19.69448</td>\n",
" <td>117.99260</td>\n",
" <td>19.69448</td>\n",
" <td>117.99260</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>206</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>37.36451</td>\n",
" <td>127.10994</td>\n",
" <td>37.36483</td>\n",
" <td>127.10994</td>\n",
" <td>37.36495</td>\n",
" <td>127.10994</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>206</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>37.36516</td>\n",
" <td>127.10969</td>\n",
" <td>37.36484</td>\n",
" <td>127.10969</td>\n",
" <td>37.36472</td>\n",
" <td>127.10969</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>206</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>19.69448</td>\n",
" <td>117.99260</td>\n",
" <td>19.69448</td>\n",
" <td>117.99260</td>\n",
" <td>19.69448</td>\n",
" <td>117.99260</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>210</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>37.36357</td>\n",
" <td>127.11023</td>\n",
" <td>37.36357</td>\n",
" <td>127.10982</td>\n",
" <td>37.36357</td>\n",
" <td>127.10968</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>210</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>37.36356</td>\n",
" <td>127.10941</td>\n",
" <td>37.36357</td>\n",
" <td>127.10982</td>\n",
" <td>37.36369</td>\n",
" <td>127.10982</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>210</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>37.36337</td>\n",
" <td>127.10942</td>\n",
" <td>37.36337</td>\n",
" <td>127.10982</td>\n",
" <td>37.36337</td>\n",
" <td>127.10997</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50</th>\n",
" <td>210</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>37.36380</td>\n",
" <td>127.10994</td>\n",
" <td>37.36347</td>\n",
" <td>127.10995</td>\n",
" <td>37.36347</td>\n",
" <td>127.11009</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51</th>\n",
" <td>210</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>37.36380</td>\n",
" <td>127.10970</td>\n",
" <td>37.36347</td>\n",
" <td>127.10970</td>\n",
" <td>37.36336</td>\n",
" <td>127.10970</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>210</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>37.36315</td>\n",
" <td>127.10995</td>\n",
" <td>37.36347</td>\n",
" <td>127.10995</td>\n",
" <td>37.36359</td>\n",
" <td>127.10995</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td>210</td>\n",
" <td>4</td>\n",
" <td>B</td>\n",
" <td>37.36315</td>\n",
" <td>127.10970</td>\n",
" <td>37.36347</td>\n",
" <td>127.10970</td>\n",
" <td>37.36347</td>\n",
" <td>127.10955</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54</th>\n",
" <td>211</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>37.36356</td>\n",
" <td>127.11277</td>\n",
" <td>37.36356</td>\n",
" <td>127.11237</td>\n",
" <td>37.36356</td>\n",
" <td>127.11222</td>\n",
" </tr>\n",
" <tr>\n",
" <th>55</th>\n",
" <td>211</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>37.36336</td>\n",
" <td>127.11196</td>\n",
" <td>37.36336</td>\n",
" <td>127.11237</td>\n",
" <td>37.36336</td>\n",
" <td>127.11252</td>\n",
" </tr>\n",
" <tr>\n",
" <th>56</th>\n",
" <td>211</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>19.69448</td>\n",
" <td>117.99260</td>\n",
" <td>19.69448</td>\n",
" <td>117.99260</td>\n",
" <td>19.69448</td>\n",
" <td>117.99260</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td>212</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>37.36357</td>\n",
" <td>127.11347</td>\n",
" <td>37.36357</td>\n",
" <td>127.11306</td>\n",
" <td>37.36357</td>\n",
" <td>127.11291</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td>212</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>37.36336</td>\n",
" <td>127.11266</td>\n",
" <td>37.36337</td>\n",
" <td>127.11306</td>\n",
" <td>37.36337</td>\n",
" <td>127.11321</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td>212</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>19.69448</td>\n",
" <td>117.99260</td>\n",
" <td>19.69448</td>\n",
" <td>117.99260</td>\n",
" <td>19.69448</td>\n",
" <td>117.99260</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"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": [
"<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>phase_no</th>\n",
" <th>ring_type</th>\n",
" <th>angle_code</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>179004</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>175</td>\n",
" <td>1</td>\n",
" <td>B</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>001095</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>175</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>179270</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>175</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>090270</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>175</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>090180</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>175</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>268000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>175</td>\n",
" <td>4</td>\n",
" <td>B</td>\n",
" <td>270090</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>176</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>180000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>176</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>359180</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>176</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>180000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>176</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>180270</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>176</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>270356</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>177</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>180000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>177</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>001176</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>177</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>000090</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>177</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>179270</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>177</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>177</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>268000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>177</td>\n",
" <td>4</td>\n",
" <td>B</td>\n",
" <td>090180</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>178</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>180000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>178</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>000180</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>178</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>000090</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>178</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>180270</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>178</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>270000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>178</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>270090</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>178</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>090270</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>178</td>\n",
" <td>4</td>\n",
" <td>B</td>\n",
" <td>090180</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>201</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>180000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>201</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>180270</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>201</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>270000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>201</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>270090</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>201</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>090270</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>201</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>270090</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>201</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>090270</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>201</td>\n",
" <td>4</td>\n",
" <td>B</td>\n",
" <td>090180</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>201</td>\n",
" <td>5</td>\n",
" <td>A</td>\n",
" <td>000090</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>201</td>\n",
" <td>5</td>\n",
" <td>B</td>\n",
" <td>000180</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>202</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>090270</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>202</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>270090</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>202</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>206</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>180000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>206</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>000180</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>206</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>206</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>180000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>206</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>000180</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>206</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>210</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>090270</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>210</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>268000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>210</td>\n",
" <td>2</td>\n",
" <td>B</td>\n",
" <td>270090</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50</th>\n",
" <td>210</td>\n",
" <td>3</td>\n",
" <td>A</td>\n",
" <td>359090</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51</th>\n",
" <td>210</td>\n",
" <td>3</td>\n",
" <td>B</td>\n",
" <td>000180</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>210</td>\n",
" <td>4</td>\n",
" <td>A</td>\n",
" <td>180000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td>210</td>\n",
" <td>4</td>\n",
" <td>B</td>\n",
" <td>180270</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54</th>\n",
" <td>211</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>090270</td>\n",
" </tr>\n",
" <tr>\n",
" <th>55</th>\n",
" <td>211</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>270090</td>\n",
" </tr>\n",
" <tr>\n",
" <th>56</th>\n",
" <td>211</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td>212</td>\n",
" <td>1</td>\n",
" <td>A</td>\n",
" <td>090270</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td>212</td>\n",
" <td>1</td>\n",
" <td>B</td>\n",
" <td>268090</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td>212</td>\n",
" <td>2</td>\n",
" <td>A</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"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
}