Skip to content

Semafori (traffico stradale)

Nozioni di base

Questo ricettario descrive un protocollo per la trasmissione dei dati di misura del traffico stradale urbano. I dati di misurazione possono essere collegati a intervalli fissi (come i dati di conteggio) o meno (come i punti di segnalazione del trasporto pubblico).

Il protocollo supporta solo la trasmissione di dati. Non esiste un meccanismo di selezione dei dati di misura. Inoltre, supporta solo i dati online e non le query di archivio.

Il protocollo si basa sull’OCIT-C e sul suo predecessore OCIT-I e può essere visto come una versione “leggera” di questo protocollo.

Tutte le strutture di dati sono basate su schemi in formato XSD, ma i dati stessi sono trasferiti in formato JSON (JavaScript Object Notation), che può essere derivato dalle strutture XML che possono essere generate in base agli schemi XSD.

Concetto di dati

Il modello di dati contiene tre tipi di dati e il loro trasferimento:

  1. Dati statici, che contengono l’alimentazione dei dati trasmessi,
  2. Dati dinamici che vengono trasmessi periodicamente (ad esempio, i valori dei contatori), su eventi (ad esempio, i telegrammi del trasporto pubblico) o quando il valore cambia (ad esempio, gli stati dei gruppi di segnali),
  3. Metadati che descrivono e definiscono i dati statici e dinamici (ad esempio, gli schemi).

I dati descrittivi, sia quelli statici che i metadati, possono cambiare nel tempo. Non viene conservato lo storico delle descrizioni passate, ma solo i dati attuali. Il contenuto dei file deve essere marcato con la data di validità. La data di fine di una validità è implicitamente indicata se viene fornita un’ulteriore fornitura con una data di inizio validità successiva. Oltre alla marca temporale, è disponibile anche lo stato della versione.

Dati statici

I dati statici (1) sono memorizzati in una struttura di file che segue l’indirizzamento logico (vedi sotto). I file sono formattati in XML e corrispondono a uno schema XSD memorizzato nei metadati (3). Lo schema si basa su OCIT-C e OCIT-I. I dati vengono scritti e anche interrogati tramite un protocollo REST. Nell’interrogazione, il protocollo deve essere in grado di limitare le forniture desiderate ad “Area”, “Intersection” e “Supply” (area, nodo e valori misurati); nella fornitura, l’indirizzamento avviene tramite il contenuto del file

I dati statici possono contenere ridondanze (ad esempio, il numero dell’oggetto nei link e il nome dell’oggetto per una migliore leggibilità).

  1. I dati statici, noti anche come dati di fornitura, si riferiscono sempre a
    Un’area, ad esempio una città o un gruppo tematico o geografico di intersezioni o punti di misurazione, oppure
  2. un nodo.

Il riferimento a un gruppo di nodi è necessario, ad esempio, per i tempi di percorrenza tra i nodi. Oppure un tale gruppo può essere costituito da tutti i punti di conteggio di un’autostrada.

Il file MAP può anche essere salvato nei dati statici1. Il file MAP segue le proprie regole (ISO/TS 19091:2019).

Dati dinamici

Anche il formato dei dati dinamici (2) si basa su OCIT-C o OCIT-I. Le loro strutture sono definite anche tramite schemi XSD con note su come procedere con i tipi di array in JSON. Pertanto, è possibile generare un formato XML per la loro trasmissione. Tuttavia, la trasmissione vera e propria avviene in JSON.

I dati dinamici non devono contenere informazioni ridondanti, soprattutto per quanto riguarda i dati di alimentazione (ad esempio, i nomi dei valori misurati). I dati dinamici sono ridotti allo stretto necessario per risparmiare capacità di trasmissione e mantenere leggero il contenuto dei telegrammi. Ciò si riflette anche nella scelta dei nomi dei tag e nell’organizzazione delle strutture.

Metadati

I metadati (3) sono i dati dello schema. I file di schema, come i dati statici, possono avere una data di inizio validità. Dovrebbe essere possibile memorizzare e interrogare i file in modo simile ai dati statici.

Indirizzamento logico

Esistono tre livelli gerarchici di indirizzo:

  1. Area,
  2. Nodi,
  3. Tipo e numero di canale.

Anello

La città o un’area che può essere equiparata a una città non è trattata in modo specifico nell’OCIT. Per i sistemi interurbani, a questo scopo si utilizza il “SystemNr” dell’indirizzamento del nodo.

Dichiariamo che l’ID dell’area è obbligatorio in questo caso. Deve essere unico, non solo all’interno di una fonte di dati. Deve essere assegnata da una posizione centrale, se non è stata data implicitamente, in modo che sia unica in tutto il mondo. È alfanumerico. Unicode è autorizzato.

Un’area viene quindi indirizzata utilizzando l’ID dell’area come chiave primaria.

Il nome è solo informativo.

  1. Un’area o una città possono avere più nomi in lingue o trascrizioni diverse.
  2. Non è necessario che ci sia un nome unico, poiché i nomi delle città non devono essere unici. Se un’area o una città ha più nomi in diverse lingue, questi possono essere registrati con abbreviazioni linguistiche diverse, in conformità alla norma ISO 639 o alla RFC 17663 (del tipo “de-CH “4).
  3. Se esiste un nome nella lingua predefinita (DefaultLanguage), questo viene inserito con l’abbreviazione della lingua, che viene poi omessa nel nome predefinito.

Nodo (ferroviario)

  • Il nodo viene solitamente indirizzato tramite un numero unico all’interno di un’area, il numero dell’unità. “Nodo” è il termine tecnico per “nodo stradale”.
  • Ci sono città con lo stesso numero di nodo assegnato più volte. Il numero di nodo è completato da SystemNr e SubsystemNr.
  • Tuttavia, anche l’abbreviazione deve essere chiara.

All’interno di un’area ci sono quindi

  • una chiave primaria costituita dal numero di unità e dai numeri di sistema e sottosistema opzionali (SystemNr e SubsystemNr).

Tipo e numero di canale

Tutti i punti dati all’interno di un nodo (o eventualmente di un’area) sono indirizzati tramite il loro tipo (dati grezzi del rilevatore, valori di intervallo del rilevatore, gruppi di segnali) e il loro numero di canale (ad esempio, rilevatore con numero di canale 2 – “D.2” o gruppo di segnali con numero di canale 3 – “S.3”).

Allo stesso tempo, è possibile assegnare un nome al punto dati, che deve essere unico all’interno del nodo (“DR11.21”). In casi eccezionali, è unico solo all’interno del tipo di dati. Per evitare equivoci, sia l’indirizzamento che il nome sono solitamente preceduti dal numero di unità del nodo: “184.D.2” (forma abbreviata di indirizzamento) e “184.DR11.21” (nome).

  1. Indirizzamento di più valori misurati dello stesso tipo all’interno del nodo
    • I valori misurati sono solitamente indirizzati tecnicamente in OCIT attraverso il numero di unità, il tipo e il numero di canale, ad esempio “184.D.2”.
    • In alternativa, l’indirizzamento può avvenire tramite numero, tipo e nome dell’unità, il che è conveniente in termini di ingegneria del traffico: le postazioni di lavoro degli ingegneri del traffico utilizzano questo tipo di indirizzamento: 184.DR11.21.
  2. Indirizzamento dei valori misurati che esistono solo una volta per tipo
    • L’indirizzamento avviene raramente solo tramite il nodo e il tipo, ad esempio 184.TX (secondo di circolazione) o 184.PrgNr (numero di programma corrente), lo stato operativo o la modalità operativa. Il canale numero 1 è tecnicamente assegnato a questo punto per impostazione predefinita
  3. Indirizzamento dei valori misurati che sono indipendenti dal nodo
    • Anche l’indirizzamento a livello di area è raro, ad esempio per i punti di segnalazione dei sistemi di rilevamento del trasporto pubblico che utilizzano la tecnologia radio beacon. In questo caso, come indirizzo viene utilizzato un valore di 2 byte, che è unico all’interno dell’intero intervallo: 37819.

Valori misurati (JSON)

I valori misurati sono dati dinamici. La loro struttura è registrata nei metadati.

I valori misurati possono essere recuperati periodicamente dal client registrato in JSON via REST. Il raccoglitore di dati interroga tutti i dati correnti una volta all’inizio (“inquireAll”) e poi recupera sempre i dati delta (“get”) a intervalli liberamente definibili. Il numero di destinatari simultanei dipende dal sistema.

Snippet (frammento)

Uno “snippet” è un riassunto dei valori misurati.

  • AreaId è l’indirizzo dell’area.
  • SystemNr, SubsystemNr e UnitNr contengono l’indirizzo di un sistema. UnitNr è obbligatorio, SystemNr e SubsystemNr sono facoltativi, ma possono essere inclusi nell’indirizzamento univoco del nodo insieme a UnitNr.
  • Timestamp indica l’ora dei seguenti valori misurati.
  • Measurement apre il ramo per le misure.

Il ramo “Measurements” contiene i valori misurati. Le strutture sono definite specificamente per ogni tipo.

In questa prima versione C sono definiti i seguenti tipi di valori misurati:

  • Livello di servizio (LOS): livello di qualità per i pedoni, i veicoli a motore o il trasporto pubblico (ad esempio, da “A” a “F”),
    • Il livello di servizio (LOS) può essere utilizzato per i pedoni, i veicoli a motore o il trasporto pubblico. Il LOS è contrassegnato da una lettera per ogni categoria.
      • In un determinato momento, un punto di misura può assumere il valore di una lettera, ad esempio “B”,
      • o può essere trasmesso un gruppo di valori statistici, che indica quale categoria è stata misurata con quale frequenza (in percentuale).
    • La specifica dell’intervallo non può essere rappresentata in JSON in modo così restrittivo come in XSD. È importante che si possa specificare “FixedInterval”, “CycleInterval” o nessun intervallo. I commenti sui tag non sono ripetuti qui: sono nello schema XSD.
    • Esistono due opzioni per il LOS:
      • O viene trasmessa una lettera “Letter”
      • o due matrici di uguale lunghezza vengono trasmesse con “Letters” e “Percentages”

 

  • SpillbackLength: lunghezza dello spillback in metri,
    • Qui viene trasmessa la lunghezza dell’arretrato in metri. Come sempre, può trattarsi di un valore attuale o di un calcolo periodico con durata costante o variabile. Per ogni “Channel” viene trasmessa una “Length”.
    • Anche in questo caso, è possibile trasmettere una singola coppia di valori “Channel” e “Length” oppure due array di “Channels” e “Lengths” di uguale lunghezza.

 

  • Percentuale verde: percentuale di verde rispetto al tempo totale disponibile,
    • In questo caso, la componente verde di un gruppo di segnali viene trasmessa come percentuale del tempo totale disponibile. Anche in questo caso, può trattarsi di un valore attuale o di un calcolo periodico con durata costante o variabile. Per ogni “Channel” viene trasmessa una cifra percentuale “Percentage”.
    • Anche in questo caso, è possibile trasmettere una singola coppia di valori “Channel” e “Percentage” oppure due array di uguale lunghezza “Channels” e “Percentages”.

 

  • ODCount: carichi sorgente-target,
    • In questo caso, i valori dei contatori vengono trasmessi per ogni sorgente (Origin) e destinazione (Destination). Può essere un valore attuale o un calcolo periodico con durata costante o variabile. Per ogni “Channel” viene trasmesso un valore di “Count”.
    • Anche in questo caso, è possibile trasmettere una singola coppia di valori “Channel” e “Count” oppure due array di “Channels” e “Counts” di uguale lunghezza.

 

  • DriveAwayHeadway: valore del requisito temporale, determinato al momento della partenza.
    • Lo scarto temporale tra due veicoli è chiamato scarto temporale lordo. Quando ci si allontana dopo un semaforo rosso, viene utilizzato anche il valore del tempo richiesto. È il tempo che intercorre tra due veicoli consecutivi. La capacità massima di un incrocio dipende dal valore del requisito temporale e da questo si possono determinare anche le vie di accesso critiche.
    • Il valore del requisito temporale viene determinato in funzione della posizione dei veicoli nel convoglio in avvicinamento. I valori dei singoli veicoli possono essere elencati in sequenza alla voce “Durata”. È inoltre possibile calcolare un valore medio dei requisiti temporali. Viene trasmessa in “MeanDuration”, preceduta dai dettagli di “Duration” o da sola, come evento o come risultato di un calcolo su un intervallo.

 

È possibile trasmettere eventi o dati statistici.

  • Se nei dati di misura non è specificato alcun intervallo, si tratta del valore attualmente misurato.
  • Se viene specificato un “FixedInterval”, si tratta di un valore statistico determinato con una periodicità costante.
  • Se viene specificato un “CycleInterval”, si tratta di un valore statistico che viene determinato “per ciclo”, di solito all’inizio del rosso. Tali intervalli di solito non hanno una lunghezza costante.

I dati di misura sono

  • tramite il tipo di valore misurato
  • e si rivolge al canale

o si trovano sotto la fornitura.

Swagger

Ulteriori informazioni sull’argomento degli snippet si trovano nello schema JSON o direttamente nel frame swagger sottostante.