C

Caso de Uso 7

Velocidades Recomendadas

Este caso de uso está deprecado.

El caso de uso7 está dedicado a la publicación de zonas en las que se recomienda una velocidad inferior a la máxima de la vía.

Para garantizar el correcto funcionamiento del caso de uso, se tratará de capturar la información de x,y dinámicas que lleguen a la plataforma a fin de detectar posibles zonas de congestión.

Esa información de x,y será usada para validar información de otros casos de uso, para proporcionar y difundir velocidades recomendadas y para alimentar los sistemas de información de gestión del tráfico de la Dirección General de Tráfico. En todo caso, esta información siempre será disociada y anonimizada, de modo que nunca se tendrá constancia del vehículo o conductor que está generando esta información.

Dado que el estado actual de los vehiculos no permiten obtener una muestra de datos suficientemente representativa, esta información de x,y dinámicas se obtienen a traves de proveedores de terceros. Dichos proveedores proporcionan información del tráfico en tiempo en tiempo real, utilizando esa información, el caso de uso realiza los calculos necesarios para publicar la información de velocidades recomendadas en las zonas afectadas por las congestiones.

La plataforma, a diferencia de otros casos de uso, únicamente cuenta con la funcionalidad de suscripción (recepción) de información. Esta se realiza a través de un servicio de API REST, el cual se describe más adelante.

Dicha funcionalidad de recepción requiere de un certificado de acceso, el cual debe ser solicitado y suministrado por DGT 3.0. Este certificado, de no haber sido solicitado ya, se deberá solicitar a soporte@cmobility30.es.

A continuación se muestran las URLs de acceso a las funcionalidades del caso de uso.

Modo URL Descripción
Suscripción https://pre.cmobility30.es/use-case-7 Endpoint del entorno de integración para la suscripción

Suscripción

Este caso de uso tiene un comportamiento similar al que ofrece la interfaz de bandeja de salida que puede encontrarse en el caso de uso 4. Panel de mensajes virtual. La API ofrece un endpoint a traves del cual se publica la información de velocidades recomendadas en las distintas carreteras y autovías. Dicho endpoint se muestra a continuación y se debe acceder a el realizando una petición de tipo POST. Dicha petición requiere cumplir las precondiciones generales descritas en General · (cmobility30.es).

{baseUrl}/v1/events

La petición anterior deberá tener un body formado por un JSON con el siguiente formato:

{
    "lat": 40.4690208,
    "lon": -3.8177709,
    "rad": 1000
}

La descripción de los campos anteriores es la siguiente:

  • Lat: Latitud de la ubicación a consultar.
  • Lon: Longitud de la ubicación a consultar.
  • Rad: Radio, en metros, del círculo, con centro lat, lon, sobre el que se quiere realizar la consulta. (Se establece un radio mínimo de 1000M / 1KM)

En el endpoint se publican las velocidades recomendadas en formato JSON. Aquí se puede ver un ejemplo:

[
    {
        "properties": {
            "id": 518280,
            "lat": 40.3643099963665,
            "lng": -3.6987799778580666,
            "timeStamp": "2022-09-22T10:49:49.843+02:00",
            "vialidad": {
                "roadDescription": "Avenida de Rafaela Ybarra/Carretera de Carabanchel a Villaverde",
                "direction": 0,
                "affectedLength": 997.0,
                "roadMaxSpeed": 100.0
            }
        },
        "recommendedSpeeds": [
            {
                "speed": 50,
                "kmStart": 0.0,
                "kmEnd": 6.623667673958889
            },
            {
                "speed": 60,
                "kmStart": 6.623667673958889,
                "kmEnd": 14.35127996024426
            },
            {
                "speed": 70,
                "kmStart": 14.35127996024426,
                "kmEnd": 23.182836858856113
            },
            {
                "speed": 80,
                "kmStart": 23.182836858856113,
                "kmEnd": 33.118338369794444
            },
            {
                "speed": 90,
                "kmStart": 33.118338369794444,
                "kmEnd": 44.15778449305926
            },
            {
                "speed": 100,
                "kmStart": 44.15778449305926
            }
        ]
    },
    {
        "properties": {
            "id": 371041,
            "lat": 40.40661002509296,
            "lng": -3.7119099777191877,
            "timeStamp": "2022-09-22T10:49:49.845+02:00",
            "vialidad": {
                "roadDescription": "Calle de Santa Casilda",
                "direction": 1,
                "affectedLength": 214.0,
                "roadMaxSpeed": 40.0
            }
        },
        "recommendedSpeeds": [
            {
                "speed": 20,
                "kmStart": 0.0,
                "kmEnd": 3.744998930000275
            },
            {
                "speed": 30,
                "kmStart": 3.744998930000275,
                "kmEnd": 8.738330836667307
            },
            {
                "speed": 40,
                "kmStart": 8.738330836667307
            }
        ]
    }
]

A continuación, se presenta una descripción de cada uno de los campos del JSON anterior. Dicho JSON, publica la información de una congestión concreta así como las velocidades recomendadas en diferentes puntos:

En el documento se publica una lista de carreteras afectadas en las que existe un atasco, cada una de ellas esta formada por un campo properties y recommendedSpeeds. Es decir, cada conjunto de estos dos campos referencia a una carretera diferente con recomendaciones de velocidad diferentes.

  • Properties: Contiene información relativa a la zona afectada.
    • Id: Identificador de la zona de recomendación.
    • Lat: Latitud donde comienza el atasco.
    • Lon: Longitud donde comienza el atasco.
    • Timestamp(Fecha UTC): Fecha y hora en formato UTC del momento en el que se ha actualizado la información. Puede no coinicidir con la fecha y hora actuales.
    • Vialidad.
      • RoadDescription: Nombre de la carretera o carreteras que se ven afectadas.
      • Direction: La dirección de la carretera sobre la que se aplica el algoritmo. Puede tener valores 1 (Ascendente) o 0 (Descendente).
      • AffectedLength: Longitud, en metros, del tramo en el que actualmente hay una retención. Cuanto mayor sea esta distancia mayor será la distancia entre velocidades recomendadas.
      • RoadMaxSpeed: Velocidad máxima de la vía, en Km/h.
  • RecommendedSpeeds: Contiene las velocidades recomendadas en los distintos tramos.
    • Speed: Velocidad recomendada.
    • kmStart: Punto de inicio de la zona de recomendación. Representa la distancia desde el punto de origen en la que comienza la zona de velocidad recomendada.
    • kmEnd: Punto de finalización de la zona de recomendación. Representa la distancia desde el punto de origen en la que finaliza la zona de velocidad recomendada.

Teniendo en consideración los campos anteriores a continuación se muestra un JSON de ejemplo junto con la interpretación del mismo:

"recommendedSpeeds": [
            {
                "speed": 40,
                "kmStart": 0.0,
                "kmEnd": 12.399856336374242
            },
            {
                "speed": 50,
                "kmStart": 12.399856336374242,
                "kmEnd": 27.279683940023332
            }
]

Desde el punto en el que se origina el atasco, recordemos que viene dado por los campos lat y lng, (supongamos que en la carretera coincide que es el punto kilométrico 200) hasta el punto kilométrico 212.4, los coches deben circular a una velocidad de 40 Km/h. Desde el punto kilométrico 212.4 hasta el 227.28 los coches deben circular a 50 Km/h. Y así sucesivamente hasta llegar a los 90 Km/h, que en este ejemplo es la velocidad máxima de la vía.

Errores

Todas las respuestas HTTP que no sean 200 – OK, se pueden considerar inválidas. Independientemente del mensaje de error, el formato de la respuesta es como el siguiente ejemplo:

{
    "status": 401,
    "code": 1,
    "message": "User not found or valid"
}

La información relativa a los errores en este caso de uso se puede encontrar aquí. Estos errores tendrán tres categorías principales:

Error de Autentificación

  • HTTP Status: 401 - Unauthorized
    Code Message
    1 User not found or valid

Error de Cliente

  • HTTP Status: 400 - Bad Request
    Code Message
    0 Authenticate
    2 Entity ID not found
    3 Missing required property
    4 Incorrect token received
    5 Expired token received
    6 There is an error with the token provided. Please request a new one
    7 No token received
    8 Missing request header
    9 Permission denied. Role assigned to user missing
    10 There is an error in one or more elements
    11 Required request body is missing

A continuación se muestra una respuesta de error 5 - Expired token received la cual tendrá el siguiente formato:

{
    "status": 400,
    "code": 5,
    "message": "Expired token received"
}

Error de Servidor

  • HTTP Status: 500 - Internal Server Error
    Code Message
    28 Internal error