fixe muti-point showing in gsm app in starup issues
Browse files
apps/multi_points_distance_calculator.py
CHANGED
@@ -1,46 +1,7 @@
|
|
1 |
import pandas as pd
|
2 |
import streamlit as st
|
3 |
-
from geopy.distance import geodesic
|
4 |
-
|
5 |
-
|
6 |
-
# Function to calculate distances while preserving all original columns
|
7 |
-
def calculate_distances(
|
8 |
-
df1: pd.DataFrame,
|
9 |
-
df2: pd.DataFrame,
|
10 |
-
code_col1,
|
11 |
-
lat_col1,
|
12 |
-
long_col1,
|
13 |
-
code_col2,
|
14 |
-
lat_col2,
|
15 |
-
long_col2,
|
16 |
-
):
|
17 |
-
distances = []
|
18 |
-
|
19 |
-
for _, row1 in df1.iterrows():
|
20 |
-
for _, row2 in df2.iterrows():
|
21 |
-
coord1 = (row1[lat_col1], row1[long_col1])
|
22 |
-
coord2 = (row2[lat_col2], row2[long_col2])
|
23 |
-
distance_km = geodesic(coord1, coord2).kilometers # Compute distance
|
24 |
-
|
25 |
-
# Combine all original columns + distance
|
26 |
-
combined_row = {
|
27 |
-
**row1.to_dict(), # Keep all columns from Dataset1
|
28 |
-
**{
|
29 |
-
f"{col}_Dataset2": row2[col] for col in df2.columns
|
30 |
-
}, # Keep all columns from Dataset2
|
31 |
-
"Distance_km": distance_km,
|
32 |
-
}
|
33 |
-
distances.append(combined_row)
|
34 |
-
|
35 |
-
df_distances = pd.DataFrame(distances)
|
36 |
-
|
37 |
-
# Find the closest point for each Point1
|
38 |
-
df_closest: pd.DataFrame = df_distances.loc[
|
39 |
-
df_distances.groupby(code_col1)["Distance_km"].idxmin()
|
40 |
-
]
|
41 |
-
|
42 |
-
return df_distances, df_closest
|
43 |
|
|
|
44 |
|
45 |
# Streamlit UI
|
46 |
st.title("Multi Points Distance Calculator")
|
|
|
1 |
import pandas as pd
|
2 |
import streamlit as st
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
4 |
+
from utils.utils_functions import calculate_distances
|
5 |
|
6 |
# Streamlit UI
|
7 |
st.title("Multi Points Distance Calculator")
|
process_kpi/process_gsm_capacity.py
CHANGED
@@ -1,7 +1,6 @@
|
|
1 |
import numpy as np
|
2 |
import pandas as pd
|
3 |
|
4 |
-
from apps.multi_points_distance_calculator import calculate_distances
|
5 |
from queries.process_gsm import combined_gsm_database
|
6 |
from utils.check_sheet_exist import execute_checks_sheets_exist
|
7 |
from utils.convert_to_excel import convert_dfs, save_dataframe
|
@@ -18,6 +17,7 @@ from utils.kpi_analysis_utils import (
|
|
18 |
create_hourly_date,
|
19 |
kpi_naming_cleaning,
|
20 |
)
|
|
|
21 |
|
22 |
GSM_ANALYSIS_COLUMNS = [
|
23 |
"ID_BTS",
|
|
|
1 |
import numpy as np
|
2 |
import pandas as pd
|
3 |
|
|
|
4 |
from queries.process_gsm import combined_gsm_database
|
5 |
from utils.check_sheet_exist import execute_checks_sheets_exist
|
6 |
from utils.convert_to_excel import convert_dfs, save_dataframe
|
|
|
17 |
create_hourly_date,
|
18 |
kpi_naming_cleaning,
|
19 |
)
|
20 |
+
from utils.utils_functions import calculate_distances
|
21 |
|
22 |
GSM_ANALYSIS_COLUMNS = [
|
23 |
"ID_BTS",
|
utils/utils_functions.py
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import pandas as pd
|
2 |
+
from geopy.distance import geodesic
|
3 |
+
|
4 |
+
|
5 |
+
# Function to calculate distances while preserving all original columns
|
6 |
+
def calculate_distances(
|
7 |
+
df1: pd.DataFrame,
|
8 |
+
df2: pd.DataFrame,
|
9 |
+
code_col1,
|
10 |
+
lat_col1,
|
11 |
+
long_col1,
|
12 |
+
code_col2,
|
13 |
+
lat_col2,
|
14 |
+
long_col2,
|
15 |
+
):
|
16 |
+
distances = []
|
17 |
+
|
18 |
+
for _, row1 in df1.iterrows():
|
19 |
+
for _, row2 in df2.iterrows():
|
20 |
+
coord1 = (row1[lat_col1], row1[long_col1])
|
21 |
+
coord2 = (row2[lat_col2], row2[long_col2])
|
22 |
+
distance_km = geodesic(coord1, coord2).kilometers # Compute distance
|
23 |
+
|
24 |
+
# Combine all original columns + distance
|
25 |
+
combined_row = {
|
26 |
+
**row1.to_dict(), # Keep all columns from Dataset1
|
27 |
+
**{
|
28 |
+
f"{col}_Dataset2": row2[col] for col in df2.columns
|
29 |
+
}, # Keep all columns from Dataset2
|
30 |
+
"Distance_km": distance_km,
|
31 |
+
}
|
32 |
+
distances.append(combined_row)
|
33 |
+
|
34 |
+
df_distances = pd.DataFrame(distances)
|
35 |
+
|
36 |
+
# Find the closest point for each Point1
|
37 |
+
df_closest: pd.DataFrame = df_distances.loc[
|
38 |
+
df_distances.groupby(code_col1)["Distance_km"].idxmin()
|
39 |
+
]
|
40 |
+
|
41 |
+
return df_distances, df_closest
|