DoveBus

How it works

From the vehicle to the map

A dot on DoveBus is not a camera pointed at a bus. It is the last thing that bus transmitted, passed through three sets of hands before it reached your screen. Here is whose, how long it takes, and what is lost along the way.

The journey of one position.

Four steps, and each one adds delay. The timings below are measured against the real feed, not estimated.

  1. The vehicle transmits its position

    The on-board equipment tells the operator where it is, which trip it is running and how far along the route it has got. We do not see this step: it begins and ends inside Autolinee Toscane's own systems.

  2. Regione Toscana publishes the open feed

    The positions end up in a public file in GTFS-RT format, together with delays and cancelled trips. Every publication is a complete photograph of the fleet, not a partial update — and it is retaken roughly every two minutes. It is open data: the feed's address and its licence are here.

  3. DoveBus re-reads it and joins it to the timetable

    A single process downloads the feed every 30 seconds — any more often and it would be re-downloading identical positions — and links each vehicle to its trip in the official timetable, to know which line it is, where it is meant to go and which road it should take. The join succeeds for 96.6% of the trips under way.

    Every 30 s · no request ever goes upstream from here
  4. The browser draws it and states its age

    The map asks only for the vehicles in the part of Tuscany you are looking at, draws them, and next to each one keeps count of the seconds since its last data. The count does not stop: if the feed stalls, you can see on screen that it has stalled.

What is measured and what is estimated.

The difference is the point of the whole project, and on screen the two are never confused.

Measured
The GPS position the vehicle transmitted, the exact time it transmitted it, the delay the operator reported, the cancellation of a trip, the occupancy declared. The positions genuinely received stay drawn on the map as distinct marks.
Estimated
Everything between one data point and the next. The vehicle is advanced along its published route at the speed it was travelling, so that it does not sit still for two minutes and then jump. The estimate is declared: the live trip view says how far the dot has been moved, and a circle shows how far off it could be.
Reconstructed
The stretch already travelled. The positions received are laid onto the trip's official shape — they fall on the published road within a few metres — and the trail follows the road instead of cutting a straight line between one data point and the next, which on a Tuscan back road can mean going through a hill.
Never invented
If a vehicle has been silent for more than five minutes, the estimate stops being extended and the vehicle leaves the map. The age keeps being stated honestly beyond that point too; what stops is the guessing.

The limits, told in full.

None of these is a fault. They are properties of the data the project works with, and knowing they exist changes how the map should be read.

A position arrives already about two minutes old

The regional feed regenerates every ~120 seconds, so even the freshest data we can have is already that old. In practice a position lives between 2 and 5 minutes before it is replaced. The “live” band (0–90 seconds) exists in the code and never lights up today: it stays there for the day publication becomes faster.

About 3% of the trips under way are not in the timetable

These are services the operator puts on the road without them appearing in the day's official timetable. DoveBus shows them anyway — hiding them would be worse — but for those trips it may not know the planned route or the list of stops.

Not every trip has a delay figure

Roughly nine trips under way out of ten carry one. For the others we do not write “on time” to fill the space: we write nothing.

The official timetable changes without warning

The timetable file is replaced upstream, often well before the expiry date it declares. DoveBus notices from the contents of the file rather than from the date written inside it, and reloads when it genuinely changes — and also when it notices that the loaded timetable no longer describes the fleet it can see on the road.

A stationary vehicle may be stopped, or silent

The data cannot tell a bus in a queue from a bus that has stopped transmitting. That is why the age next to a vehicle matters more than its position: a dot carrying 4 minutes is saying something different from one carrying 2.

The numbers on this page are measured against the real feed, not estimated, and they change when the feed changes. Last updated: .

Watch it at work.

Everything written here is visible on the map while you use it: the age, the estimate, the uncertainty.

Open the map