Skip to content

oeg-upm/inesdata-mov-data-generation

Repository files navigation

INESDATA-MOV-DATASETS

1. Introducción 📔

inesdata_mov_datasets es un paquete Python :simple-python: cuya finalidad es obtener información de fuentes de datos relacionadas con movilidad, y procesarla de tal forma que pueda ser almacenada dentro de un espacio de datos. Las fuentes de información disponibles para la extracción de datos son las siguientes:

  • 🚌 EMT (Empresa Municipal de Transportes de Madrid): Empresa pública que da servicio de transporte público de superficie en la ciudad de Madrid. La EMT dispone de una API desde la cual se pueden realizar peticiones para obtener información sobre las líneas de bus y sus paradas, así como los tiempos de llegada de los autobuses, entre otra información.
  • 🌥️ AEMET (Agencia Estatal de Meteorología): Agencia que ofrece información meteorológica y climatológica, predicción, avisos, observación, anuncios, atención al público, divulgación e información de la Agencia. Al igual que la EMT, esta fuente de datos también dispone de una API que ofrece información meteorológica dentro de la ciudad de Madrid actualizada con frecuencia horaria.
  • 🚦 Informo (Información de Movilidad de Madrid): Esta fuente de datos ofrece información sobre el tráfico de la ciudad de Madrid, llevando a cabo la medición del tráfico a través de dispositivos como las cámaras de videovigilancia instaladas en los semáforos de las calles, o a través de los lazos inductivos electromagnéticos posicionados en el pavimento de las carreteras. Esta fuente de información también posee una API pública que ofrece información sobre el tráfico actualizada cada 5 minutos aproximadamente.

Gracias a este paquete, una vez generados los datasets dentro del espacio de datos, estos posteriormente podrían ser utilizados por ejemplo para el entrenamiento de modelos de Machine Learning.

2. Instalación 🛠️

Clonar repositorio:

git clone https://github.com/oeg-upm/inesdata-mov-data-generation.git

Instalar paquete:

cd inesdata-mov-data-generation
pip install .

3. Uso ▶️

Este paquete presenta dos comandos principales: extract para la extracción de datos de las diferentes fuentes de información, y create para la creación de los distintos datasets a partir de los datos previamente extraidos.

Comando extract

Comando para realizar la extracción de datos de las diferentes fuentes de información.

Argumentos:

  • config-path: parámetro obligatorio con la ruta al fichero de configuración YAML.
  • sources: parámetro opcional de la fuente de datos de la que se desea realizar la extracción. Los valores que puede tomar son: emt, aemet, informo, o all, que realizaría la extracción de todas las fuentes de datos disponibles. Por defecto sería all.
python -m inesdata_mov_datasets extract --config-path=config.yaml --sources=all

??? note

Generalmente, el uso de este comando se va a usar de forma periódica con el objetivo de crear un histórico de estas fuentes. Una sencilla forma
de correr este comando es haciendo uso de `crontab`. El siguiente ejemplo muestra cómo se pueden generar datos cada minuto en el intervalo de 7:00 am a 21:00 pm:

```bash
7-21 * * * * python -m inesdata_mov_datasets extract --config-path=config.yaml --sources=all
```

Comando create

Comando para crear los datasets a partir de los datos previamente extraidos.

Argumentos:

  • config-path: parámetro obligatorio con la ruta al fichero de configuración YAML.
  • sources: parámetro opcional de la fuente de datos de la que se desea realizar la extracción. Los valores que puede tomar son: emt, aemet, informo, o all, que realizaría la creación de los datasets de todas las fuentes disponibles. Por defecto sería all.
  • start-date: parámetro opcional de la fecha de inicio de la creación del dataset. Por defecto sería datetime.today(). El formato de dicha fecha debe ser un string con formato "YYYYMMDD".
  • end-date: parámetro opcional de la fecha de fin de la creación del dataset. Por defecto sería el día siguiente a datetime.today(). El formato de dicha fecha debe ser un string con formato "YYYYMMDD".
python -m inesdata_mov_datasets create --config-path=config.yaml --sources=all --start-date=20240311 --end-date=20240312

Configuración

El fichero de configuración es donde se indica, tanto las credenciales necesarias para acceder a las fuentes, como dónde se van a guardar (1) los ficheros que se generen en el proceso. { .annotate }

  1. :man_raising_hand: Actualmente se soporta tanto almacenaje remoto s3 (minio) como en el filesystem (local)
sources:  # data sources credentials
  emt:  # EMT API: https://apidocs.emtmadrid.es/#api-Block_3_TRANSPORT_BUSEMTMAD
    credentials:  # EMT auth can be performed via email/password (basic) or via https://mobilitylabs.emtmadrid.es
      email: myemail  # your email for EMT basic auth
      password: mypassword  # your password for EMT basic auth
      x_client_id: my_x_client_id  # your client id for EMT mobilitylabs auth
      passkey: my_passkey  # your passkey for EMT mobilitylabs auth
    stops: [1,2]  # EMT stops ids
    lines: [1,2]  # EMT lines ids
  aemet:  # AEMET API: https://opendata.aemet.es/dist/index.html#/predicciones-especificas/Predicci%C3%B3n%20por%20municipios%20horaria.%20Tiempo%20actual.
    credentials:  # basic token auth
      api_key: my_api_key  # your api key for AEMET auth
  

storage:  # storage settings
  default: local  # default storage configuration: minio/local
  config: 
    minio:  # minio config
      access_key: my_access_key  # minio access key for auth
      secret_key: my_secret_key  # minio secret key for auth
      endpoint: minio-endpoint  # minio URL
      secure: True  # SSL
      bucket: my_bucket  # minio bucket name
    local:  # local config
      path: /path/to/save/datasets  # local storage path for resulting generated datasets
  logs:  # logging settings
    path: /path/to/save/logs  # storage path for logs
    level: LOG_LEVEL  # log level: INFO/DEBUG

Proyecto INESDATA

INESData es una Incubadora española de Espacios de Datos y Servicios de IA que utiliza infraestructuras federadas en la Nube. Se centra en simplificar la adopción de tecnología y acelerar el despliegue industrial del ecosistema nacional de espacios de datos contribuyendo con cuatro espacios de datos (idioma, movilidad, licitación pública y legal, y medios) para demostrar los beneficios de los espacios de datos y la aplicabilidad de la tecnología relacionada. Está financiado por el Ministerio de Transformación Digital de España y NextGenerationEU, en el marco del Programa UNICO I+D CLOUD - Real Decreto 959/2022.