Data collection & processing

Drone-based observations

Drone Icon

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

Zurich locations map 01 02 03 04 05 06 07 08 09 10 11 12 13

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]

Location 2 aerial view, colored
Location 2 aerial view with bike lane annotations

Maps

Dates and time periods

June 16 and 17, 2025 (morning and evening peaks)

Number of episodes

24

Experiment type

Natural observation

Description

LegStreet nameBoundCar lane numberCycling infrastructure
NorthKasernenstrasseS2Painted (1.0 m)
N0Dedicated (2.75 m)
EastGessnerbrückeW0Pedestrian-shared
E1Dedicated (2.5 m)
SouthKasernenstrasseN1Dedicated (3.5 m)
S1Painted (1.5 m)
WestLagerstrasseE2Painted (1.5 m)
W1Painted (1.5 m)

Location 3 aerial view, colored
Location 3 aerial view with bike lane annotations

Maps

Dates and time periods

June 16 and 17, 2025 (morning and evening peaks)

Number of episodes

24

Experiment type

Natural observation

Description

LegStreet nameBoundCar lane numberCycling infrastructure
NorthGessneralleeS2Mixed
EastUsteristrasseE1Mixed
SouthGessneralleeS2Pedestrian-shared
WestGessnerbrückeE1Dedicated (2.5 m)
W0Pedestrian-shared

Location 4 aerial view, colored
Location 4 aerial view with bike lane annotations

Maps

Dates and time periods

June 16 and 17, 2025 (morning and evening peaks)

Number of episodes

24

Experiment type

Natural observation

Description

LegStreet nameBoundCar lane numberCycling infrastructure
NorthLangstrasseS1Mixed (painted near the stop line)
N1Mixed
EastZollstrasseW0Dedicated with parking box (2.0 m)
E1Mixed
SouthLangstrasseN2Painted (2.5 m)
S1Painted (2.5 m)
WestRöntgenstrasseE1Painted (1.5 m)
W1Painted (1.5 m)
North (extra)MattengasseS1Mixed
N0Painted (1.2 m)

Location 5 aerial view with bike lane annotations

Maps

Dates and time periods

June 16 and 17, 2025 (morning and evening peaks)

Number of episodes

24

Experiment type

NA

Description

LegStreet nameBoundCar lane numberCycling infrastructure
NorthAckerstrasseS0
N1Mixed
EastZollstrasseW0Dedicated (2.0 m)
E1Mixed
WestZollstrasseE1Mixed
W0Dedicated (2.0 m)

Location 6 aerial view with bike lane annotations

Maps

Dates and time periods

September 29, 2025 (morning peak)

Number of episodes

6

Experiment type

NA

Description

LegStreet nameBoundCar lane numberCycling infrastructure
NorthQuaibrückeS
N
EastQuaibrückeW
E
SouthQuaibrückeN
S
WestQuaibrückeE
W

Location 7 aerial view with bike lane annotations

Maps

Dates and time periods

September 29, 2025 (morning peak)

Number of episodes

6

Experiment type

NA

Description

LegStreet nameCar lane numberCycling infrastructure
North (SB)
North (NB)
East (WB)
East (EB)
South (NB)
South (SB)
West (EB)
West (WB)

Location 8 aerial view, colored
Location 8 aerial view with bike lane annotations

Maps

Dates and time periods

September 29, 2025 (evening peak)

Number of episodes

6

Experiment type

Natural observation

Description

LegStreet nameBoundCar lane numberCycling infrastructure
NorthDuttweilerbrückeS2 + 1 right-turnPainted with parking box (1.5 m, pedestrian-shared at the start, downhill)
N1Painted (1.5 m, uphill)
EastHohlstrasseW2Painted with parking box (1.5 m)
E1Mixed
SouthHerdernstrasseN1Painted (1.5 m)
S1Mixed
WestHohlstrasseE2Painted (1.5 m)
W1Mixed

Location 9 aerial view, colored
Location 9 aerial view with bike lane annotations

Maps

Dates and time periods

September 29, 2025 (evening peak)

Number of episodes

6

Experiment type

Natural observation

Description

LegStreet nameBoundCar lane numberCycling infrastructure
NorthHerdernstrasseS1Painted (1.5 m)
N1Painted (1.5 m)
EastBullingerstrasseW0Dedicated (3.0 m)
E0Dedicated (3.5 m)
SouthHerdernstrasseN1Painted (1.2 m)
S1Painted (1.2 m)
WestBaslerstrasseE1Painted (1.8 m)
W1Painted (1.8 m)

Location 10 aerial view, colored
Location 10 aerial view with bike lane annotations

Maps

Dates and time periods

September 30, 2025 (morning peak)

Number of episodes

6

Experiment type

Natural observation

Description

LegStreet nameBoundCar lane numberCycling infrastructure
NorthGutstrasseS2Mixed (painted near the stop line)
N1Painted (1.5 m)
EastBirmensdorferstrasseW2Painted (1.5 m)
E1Painted (1.5 m)
SouthTalwiesenstrasseN0Pedestrian-shared
S1Mixed
WestBirmensdorferstrasseE1Painted (1.5 m)
W1Painted (1.5 m)

Location 11 aerial view, colored
Location 11 aerial view with bike lane annotations

Maps

Dates and time periods

September 30, 2025 (morning peak)

Number of episodes

6

Experiment type

Natural observation

Description

LegStreet nameBoundCar lane numberCycling infrastructure
NorthSchaufelbergerstrasseS1Mixed
N1Mixed
EastBirmensdorferstrasseW2Painted (1.5 m)
E1Painted (1.5 m)
SouthSchweighofstrasseN1Painted with parking box (1.5 m)
S1Mixed
WestBirmensdorferstrasseE2Painted with parking box (1.5 m)
W2 (merging into 1)Painted (1.5 m)

Location 12 aerial view, colored
Location 12 aerial view with bike lane annotations

Maps

Dates and time periods

September 30, 2025

Number of episodes

3

Experiment type

Natural observation with recruited cyclists without instructions

Description

LegStreet nameBoundCar lane numberCycling infrastructure
NorthFreihofstrasseS1Mixed
N1Mixed
EastBaslerstrasseW1Painted (2.0 m)
E1Painted (2.0 m)
SouthFreihofstrasseN1Mixed
S1Mixed
WestBaslerstrasseE0Dedicated (4.5 m)
W1Painted (2.0 m)

Location 13 aerial view, colored
Location 13 aerial view with bike lane annotations

Maps

Dates and time periods

September 30, 2025

Number of episodes

3

Experiment type

Natural observation with recruited cyclists without instructions

Description

LegStreet nameBoundCar lane numberCycling infrastructure
NorthFlurstrasseS1Mixed
N1Mixed
EastBaslerstrasseW1Painted with parking box (2.5 m)
E0Dedicated (4.0 m)
SouthFlurstrasseN1Mixed
S1Mixed
WestBaslerstrasseE1Dedicated (3.0 m, mixed with buses)
W0Dedicated (3.0 m, mixed with buses)

Data format

Applies to Locations 2–13.

FieldDescription
veh_idUnique vehicle identifier
veh_typeBike, Car, or Bus (Tram)
datetimeGlobal timestamp string
timeTime (in seconds) from when the drone started recording, on a uniform 0.1 s grid

Absolute filtered coordinates

FieldDescription
x_act_ekf; y_act_ekfCubic-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_ekfCubic-spline-interpolated EKF-smoothed X and Y offset positions (meters)
lon_ekf; lat_ekfLongitude and latitude of the interpolated EKF position, reprojected from EPSG:2056 to EPSG:4326
speed_ekfLinearly interpolated EKF-smoothed speed (km/h), clamped ≥ 0
a_ekfLinearly interpolated EKF-smoothed acceleration (m/s2)
angle_ekfLinearly interpolated EKF-estimated heading angle (rad), wrapped to (-π, π]
angular_vel_ekfLinearly interpolated EKF-estimated angular velocity (rad/s)

Directed lane coordinates

FieldDescription
movement_keyNamed movement the vehicle was assigned to, e.g. 'Roentgenstr_EB_2_LangstrN_NB'
segment_idKey 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_roleRole within the movement, including 'approach', 'turn', or 'departure'
match_qualityQuality 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_nativeArc-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_nativeSigned lateral offset from the spline centerline (meters), positive = left of positive spline direction, invariant to travel direction
sArc-length along the segment centerline in the travel direction (meters), starting at 0 at segment entry and increasing monotonically under normal forward travel
dSigned lateral offset from the centerline in the travel direction (meters), positive = left of travel direction, negative = right
s_dotLongitudinal speed (km/h) — component of velocity along the centerline, positive = forward travel
d_dotLateral speed (km/h) — component of velocity along the centerline, positive = moving left of travel direction, negative = moving right
s_ddotLongitudinal acceleration along the centerline (m/s2), positive = accelerating forward, negative = braking
d_ddotLateral acceleration perpendicular to the centerline (m/s2), non-zero during lane changes or cornering

Flags and diagnostics

FieldDescription
in_bike_lane'1' if the lateral position falls within the dedicated bike lane boundary, '0' if outside
d_to_bike_boundarySigned 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.