Primeros pasos
Una vez creado el ambiente e instalada UrbanTrips es necesario organizar los datos que funcionarán como insumos del proceso y el archivo de configuración.
Insumos necesarios y opcionales
Urbantrips requiere sólo 3 insumos indispensables:
Un archivo de configuración:
configuraciones_generales.yaml
Un archivo
csv
con las transacciones del sistema de pago con tarjeta (las transacciones deben estar georeferenciadas y tener una serie de campos mínimos)Un archivo
csv
con la información de las líneas y/o ramales que conforman el sistema de transporte público.
El archivo de configuración tendrá especificados todos los parámetros requeridos para la corrida del proceso UrbanTrips. Entre otros parámetros, debe especificarse el nombre del archivo csv que contiene la información con los datos de las transacciones a utilizar en esta corrida. En el directorio de trabajo (ver Estructura de directorios.) podrá haber diversos archivos con datos de diferentes días o periodos de tiempo (lunes.csv
, martes.csv
o enero.csv
, febrero.csv
). Cada uno será procesado en una corrida por vez. Qué archivo utilizar se configura en configuraciones_generales.yaml
en el parámetro nombre_archivo_trx:
. Con UrbanTrips se pueden procesar uno o más días en una misma corrida. Sin embargo, no se puede dividir un mismo día en dos corridas. Si se quieren correr varios días, pero es demasiada información, conviene separarla en diversos archivos donde cada uno siempre tenga la totalidad de la información de cada día a analizar (por ej. lunes.csv
, martes.csv
o semana1.csv
, semana2.csv
pero no lunes_a.csv
, lunes_b.csv
). Luego en otras corridas pueden procesarse otros días y la información se irá actualizando en las bases correspondientes.
El archivo csv con las transacciones debe tener una serie de campos obligatorios (para más detalles ver Input de datos). Los nombres de estos campos en el archivo pueden ser diferentes y la equivalencia se configura en el archivo configuraciones_generales.yaml
en el parámetro nombres_variables_trx
. Para más detalles sobre cómo utilizar este archivo de configuración consulte el apartado Seteo del archivo de configuración).
También es necesario un archivo csv que contenga información de las líneas (y ramales en caso de existir). Fundamentalmente debe incluir un nombre de fantasía o de cartel para cada linea y/o ramal con su id correspondiente y el modo, que ser’a estandarizado luego utilizando los parámetros seteados en configuraciones_generales.yaml
. Adicionalmente se puede sumar información de empresa y algún campo descriptivo. Para más detalles de los campos que debe incluir puede ver el apartado Input de datos. La forma de tratar a las líneas y ramales en UrbanTrips es muy específica, por lo tanto se aconseja leer el apartado Sobre el concepto de lineas y ramales en UrbanTrips.
Con solo estos archivos se podrá correr el proceso que resultará en la imputación de destinos, construcción de matrices OD y elaboración de algunos KPIs, mapas y gráficos.
De cualquier forma, se obtienen resultados adicionales y con mayor precisión si se incluyen los siguientes archivos opcionales:
Tabla con información de las líneas y/o ramales de transporte público (nombre de fantasía, etc).
Tabla de GPS con el posicionamiento de las unidades.
Cartografía de los recorridos de las líneas y/o ramales de transporte público.
Cartografía de las zonificaciones con las unidades espaciales utilizadas para agregar datos para la matriz OD.
Cartografía de las paradas y/o estaciones.
A modo de ejemplo se puede descargar el dataset abierto de transacciones SUBE de AMBA , guardarlo en data/data_ciudad/transacciones.csv
. Este dataset no cuenta con un campo fecha
con el formato dd/mm/aaaa
, deberá agregar con una fecha cualquiera y utilizar las configuraciones especificadas más abajo. A su vez, se debe especificar un id_linea
con el criterio de UrbanTrips (Sobre el concepto de lineas y ramales en UrbanTrips). Para eso se puede tomar la información de lineas de este archivo (que se puede utilizar para el parámetro nombre_archivo_informacion_lineas
). En este archivo, cada id_ramal
tiene un id_linea
asignado, con esa información pueden construir el id_linea
de la tabla transacciones.
Archivo de configuración para dataset SUBE AMBA
geolocalizar_trx: False
resolucion_h3: 8
#tolerancia parada destino en metros
tolerancia_parada_destino: 2200
nombre_archivo_trx: transacciones.csv
alias_db_data: amba
alias_db_insumos: amba
alias_db_dashboard: amba
lineas_contienen_ramales: True
nombre_archivo_informacion_lineas: lineas_amba.csv
imputar_destinos_min_distancia: True
#ingresar el nombre de las variables
nombres_variables_trx:
id_trx: id
fecha_trx: fecha
id_tarjeta_trx: id_tarjeta
modo_trx: modo
hora_trx: hora
id_linea_trx: id_linea
id_ramal_trx: id_ramal
interno_trx: interno_bus
orden_trx: etapa_red_sube
latitud_trx: lat
longitud_trx: lon
factor_expansion:
modos:
autobus: COL
tren: TRE
metro: SUB
tranvia:
brt:
cable:
lancha:
otros:
recorridos_geojson:
# Filtro de coordenadas en formato minx, miny, maxx, maxy
filtro_latlong_bbox:
minx: -59.3
miny: -35.5
maxx: -57.5
maxy: -34.0
#Especificar el formato fecha
formato_fecha: "%d/%m/%Y"
columna_hora: True
ordenamiento_transacciones: orden_trx
tipo_trx_invalidas:
tipo_trx_tren:
- 'CHECK OUT SIN CHECKIN'
- 'CHECK OUT'
Estructura de directorios
Esta es la estructura de directorios de UrbanTrips. configs/
guarda el archivo de configuraciones principal. data/
tendrá por un lado los archivo de insumo para la ciudad (transacciones, gps, etc) y los resultados producto de la corrida de UrbanTrips que se guardarán en data/db/
. Para más información del modelo de datos de los resultados finales consulte Resultados finales. Por último en el directorio resultados/
se guardarán algunos resultados agregados en tablas, mapas, gráficos y en formatos más amigables como csv
, html
, png
.
urbantrips
│ README.md
│
└─── urbantrips
│ ...
└─── configs
│ │ configuraciones_generales.yaml
│ │
└─── data
│ └─── db
│ │ amba_2023_semana1_data
│ │ amba_2023_semana2_data
│ │ amba_2023_insumos
│
│ └─── data_ciudad
│ │ semana1.csv
│ │ semana2.csv
│ │ lineas_amba.csv
│ │ hexs_amba.geojson
│ │ ...
└─── resultados
│ └─── data
│ │ amba_2023_semana1_etapas.csv
│ │ amba_2023_semana1_viajes.csv
│ │ amba_2023_semana1_usuarios.csv
│ │ amba_2023_semana2_etapas.csv
│ │ amba_2023_semana2_viajes.csv
│ │ amba_2023_semana2_usuarios.csv
│ └─── html
│ │ ...
│ └─── matrices
│ │ ...
│ └─── pdf
│ │ ...
│ └─── png
│ │ ...
│ └─── tablas
Correr Urbantrips
Una vez que se dispone del archivo de transacciones y el de información de las líneas, es posible comenzar a utilizar UrbanTrips. Para una corrida del conjunto del proceso puede simplemente correr el comando copiado debajo. Puede reemplazar el archivo de configuración que viene por el que dice configuraciones_generales_2019_m1.yaml y tendrá una corrida para una muestra del 1% de los datos de área urbana de Buenos Aires para 2019.
$ python urbantrips/run_all_urbantrips.py
También puede correr los siguientes procesos de manera independiente. En primer lugar es necesario inicializar los directorios y la base de datos necesarios. Este paso solo se corre una vez.
$ python urbantrips/initialize_environment.py
Luego, se puede procesar la información de transacciones. Este archivo de transacciones puede tener la información de un día, una semana o un mes (siempre que no sea demasiada información). Este paso procesa las transacciones en etapas y viajes, imputando destinos. Luego pueden correr este paso por cada nuevo dataset que quieran procesar (semana_1.csv
, semana_2.csv
, etc) ajustando lo necesario en el archivo configuraciones_generales.yaml
previo a cada corrida.
$ python urbantrips/process_transactions.py
Una vez procesadas todas las transacciones que sean de interés y cargadas en la base de datos de la libería, es posible correr los pasos de post procesamiento sobre esa información, como los KPI, visualizaciones y exportación de resultados.
$ python urbantrips/run_postprocessing.py
Por último, todos estos estadísticos pueden expresarse en diferente tipo de visualizaciones estáticas y dinámicas, como así también un dashboard interactivo.
$ python urbantrips/create_viz.main()
$ python urbantrips/run_dashboard.main()
Resultados finales
Una vez procesados los datos, los resultados de urbantrips se guardarán en una base de datos SQLite
en data/db/
. Para más información del modelo de datos de los resultados finales consulte Resultados finales.