Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes #166

Merged
merged 5 commits into from
Oct 18, 2024
Merged

Fixes #166

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -144,3 +144,12 @@ dmypy.json
*.ipynb
.github/desktop.ini
*.ini
colectivos_unicos.csv
configs/configuraciones_generales.yaml
configs/configuraciones_generales_2019_m1.yaml
lineas_todas.geojson
lineas_todas_3.geojson
resultado_macheo_optimizado.csv
configs/configuraciones_generales_2019_m1.yaml
configs/configuraciones_generales.yaml
lineas_todas_4.geojson
1 change: 1 addition & 0 deletions configs/configuraciones_generales.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
nombre_archivo_trx: "transacciones_amba_test.csv" # Especificar el archivo con las transacciones a consumir
alias_db_data: "amba_test" # nombre del sqlite donde se guardan los datos procesados
alias_db_insumos: "amba_test" # nombre del sqlite donde se guardan los insumos generales
alias_db_dashboard: "amba_test" # nombre del sqlite donde se guardan los datos a mostrar en el dashboard

# Nombre de columnas en el archivo de transacciones
nombres_variables_trx:
Expand Down
4 changes: 2 additions & 2 deletions configs/configuraciones_generales_2019_m1.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
# Bases de datos
nombre_archivo_trx: "transacciones_amba_2019_muestra1.csv" # Especificar el archivo con las transacciones a consumir
alias_db_data: "amba_2019_muestra1" # nombre del sqlite donde se guardan los datos procesados
alias_db_insumos: "amba" # nombre del sqlite donde se guardan los insumos generales
alias_db_dashboard: "db_dash" # nombre del sqlite donde se guardan los datos a mostrar en el dashboard
alias_db_insumos: "amba_2019_muestra1" # nombre del sqlite donde se guardan los insumos generales
alias_db_dashboard: "amba_2019_muestra1" # nombre del sqlite donde se guardan los datos a mostrar en el dashboard

# Nombre de columnas en el archivo de transacciones
nombres_variables_trx:
Expand Down
Binary file modified docs/configuraciones.xlsx
Binary file not shown.
151 changes: 54 additions & 97 deletions urbantrips/dashboard/pages/3_Líneas de Deseo.py
Original file line number Diff line number Diff line change
Expand Up @@ -438,59 +438,13 @@ def traigo_socio_indicadores(socio_indicadores):

else:
matriz = pd.DataFrame([])
# Usar HTML para personalizar el estilo del texto
texto_html = """
<style>
.big-font {
font-size:30px !important;
font-weight:bold;
}
</style>
<div class='big-font'>
No hay datos para mostrar
</div>
"""
col2.markdown(texto_html, unsafe_allow_html=True)
texto_html = """
<style>
.big-font {
font-size:30px !important;
font-weight:bold;
}
</style>
<div class='big-font'>
Verifique que los procesos se corrieron correctamente
</div>
"""
col2.markdown(texto_html, unsafe_allow_html=True)
col2.text('No hay datos para mostrar')
col2.text('Verifique que los procesos se corrieron correctamente')


else:
matriz = pd.DataFrame([])
# Usar HTML para personalizar el estilo del texto
texto_html = """
<style>
.big-font {
font-size:30px !important;
font-weight:bold;
}
</style>
<div class='big-font'>
No hay datos para mostrar
</div>
"""
col2.markdown(texto_html, unsafe_allow_html=True)
texto_html = """
<style>
.big-font {
font-size:30px !important;
font-weight:bold;
}
</style>
<div class='big-font'>
Verifique que los procesos se corrieron correctamente
</div>
"""
col2.markdown(texto_html, unsafe_allow_html=True)
col2.text('No hay datos para mostrar')

with st.expander('Indicadores'):
col1, col2, col3 = st.columns([2, 2, 2])
Expand All @@ -503,55 +457,58 @@ def traigo_socio_indicadores(socio_indicadores):
with st.expander('Matrices'):

col1, col2 = st.columns([1, 4])

# col2.table(matriz)

tipo_matriz = col1.selectbox(
'Variable', options=['Viajes', 'Distancia promedio (kms)', 'Tiempo promedio (min)', 'Velocidad promedio (km/h)'])

normalize = False
if tipo_matriz == 'Viajes':
var_matriz = 'factor_expansion_linea'
normalize = col1.checkbox('Normalizar', value=True)
if tipo_matriz == 'Distancia promedio (kms)':
var_matriz = 'distance_osm_drive'
if tipo_matriz == 'Tiempo promedio (min)':
var_matriz = 'travel_time_min'
if tipo_matriz == 'Velocidad promedio (km/h)':
var_matriz = 'travel_speed'

if len(matriz) > 0:
od_heatmap = pd.crosstab(
index=matriz['Origen'],
columns=matriz['Destino'],
values=matriz[var_matriz],
aggfunc="sum",
normalize=normalize,
)

if normalize:
od_heatmap = (od_heatmap * 100).round(2)
else:
od_heatmap = od_heatmap.round(0)

od_heatmap = od_heatmap.reset_index()
od_heatmap['Origen'] = od_heatmap['Origen'].str[4:]
od_heatmap = od_heatmap.set_index('Origen')
od_heatmap.columns = [i[4:] for i in od_heatmap.columns]

fig = px.imshow(od_heatmap, text_auto=True,
color_continuous_scale='Blues',)

fig.update_coloraxes(showscale=False)

if len(od_heatmap) <= 20:
fig.update_layout(width=800, height=800)
elif (len(od_heatmap) > 20) & (len(od_heatmap) <= 40):
fig.update_layout(width=1100, height=1100)
elif len(od_heatmap) > 40:
fig.update_layout(width=1400, height=1400)

col2.plotly_chart(fig)
# col2.table(matriz)

tipo_matriz = col1.selectbox(
'Variable', options=['Viajes', 'Distancia promedio (kms)', 'Tiempo promedio (min)', 'Velocidad promedio (km/h)'])

normalize = False
if tipo_matriz == 'Viajes':
var_matriz = 'factor_expansion_linea'
normalize = col1.checkbox('Normalizar', value=True)
if tipo_matriz == 'Distancia promedio (kms)':
var_matriz = 'distance_osm_drive'
if tipo_matriz == 'Tiempo promedio (min)':
var_matriz = 'travel_time_min'
if tipo_matriz == 'Velocidad promedio (km/h)':
var_matriz = 'travel_speed'

if len(matriz) > 0:
od_heatmap = pd.crosstab(
index=matriz['Origen'],
columns=matriz['Destino'],
values=matriz[var_matriz],
aggfunc="sum",
normalize=normalize,
)

if normalize:
od_heatmap = (od_heatmap * 100).round(2)
else:
od_heatmap = od_heatmap.round(0)

od_heatmap = od_heatmap.reset_index()
od_heatmap['Origen'] = od_heatmap['Origen'].str[4:]
od_heatmap = od_heatmap.set_index('Origen')
od_heatmap.columns = [i[4:] for i in od_heatmap.columns]

fig = px.imshow(od_heatmap, text_auto=True,
color_continuous_scale='Blues',)

fig.update_coloraxes(showscale=False)

if len(od_heatmap) <= 20:
fig.update_layout(width=800, height=800)
elif (len(od_heatmap) > 20) & (len(od_heatmap) <= 40):
fig.update_layout(width=1100, height=1100)
elif len(od_heatmap) > 40:
fig.update_layout(width=1400, height=1400)

col2.plotly_chart(fig)
else:
col2.text('No hay datos para mostrar')

with st.expander('Género y tarifas'):
col1, col2, col3, col4 = st.columns([1, 2, 2, 2])
Expand Down
135 changes: 54 additions & 81 deletions urbantrips/dashboard/pages/4_Poligonos.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ def crear_mapa_poligonos(df_viajes,
etapas_all = levanto_tabla_sql('poly_etapas')
matrices_all = levanto_tabla_sql('poly_matrices')
zonificaciones = levanto_tabla_sql('zonificaciones')

general_ = ''
with st.expander('Polígonos', expanded=True):

col1, col2 = st.columns([1, 4])
Expand Down Expand Up @@ -394,101 +394,74 @@ def crear_mapa_poligonos(df_viajes,

else:
matriz = pd.DataFrame([])
col2.markdown("""
<style>
.big-font {
font-size:40px !important;
}
</style>
""", unsafe_allow_html=True)

col2.markdown(
'<p class="big-font"> ¡¡ No hay datos para mostrar !!</p>', unsafe_allow_html=True)
col2.text('No hay datos para mostrar')

else:
matriz = pd.DataFrame([])

# Usar HTML para personalizar el estilo del texto
texto_html = """
<style>
.big-font {
font-size:30px !important;
font-weight:bold;
}
</style>
<div class='big-font'>
No hay datos para mostrar
</div>
"""
col2.markdown(texto_html, unsafe_allow_html=True)
texto_html = """
<style>
.big-font {
font-size:24px !important;
font-weight:bold;
}
</style>
<div class='big-font'>
Verifique que existan alguna capa de polígonos o que los procesos se corrieron correctamente
</div>
"""
col2.markdown(texto_html, unsafe_allow_html=True)
col2.text('No hay datos para mostrar')


with st.expander('Indicadores'):
col1, col2, col3 = st.columns([2, 2, 2])
if len(etapas_all) > 0:
if len(general_) > 0:
col1.table(general_)
col2.table(modal_)
col3.table(distancias_)
else:
col2.text('No hay datos para mostrar')

with st.expander('Matrices'):

col1, col2 = st.columns([1, 4])

tipo_matriz = col1.selectbox(
'Variable', options=['Viajes', 'Distancia promedio (kms)', 'Tiempo promedio (min)', 'Velocidad promedio (km/h)'])

normalize = False
if tipo_matriz == 'Viajes':
var_matriz = 'factor_expansion_linea'
normalize = col1.checkbox('Normalizar', value=True)
if tipo_matriz == 'Distancia promedio (kms)':
var_matriz = 'distance_osm_drive'
if tipo_matriz == 'Tiempo promedio (min)':
var_matriz = 'travel_time_min'
if tipo_matriz == 'Velocidad promedio (km/h)':
var_matriz = 'travel_speed'


if len(matriz) > 0:
od_heatmap = pd.crosstab(
index=matriz['Origen'],
columns=matriz['Destino'],
values=matriz['factor_expansion_linea'],
aggfunc="sum",
normalize=normalize,
)
if normalize:
od_heatmap = (od_heatmap * 100).round(1)
else:
od_heatmap = od_heatmap.round(0)

od_heatmap = od_heatmap.reset_index()
od_heatmap['Origen'] = od_heatmap['Origen'].str[4:]
od_heatmap = od_heatmap.set_index('Origen')
od_heatmap.columns = [i[4:] for i in od_heatmap.columns]

fig = px.imshow(od_heatmap, text_auto=True,
color_continuous_scale='Blues',)

fig.update_coloraxes(showscale=False)

if len(matriz) <= 20:
fig.update_layout(width=800, height=800)
elif (len(matriz) > 20) & (len(od_heatmap) <= 40):
fig.update_layout(width=1000, height=1000)
elif len(matriz) > 40:
fig.update_layout(width=1400, height=800)

col2.plotly_chart(fig)
tipo_matriz = col1.selectbox(
'Variable', options=['Viajes', 'Distancia promedio (kms)', 'Tiempo promedio (min)', 'Velocidad promedio (km/h)'])

normalize = False
if tipo_matriz == 'Viajes':
var_matriz = 'factor_expansion_linea'
normalize = col1.checkbox('Normalizar', value=True)
if tipo_matriz == 'Distancia promedio (kms)':
var_matriz = 'distance_osm_drive'
if tipo_matriz == 'Tiempo promedio (min)':
var_matriz = 'travel_time_min'
if tipo_matriz == 'Velocidad promedio (km/h)':
var_matriz = 'travel_speed'


if len(matriz) > 0:
od_heatmap = pd.crosstab(
index=matriz['Origen'],
columns=matriz['Destino'],
values=matriz['factor_expansion_linea'],
aggfunc="sum",
normalize=normalize,
)
if normalize:
od_heatmap = (od_heatmap * 100).round(1)
else:
od_heatmap = od_heatmap.round(0)

od_heatmap = od_heatmap.reset_index()
od_heatmap['Origen'] = od_heatmap['Origen'].str[4:]
od_heatmap = od_heatmap.set_index('Origen')
od_heatmap.columns = [i[4:] for i in od_heatmap.columns]

fig = px.imshow(od_heatmap, text_auto=True,
color_continuous_scale='Blues',)

fig.update_coloraxes(showscale=False)

if len(matriz) <= 20:
fig.update_layout(width=800, height=800)
elif (len(matriz) > 20) & (len(od_heatmap) <= 40):
fig.update_layout(width=1000, height=1000)
elif len(matriz) > 40:
fig.update_layout(width=1400, height=800)

col2.plotly_chart(fig)
else:
col2.text('No hay datos para mostrar')
8 changes: 5 additions & 3 deletions urbantrips/datamodel/transactions.py
Original file line number Diff line number Diff line change
Expand Up @@ -448,9 +448,11 @@ def eliminar_trx_fuera_bbox(trx):
)
trx = gpd.GeoDataFrame(trx, geometry="geometry", crs=4326)

zona = zonificaciones.zona.head().values[0]
zonificaciones = zonificaciones[zonificaciones.zona == zona]
zonificaciones = zonificaciones.dissolve(by="zona")
# zona = zonificaciones.zona.head().values[0]
# zonificaciones = zonificaciones[zonificaciones.zona == zona]
# zonificaciones = zonificaciones.dissolve(by="zona")
zonificaciones['dissolve_column'] = 1
zonificaciones = zonificaciones.dissolve(by='dissolve_column')

trx = (
gpd.sjoin(zonificaciones[["geometry"]], trx)
Expand Down
Loading
Loading