Torna al blog BIM i IFC
Bessons digitals · 2026-10-10 · 9 min
Autobusos en viu en un model IFC: un bessó digital d'una terminal d'autobusos amb MQTT
A la terminal d'Elielinaukio, al costat de l'estació central d'Hèlsinki, cada dàrsena d'un model IFC s'il·lumina quan hi para un autobús real, amb el número de línia a sobre. Les dades provenen del feed MQTT públic d'HSL, que el navegador rep directament.
L'estació central d'Hèlsinki i la terminal d'autobusos d'Elielinaukio com a models IFC sobre el mapa 3D, amb els números de línia d'autobús en viu flotant sobre les dàrsenes
Una terminal d'autobusos és una bona prova per a un bessó digital, perquè el que hi passa canvia de minut en minut. Disset dàrsenes, autobusos que entren i surten, portes que s'obren i es tanquen. Si el model ho pot mostrar en viu, a partir de dades públiques, pot mostrar la majoria de coses.
Aquesta escena ho fa per a Elielinaukio, la terminal del costat oest de l'estació central d'Hèlsinki. Cada dàrsena del model IFC s'il·lumina mentre hi para un autobús real, amb el número de línia flotant a sobre. Les posicions vénen d'HSL, l'autoritat de transport d'Hèlsinki, que publica la posició de cada vehicle aproximadament un cop per segon per MQTT, i el navegador s'hi subscriu directament.
L’essencial
- MQTT sobre WebSocket permet que una pàgina web rebi posicions de vehicles en viu sense cap servidor propi pel mig, sempre que el broker ho permeti. El d'HSL ho permet.
- Subscriu-te de manera estreta. Una porció geogràfica de l'arbre de temes fa que al navegador només arribin els autobusos de la terminal.
- Les dàrsenes es vinculen als identificadors de parada de l'operador de transport, i els colors segueixen regles sobre camps del missatge: portes obertes, aturat, en moviment o sense autobús.
- Els models federats es mantenen alineats quan cada model satèl·lit es gira segons la seva pròpia georeferència. Aquí, el marc de la Catedral està 3° desviat respecte del de la terminal.
Prova-ho: els autobusos d'Hèlsinki, ara
Obre la terminal, l'estació i la Catedral al mapa. Les dàrsenes s'il·luminen a mesura que arriben autobusos reals. De nit n'hi ha pocs, de manera que les dàrsenes queden en gris durant llargs períodes.

Obre el visor IFC interactiu
Què estàs veient
Tres models IFC georeferenciats (ETRS89 / GK25, EPSG:3879) sobre la ciutat d'OpenStreetMap: l'Estació Central d'Eliel Saarinen amb les seves andanes, la Catedral de la plaça del Senat i la terminal d'autobusos amb les seves 17 dàrsenes (de la 20 a la 36), pals, senyals i marquesina. Dues capes en viu de l'Institut Meteorològic Finlandès mostren la qualitat de l'aire i la meteorologia.
Les dàrsenes mentre els autobusos van i vénen: cada pal i cada senyal pren el color del que fa l'autobús d'aquella parada.
| Color de la dàrsena | Regla sobre el missatge d'HSL | Significat |
|---|
| Verd | portes obertes (drst = 1) | Pujada de passatgers |
| Blau | velocitat inferior a 0.5 m/s | Aturat a la dàrsena |
| Ambre | qualsevol altra lectura a la parada | Entrant o sortint |
| Gris | cap lectura en 45 s | Cap autobús |
Guanya la primera regla que coincideix. El número de línia (desi) flota sobre la dàrsena.
Per què MQTT i no GTFS-Realtime
GTFS-Realtime és el format habitual per a les dades de transport públic en viu, i HSL el publica. Però aquest feed no envia les capçaleres CORS que un navegador necessita per llegir-lo des d'un altre lloc, de manera que fer-lo servir obligaria a mantenir un proxy. El feed de posicionament d'alta freqüència és diferent: és MQTT sobre WebSocket, públic, sense clau i accessible des de qualsevol pàgina web.
També és més ric per a aquest propòsit. Cada missatge és un autobús, aproximadament un cop per segon, amb la seva línia, velocitat, estat de les portes i la parada on és[hfp]. El tema indica on és l'autobús, de manera que una subscripció es pot limitar a una porció de la ciutat:
/hfp/v2/journey/ongoing/vp/bus/+/+/+/+/+/+/+/+/60;24/19/73/#
La subscripció nivell per nivell: cada + accepta qualsevol valor, i el geohash restringeix el flux a la cel·la que envolta la terminal.
L'última part, 60;24/19/73, és una cel·la de la quadrícula geogràfica d'HSL al voltant de la terminal. El navegador rep els autobusos d'aquesta cel·la i res més. Llegeix els missatges un cop per segon i es queda amb el més recent per parada. Un autobús entre parades, sense cap parada al missatge, s'ignora.
D'un identificador de parada a una dàrsena
HSL identifica les parades per número, i el model IFC per nom. La llista de parades que publica HSL uneix les dues coses: nou de les disset dàrsenes tenen avui una parada d'HSL, i cadascuna és una vinculació. Els elements es troben pel nom, «Bay 20» i així successivament. Això troba el pal i els tres senyals de cada dàrsena.
| Dàrsena | Identificador de parada d'HSL |
|---|
| 20 | 1020128 |
| 22 | 1020131 |
| 23 | 1020133 |
| 24 | 1020135 |
| 25 | 1020132 |
| 26 | 1020239 |
| 28 | 1020243 |
| 29 | 1020245 |
| 30 | 1020130 |
De la llista de parades GTFS d'HSL, llegida un cop quan es va escriure l'escena. Les altres vuit dàrsenes no tenen parada i queden en gris.
La fitxa d'una dàrsena de nit: sense autobús a la dàrsena, la secció en viu ho diu en lloc de mostrar una lectura antiga, al costat de les dades IFC del pal.
{
"id": "hsl-hfp-elielinaukio",
"url": "wss://mqtt.hsl.fi:443/",
"topics": ["/hfp/v2/journey/ongoing/vp/bus/+/+/+/+/+/+/+/+/60;24/19/73/#"],
"mapping": { "idField": "VP.stop", "timeField": "VP.tst" }
}
Aquesta font de dispositius és tot el que cal per llegir una altra flota o una altra zona: un broker que parli MQTT sobre WebSocket, els temes i quin camp del missatge identifica el dispositiu. La resta de l'escena es manté igual.
Qualitat de l'aire i meteorologia
Les dues capes del mapa provenen de les dades obertes de l'Institut Meteorològic Finlandès[fmi], llegides al navegador com a simples entitats WFS: 11 estacions de qualitat de l'aire i 7 estacions meteorològiques al voltant de la ciutat quan ho vam comprovar. La qualitat de l'aire és horària i pot arribar fins a 40 minuts tard; la meteorologia, cada 10 minuts.
Tres models, un sol mapa
L'estació, la Catedral i la terminal són fitxers separats, i cadascun porta la seva pròpia georeferència. Els eixos locals de la Catedral estan girats 3° respecte dels de la terminal, que és la que ancora el mapa. Si el visor només mogués els altres models al seu lloc sense girar-los, la Catedral quedaria 3° torta, uns 2 m desplaçada a les cantonades.
El visor gira cada model segons el seu propi marc, al voltant del seu propi centre. Mesurades respecte del contorn de la Catedral a OpenStreetMap, les parets queden ara a 0,56 m i amb 0,37° de desviació. Aquest residu és la precisió amb què el model i OSM dibuixen, cadascun, l'edifici.
Límits que val la pena dir en veu alta
- Els models són il·lustratius, dibuixats a partir de fonts públiques. No són aixecaments topogràfics.
- Només nou dàrsenes tenen una parada d'HSL, de manera que les altres vuit no s'il·luminen mai.
- De nit circulen pocs autobusos, i les dàrsenes queden en gris durant llargs períodes.
- El terreny global d'aquí es llegeix uns 18 m per sobre del sistema d'altures finlandès, de manera que els models se situen sobre la superfície del terreny i no a les altures que declaren. Les altures d'uns respecte dels altres es conserven.
- Una pestanya en segon pla rep els missatges amb menys freqüència, perquè els navegadors alenteixen els temporitzadors a les pestanyes amagades.
El mateix format d'escena mou una plaça de ciutat a partir de dades de bicicletes compartides i de recàrrega al bessó de dades obertes de Barcelona, i dues estacions de Tòquio a partir de dades de trens i tramvies a bessons de transport de Tòquio amb ODPT. Per a un bessó alimentat per un sensor en lloc d'un feed de transport, mira LiDAR en temps real en un bessó digital web.
Referències
- Posicionament d'alta freqüència — Digitransit (HSL). Els temes MQTT i els camps de missatge que fa servir la terminal.
- Dades obertes — Finnish Meteorological Institute. Observacions de qualitat de l'aire i de meteorologia, llegides aquí com a simples entitats WFS.
Autobusos en viu en un model IFC: un bessó digital d'una terminal d'autobusos amb MQTT