C

Caso de Uso 10

Balizamiento perimetral de eventos deportivos.

El caso de uso 10 está dedicado a la información relativa a eventos deportivos.

La DGT, con el servicio de balizamiento perimetral de eventos deportivos, recopila y publica la información de la localización en tiempo real de todos los eventos deportivos (competiciones ciclistas, eventos de atletismo en carretera, rallies, etc) que afectan a la circulación y seguridad vial de los usuarios que transitan por las vías del territorio español. La creación, publicación y eliminación de los planes y los recorridos de dichos eventos se realizará a través de los sistemas de la DGT.

Se utilizarán balizas V-2 para realizar el seguimiento de los eventos y conos conectados que informarán de los distintos cortes de las carreteras en las inmediaciones del circuito para garantizar la seguridad. De esta forma el usuario planifica mejor sus desplazamientos, y considerar la opción del uso del transporte público que permite reducción de las emisiones contaminantes.

La información de balizamiento de los eventos deportivos que llega al usuario final dependerá de la implementación realizada por el agente/tercero que consume la información de la plataforma DGT 3.0 y la publica a través del sistema de información del vehículo, aplicación móvil u otros dispositivos.

La plataforma cuenta con dos funcionalidades diferenciadas para la publicación (envío) y para la suscripción (recepción) de información. La primera es a través de una API REST del caso de uso y la segunda a través de un servicio MQTT en tiempo real.

Tanto la funcionalidad de publicación como de suscripción requieren de certificados de acceso distintos que deben ser solicitados y suministrados por DGT 3.0. Estos certificados, de no haber sido solicitados ya, se deberán solicitar a soporte@cmobility30.es.

A continuación se muestran las URLs con las que se accede a cada funcionalidad:

Modo URL Descripción
Publicación https://pre.cmobility30.es/use-case-10 Endpoint del entorno de integración de clientes para la publicación (ciertos métodos de publicación serán accesibles para el consumo)
Suscripción mqtt://mqtt.pre.cmobility30.es:8883 Endpoint del entorno de integración para la suscripción

Publicación

Este caso de uso dispone de una API REST para la publicación (envío) de los datos por parte de las empresas que así lo deseen. En los siguientes apartados se pueden encontrar los detalles de esta:

  • Los detalles generales para realizar una petición:

General · (cmobility30.es)

  • Información relativa a los métodos específicos del caso de uso:

Metodos de publicación

  • Información relativa al detalles de las tablas maestras:

Tablas maestras

Suscripción

Este caso de uso también dispone de un servicio de suscripción (recepción) de datos por parte de las empresas que así lo deseen mediante el protocolo MQTT. Este caso de uso es solo para los servicios de seguimiento de las pruebas o eventos deportivos, si se desea la suscripción a la información de eventos de conos (cortes de carretera) se debe hacer a través de la interfaz de bandeja de salida que puede encontrarse en el caso de uso 4. Panel de mensajes virtual.

A continuación se pueden encontrar los detalles de la suscripción MQTT para este caso de uso 10 (Eventos deportivos):

MQTT (MQ Telemetry Transport) es un protocolo de mensajería que se usa como un método simple y liviano para transferir datos hacia/desde dispositivos de baja potencia. Puede ver más información y un ejemplo de conexión aquí.

El protocolo admite un único patrón de mensajería, el patrón Publicar-Suscribir: cada mensaje es publicado en un tópico al que se debe suscribir para recibir la información.

La suscripción al servicio de este caso de uso deberá ser mediante el tópico:

usecase10/events

En el tópico se publican los eventos en formato JSON. Aquí se puede ver un ejemplo:

[
{
    "type": "Feature",
    "geometry": {
        "type": "LineString",
        "coordinates": [
           [-8.08815999999996, 42.433350000000075, 0],
	   [-8.088169999999934, 42.433350000000075, 0],
	   [-8.088289999999972, 42.433370000000025, 0],
	   [-8.08851999999996, 42.43340000000006, 0],
	   [-8.088619999999935, 42.43341000000004, 0]
        ]
    },
    "properties": {
        "idEvento": 1,
        "idEtapa": 123,
        "objectid_1": 123123,
        "objectid": 63993,
        "ddtram_cod": 58651,
        "ddcar_codi": "58312",
        "ddcar_deno": "De Carballiño (N-541) a Parada de Laviote (OU-0416)",
        "ddtram_den": "De Carballiño (N-541) a Parada de Laviote (OU-0416)",
        "ddtram_tip": "Diputación Provincial o Foral",
        "ddtram_tit": "Excma. Diputación Provincial de Orense",
        "ddtram_t_1": "Carretera Convencional",
        "ddtram_lon": 14.802,
        "pk_ini": 0,
        "pk_fin": 14.52,
        "idtipovian": "Convencional (Red Provincial)",
        "ddprov_pro": "Ourense",
        "ddcom_comu": "Galicia",
        "color": 0,
        "ddcar_carr": "OU-0417",
        "ddtvia_ord": 3,
        "pkinigis": 0,
        "pkfingis": 14520,
        "shape_leng": 29189.174671589997,
        "pk_inicio_tram_etp": 0.20000000000000001,
        "pk_fin_tram_etp": 4.75,
        "tipo_vialidad": "Carretera normalizada",
        "cod_vialidad": "RCL",
        "geom": {
            "type": "LineString",
            "coordinates": [
                [-8.08815999999996, 42.433350000000075, 0],
		[-8.088169999999934, 42.433350000000075, 0],
		[-8.088289999999972, 42.433370000000025, 0],
		[-8.08851999999996, 42.43340000000006, 0],
		[-8.088619999999935, 42.43341000000004, 0],
		[-8.088729999999941, 42.43341000000004, 0],
		[-8.088919999999973, 42.43341000000004, 0],
		[-8.08913999999993, 42.43339000000003, 0],
		[-8.089369999999974, 42.433370000000025, 0],
		[-8.089719999999943, 42.433340000000044, 0],
		[-8.089899999999943, 42.43332000000004, 0],
		[-8.089979999999969, 42.43330000000003, 0],
		[-8.09003999999993, 42.433290000000056, 0],
		[-8.090119999999956, 42.433250000000044, 0],
		[-8.090209999999956, 42.433200000000056, 0],
		[-8.090309999999931, 42.43313000000006, 0],
		[-8.090399999999931, 42.43307000000004, 0],
		[-8.090559999999925, 42.43294000000003, 0],
		[-8.090799999999945, 42.43274000000008, 0],
		[-8.090889999999945, 42.43268000000006, 0],
		[-8.09096999999997, 42.43261000000007, 0]
            ]
        },
        "tsinicio": "2022-05-07T02:00:00Z",
        "tsfin": "2022-05-07T02:00:00Z",
        "evento": "XXIII SUBIDA A SALETA",
        "timestamp" : "2022-05-07T12:00:00Z"
    }
}
]

Descripción de los campos para el caso de uso de eventos deportivos a través de la plataforma DGT 3.0. Publica la información geométrica del evento junto con sus carreteras, pk y horarios de paso:

(*)= Campo que pueden no aparecer en el JSON publicado

  • type (string): identificador del Feature.

  • geometry: Colección de coordenadas que representan el resultado de realizar el seguimiento de una prueba deportiva. Esta colección de coordenadas estará contenida en la colección representada por el campo geom de este mismo documento JSON. De la colección de coordenadas de seguimiento que se publica la primera de la lista se corresponde con la ubicación del coche de cola, mientras que la última de la lista se corresponde con el coche de cabeza.

    • type(string): identificador del tipo de geometría.

    • coordinates: Colección de coordenadas del rutómetro.

  • properties: Propiedades del schema para la publicación de eventos deportivos.

    • idEvento (integer):Identificador del evento deportivo

    • idEtapa (integer): Identificador de la etapa que pertenece a un evento deportivo único definido por el campo idEvento.

    • objectid_1 (integer): Identificador del tramo que pertenece a una etapa única definida por el campo idEtapa.

    • (*) objectid(integer): Identificador del objeto según GIS.

    • ddtram_cod(integer): Identificador oficial del tramo en BDC (Base de Datos de Carreteras)

    • ddcar_codi(string): Identificador de la carretera en BDC (Base de Datos de Carreteras)

    • ddcar_deno(string): Denominación de carretera en BDC (Base de Datos de Carreteras)

    • ddtram_den(string): Denominación del tramo en base de datos de carreteras

    • ddtram_tip(string):Tipología del titular del tramo en bases de datos de carreteras

    • ddtram_tit(string): Nombre del titular del tramo en bases de datos de carreteras

    • ddtram_t_1(string):Tipología del tramo en base de datos de carreteras

    • (*) ddtram_lon(integer):Longitud total del tramo en base de datos de carreteras

    • pk_ini(string): Punto kilométrico de inicio del tramo y oficial del tramo en base de datos de carreteras.

    • pk_fin(string): Punto kilométrico de fin del tramo y oficial del tramo en base de datos de carreteras.

    • (*) idtipovian(string): Tipología de la carretera en Bases de datos de carreteras

    • ddprov_pro(string): Provincia del tramo en base de datos de carreteras

    • (*) ddcom_comu(string): Comunidad autónoma del tramo en base de datos de carreteras

    • (*) color(string): Color de vía segun GIS para mapamovilidad.es

    • (*) pkinigis(integer): Punto kilométrico de inicio del tramo según el GIS.

    • (*) pkfingis(integer): Punto kilométrico de fin del tramo según GIS.

    • (*) shape_leng(numeric): Longitud de la forma según coordenadas

    • ddcar_carr(string): Nomenclatura oficial de la carretera en base de datos de carreteras

    • pk_inicio_tram_etp(integer): Punto kilométrico de inicio de ocupación del tramo etapa.

    • pk_fin_tram_etp(integer): Punto kilométrico de fin de ocupación del tramo etapa.

    • tipo_vialidad(string): Descripción de la vialidad por la que se ve afectado el tramo

    • cod_vialidad(string): Código identificativo de la vialidad por la que se ve afectado el tramo

    • geom(string): Colección de coordenadas que representan la ruta total del tramo sobre el que se está haciendo el seguimiento. De la colección de coordenadas de que se publica, la primera de la lista se corresponde con la ubicación donde comienza el evento, mientras que la última de la lista se corresponde con la ubicación donde este finaliza.

    • tsinicio(ZonedDateTime): Fecha de inicio de la prueba.

    • tsfin(ZonedDateTime): Fecha de fin de la prueba.

    • evento (String): Denominación del evento resuelto en DGT

    • timestamp (Fecha UTC): Fecha y hora en formato UTC del momento en el que el evento se ha generado. Es necesario que sea de un máximo de 30 segundos de antiguedad con respecto a la hora UTC.

Errores

Todas las respuestas HTTP que no sean 200 – OK, se pueden considerar inválidas. No obstante, determinados métodos de la API pueden responder con código 202 - ACCEPTED junto con una descripción indicando el motivo de aceptación. Independientemente de si el código del mensaje es 202 o uno de error, el formato de la respuesta es como el siguiente ejemplo:

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

Respuestas parcialmente satisfactorias

  • HTTP Status: 202 - Accepted

    Code Message
    27 One more Beacon is expected in order to do the dynamic tracking

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 The entity received cannot be processed
    5 Incorrect token received
    6 Expired token received
    7 There is an error with the token provided. Please request a new one
    8 No token received
    9 Required request body is missing
    10 Event is marked as expired by timestamp
    11 Missing request header
    12 Access denied role
    13 Unique key violated
    14 There is an error in one or more elements
    15 Invalid GeoJson
    16 GeoJson does not belong to municipality
    17 TimestampStart should be future
    18 TimestampEnd should be future
    19 TimestampStart should be before TimestampEnd
    20 The type is not a cone
    21 Cone use type has to be Infrastructure
    22 Cone vehicle type has to be None
    23 The beacon type must have value 4 (Unique)
    24 The plan requested to track was not found
    25 The event requested to track has not started yet or has already finished
    26 The provided coordinates for both dynamic tracking beacons are exactly the same

En el caso de obtener un error 3 - Missing required property la respuesta obtenida tendrá un valor en el message que nos indicará los campos que faltan por enviar:

{
    "status": 400,
    "code": 3,
    "message": "[cityIne: must not be null, parkingId: must not be null, timestamp: must not be null]"
}

Error de Servidor

  • HTTP Status: 500 - Internal Server Error

    Code Message
    28 Internal error