Data collection & processing
Drone-based observations
High-resolution cycling and vehicle trajectories were collected via drone-based observations in collaboration with MobiLysis at thirteen locations in the city of Zurich, Switzerland. Every filming episode contains around 20-minute of observation over a 160 m × 90 m area. The data were filtered and transformed into lane-based coordinates to facilitate further analysis. In addition, we reconstructed the trajectories into animations, establishing a data-driven digital twin of the observed vehicle and bicycle movements.
Sign up & download
Get the data by signing up and agreeing to our conditions.
Map of the City of Zurich
Location details
Maps
Dates and time periods
NA
Number of episodes
NA
Experiment type
Controlled
Description
This dataset presents aerial video recordings and trajectory data collected during a controlled mass-cycling experiment during the Cycling Research Board Annual Meeting in Zürich on 06th September 2024 at Hönggerberg Campus of ETH Zürich. 28 cyclists were recorded for a total duration of 30 minutes with a drone from above, and bicycle trajectories were extracted using computer vision and Kalman filtering methodology. As part of the controlled experiment, the number of simultaneous cyclists on the circular track varied between 6 and 22, two lane widths were tested (2.5 and 3.75m), and the flow was disrupted several times to observe acceleration and deacceleration manoeuvres.
The folder VIDEOS contains nine video recordings covering a duration of around half an hour (30:07) and 45,175 frames in total, at a framerate of 25 frames per second, and with a resolution of 3840 x 2160 pixels. The videos show more than 30 bicycles riding on the circular track of the Albert Einstein Garage at ETH Zürich Campus Hönggerberg (Zürich, Switzerland) during various experiments. The videos are provided in MP4 format.
The folder TRAJECTORIES contains the trajectories for each video, sequence, bicycle, and frame an exact bicycle position. The bicycle trajectories are provided as zipped CSV files, separated by the comma symbol.
The first six videos (3,4,5,7,8,9) have the lane width of 2.5 m, while the last three videos (10,11,12) have the lane width of 3.75 m.
Data format
(1) Vehicle_ID (2) Frame_ID (3) GlobalTime [second] (4) Cartesian_X [meter] (5) Cartesian_Y [meter] (6) Polar_X [radian] (7) Polar_Y [meter] (8) v_Length [meter] (9) v_Width [meter] (10) v_Vel [m/s] (11) v_Angle [radian] (12) v_AngleVel [rad/s]
Maps
Dates and time periods
June 16 and 17, 2025 (morning and evening peaks)
Number of episodes
24
Experiment type
Natural observation
Description
| Leg | Street name | Bound | Car lane number | Cycling infrastructure |
|---|---|---|---|---|
| North | Kasernenstrasse | S | 2 | Painted (1.0 m) |
| N | 0 | Dedicated (2.75 m) | ||
| East | Gessnerbrücke | W | 0 | Pedestrian-shared |
| E | 1 | Dedicated (2.5 m) | ||
| South | Kasernenstrasse | N | 1 | Dedicated (3.5 m) |
| S | 1 | Painted (1.5 m) | ||
| West | Lagerstrasse | E | 2 | Painted (1.5 m) |
| W | 1 | Painted (1.5 m) |
Maps
Dates and time periods
June 16 and 17, 2025 (morning and evening peaks)
Number of episodes
24
Experiment type
Natural observation
Description
| Leg | Street name | Bound | Car lane number | Cycling infrastructure |
|---|---|---|---|---|
| North | Gessnerallee | S | 2 | Mixed |
| East | Usteristrasse | E | 1 | Mixed |
| South | Gessnerallee | S | 2 | Pedestrian-shared |
| West | Gessnerbrücke | E | 1 | Dedicated (2.5 m) |
| W | 0 | Pedestrian-shared |
Maps
Dates and time periods
June 16 and 17, 2025 (morning and evening peaks)
Number of episodes
24
Experiment type
Natural observation
Description
| Leg | Street name | Bound | Car lane number | Cycling infrastructure |
|---|---|---|---|---|
| North | Langstrasse | S | 1 | Mixed (painted near the stop line) |
| N | 1 | Mixed | ||
| East | Zollstrasse | W | 0 | Dedicated with parking box (2.0 m) |
| E | 1 | Mixed | ||
| South | Langstrasse | N | 2 | Painted (2.5 m) |
| S | 1 | Painted (2.5 m) | ||
| West | Röntgenstrasse | E | 1 | Painted (1.5 m) |
| W | 1 | Painted (1.5 m) | ||
| North (extra) | Mattengasse | S | 1 | Mixed |
| N | 0 | Painted (1.2 m) |
Maps
Dates and time periods
June 16 and 17, 2025 (morning and evening peaks)
Number of episodes
24
Experiment type
NA
Description
| Leg | Street name | Bound | Car lane number | Cycling infrastructure |
|---|---|---|---|---|
| North | Ackerstrasse | S | 0 | — |
| N | 1 | Mixed | ||
| East | Zollstrasse | W | 0 | Dedicated (2.0 m) |
| E | 1 | Mixed | ||
| West | Zollstrasse | E | 1 | Mixed |
| W | 0 | Dedicated (2.0 m) |
Maps
Dates and time periods
September 29, 2025 (morning peak)
Number of episodes
6
Experiment type
NA
Description
| Leg | Street name | Bound | Car lane number | Cycling infrastructure |
|---|---|---|---|---|
| North | Quaibrücke | S | ||
| N | ||||
| East | Quaibrücke | W | ||
| E | ||||
| South | Quaibrücke | N | ||
| S | ||||
| West | Quaibrücke | E | ||
| W |
Maps
Dates and time periods
September 29, 2025 (morning peak)
Number of episodes
6
Experiment type
NA
Description
| Leg | Street name | Car lane number | Cycling infrastructure |
|---|---|---|---|
| North (SB) | |||
| North (NB) | |||
| East (WB) | |||
| East (EB) | |||
| South (NB) | |||
| South (SB) | |||
| West (EB) | |||
| West (WB) |
Maps
Dates and time periods
September 29, 2025 (evening peak)
Number of episodes
6
Experiment type
Natural observation
Description
| Leg | Street name | Bound | Car lane number | Cycling infrastructure |
|---|---|---|---|---|
| North | Duttweilerbrücke | S | 2 + 1 right-turn | Painted with parking box (1.5 m, pedestrian-shared at the start, downhill) |
| N | 1 | Painted (1.5 m, uphill) | ||
| East | Hohlstrasse | W | 2 | Painted with parking box (1.5 m) |
| E | 1 | Mixed | ||
| South | Herdernstrasse | N | 1 | Painted (1.5 m) |
| S | 1 | Mixed | ||
| West | Hohlstrasse | E | 2 | Painted (1.5 m) |
| W | 1 | Mixed |
Maps
Dates and time periods
September 29, 2025 (evening peak)
Number of episodes
6
Experiment type
Natural observation
Description
| Leg | Street name | Bound | Car lane number | Cycling infrastructure |
|---|---|---|---|---|
| North | Herdernstrasse | S | 1 | Painted (1.5 m) |
| N | 1 | Painted (1.5 m) | ||
| East | Bullingerstrasse | W | 0 | Dedicated (3.0 m) |
| E | 0 | Dedicated (3.5 m) | ||
| South | Herdernstrasse | N | 1 | Painted (1.2 m) |
| S | 1 | Painted (1.2 m) | ||
| West | Baslerstrasse | E | 1 | Painted (1.8 m) |
| W | 1 | Painted (1.8 m) |
Maps
Dates and time periods
September 30, 2025 (morning peak)
Number of episodes
6
Experiment type
Natural observation
Description
| Leg | Street name | Bound | Car lane number | Cycling infrastructure |
|---|---|---|---|---|
| North | Gutstrasse | S | 2 | Mixed (painted near the stop line) |
| N | 1 | Painted (1.5 m) | ||
| East | Birmensdorferstrasse | W | 2 | Painted (1.5 m) |
| E | 1 | Painted (1.5 m) | ||
| South | Talwiesenstrasse | N | 0 | Pedestrian-shared |
| S | 1 | Mixed | ||
| West | Birmensdorferstrasse | E | 1 | Painted (1.5 m) |
| W | 1 | Painted (1.5 m) |
Maps
Dates and time periods
September 30, 2025 (morning peak)
Number of episodes
6
Experiment type
Natural observation
Description
| Leg | Street name | Bound | Car lane number | Cycling infrastructure |
|---|---|---|---|---|
| North | Schaufelbergerstrasse | S | 1 | Mixed |
| N | 1 | Mixed | ||
| East | Birmensdorferstrasse | W | 2 | Painted (1.5 m) |
| E | 1 | Painted (1.5 m) | ||
| South | Schweighofstrasse | N | 1 | Painted with parking box (1.5 m) |
| S | 1 | Mixed | ||
| West | Birmensdorferstrasse | E | 2 | Painted with parking box (1.5 m) |
| W | 2 (merging into 1) | Painted (1.5 m) |
Maps
Dates and time periods
September 30, 2025
Number of episodes
3
Experiment type
Natural observation with recruited cyclists without instructions
Description
| Leg | Street name | Bound | Car lane number | Cycling infrastructure |
|---|---|---|---|---|
| North | Freihofstrasse | S | 1 | Mixed |
| N | 1 | Mixed | ||
| East | Baslerstrasse | W | 1 | Painted (2.0 m) |
| E | 1 | Painted (2.0 m) | ||
| South | Freihofstrasse | N | 1 | Mixed |
| S | 1 | Mixed | ||
| West | Baslerstrasse | E | 0 | Dedicated (4.5 m) |
| W | 1 | Painted (2.0 m) |
Maps
Dates and time periods
September 30, 2025
Number of episodes
3
Experiment type
Natural observation with recruited cyclists without instructions
Description
| Leg | Street name | Bound | Car lane number | Cycling infrastructure |
|---|---|---|---|---|
| North | Flurstrasse | S | 1 | Mixed |
| N | 1 | Mixed | ||
| East | Baslerstrasse | W | 1 | Painted with parking box (2.5 m) |
| E | 0 | Dedicated (4.0 m) | ||
| South | Flurstrasse | N | 1 | Mixed |
| S | 1 | Mixed | ||
| West | Baslerstrasse | E | 1 | Dedicated (3.0 m, mixed with buses) |
| W | 0 | Dedicated (3.0 m, mixed with buses) |
Data format
Applies to Locations 2–13.
| Field | Description |
|---|---|
veh_id | Unique vehicle identifier |
veh_type | Bike, Car, or Bus (Tram) |
datetime | Global timestamp string |
time | Time (in seconds) from when the drone started recording, on a uniform 0.1 s grid |
Absolute filtered coordinates
| Field | Description |
|---|---|
x_act_ekf; y_act_ekf | Cubic-spline-interpolated EKF-smoothed X and Y positions (meters) in EPSG:2056 projected coordinate system, where x_act_ekf = x_ekf + x_offset |
x_ekf; y_ekf | Cubic-spline-interpolated EKF-smoothed X and Y offset positions (meters) |
lon_ekf; lat_ekf | Longitude and latitude of the interpolated EKF position, reprojected from EPSG:2056 to EPSG:4326 |
speed_ekf | Linearly interpolated EKF-smoothed speed (km/h), clamped ≥ 0 |
a_ekf | Linearly interpolated EKF-smoothed acceleration (m/s2) |
angle_ekf | Linearly interpolated EKF-estimated heading angle (rad), wrapped to (-π, π] |
angular_vel_ekf | Linearly interpolated EKF-estimated angular velocity (rad/s) |
Directed lane coordinates
| Field | Description |
|---|---|
movement_key | Named movement the vehicle was assigned to, e.g. 'Roentgenstr_EB_2_LangstrN_NB' |
segment_id | Key of the matched segment within the movement, e.g. 'Roentgenstr_EB', 'LangstrN_NB', or 'turn_Roentgenstr_EB_2_LangstrN_NB' |
segment_type | 'lane' or 'turn' |
segment_role | Role within the movement, including 'approach', 'turn', or 'departure' |
match_quality | Quality of the polygon-based match: 'good', 'poor', 'fallback', 'forced', 'unmatched' |
is_fallback | 'True' when the polygon match started mid-fragment rather than from the fragment start, indicating the trajectory may have entered the scene already on this segment |
is_reverse | 'True' when the vehicle is traversing the segment against its registered positive direction, e.g. riding westbound on an eastbound segment |
s_native | Arc-length along the segment spline (meters), always in the spline's positive direction, ranging from 0 to L (total spline length), invariant to travel direction |
d_native | Signed lateral offset from the spline centerline (meters), positive = left of positive spline direction, invariant to travel direction |
s | Arc-length along the segment centerline in the travel direction (meters), starting at 0 at segment entry and increasing monotonically under normal forward travel |
d | Signed lateral offset from the centerline in the travel direction (meters), positive = left of travel direction, negative = right |
s_dot | Longitudinal speed (km/h) — component of velocity along the centerline, positive = forward travel |
d_dot | Lateral speed (km/h) — component of velocity along the centerline, positive = moving left of travel direction, negative = moving right |
s_ddot | Longitudinal acceleration along the centerline (m/s2), positive = accelerating forward, negative = braking |
d_ddot | Lateral acceleration perpendicular to the centerline (m/s2), non-zero during lane changes or cornering |
Flags and diagnostics
| Field | Description |
|---|---|
in_bike_lane | '1' if the lateral position falls within the dedicated bike lane boundary, '0' if outside |
d_to_bike_boundary | Signed distance from the vehicle to the near edge of the bike lane boundary in native spline coordinates, negative = vehicle is inside the bike lane (closer to centerline than the boundary), positive = outside |
Registry map
The registry maps contain details regarding the data post-processing, including stop lines, bike lane boundaries, movement centerlines at the intersection(s).
Replicated animation
Due to privacy concerns, we decided not to publish the recorded videos although they were recorded from a sufficiently high distance above ground. Alternatively, the filtered trajectories are replicated as time-stamped animations, providing a visual equivalent of the raw footage without exposing identifiable information.