Data collection & processing

BikeZ large logo

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

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]

More information

https://github.com/DerKevinRiehl/mass_cycling_experiment

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
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

Natural observation

Description

This location is in an area of 30km/h speed limit (tempo 30) with a small roundabout and an unsignalized T-junction. There is a 2.0-m-wide painted bike lane in the westbound direction of Zollstrasse.

Location 6 aerial view with bike lane annotations
Location 6 aerial view with bike lane annotations

Maps

Dates and time periods

September 29, 2025 (morning peak)

Number of episodes

6

Experiment type

Natural observation

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

Natural observation

Description

This location is a mixed traffic roundabout with a speed limit of 20 km/h. There are six legs connecting to the roundabout. The top-right corner of the roundabout is however not accessible.

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

This data format applies to locations 2-13. More information regarding the data processing can be found on Github.

The tutorial.ipynb file walks through the core BikeZ-ETH pipeline: loading a subsampled bike trajectory dataset, loading the site's road geometry registries, and visualizing transformed trajectories into road-aligned (s, d) coordinates.

FieldDescription
veh_idUnique vehicle identifier
veh_typeBike, Car, Bus (Tram), or Truck
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_ekfX and Y positions (meters) in EPSG:2056 projected coordinate system
x_ekf; y_ekfX and Y offset positions (meters); where `x_act_ekf = x_ekf + x_offset` and `y_act_ekf = y_ekf + y_offset
lon_ekf; lat_ekfLongitude and latitude of the position, reprojected from EPSG:2056 to EPSG:4326
speed_ekfSpeed (m/s)
a_ekfAcceleration (m/s2)
angle_ekfHeading angle (rad), wrapped to (-π, π]
angular_vel_ekfAngular velocity (rad/s)

Lane coordinates

FieldDescription
movement_keyNamed movement sequence the vehicle was assigned to, e.g. 'Roentgenstr_EB_2_LangstrN_NB'
segment_idID 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'
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)
d_nativeSigned lateral offset from the spline centerline (meters), positive = left of positive spline direction
s_dotLongitudinal speed (m/s) — component of velocity along the centerline, positive = forward travel
d_dotLateral speed (m/s) — component of velocity perpendicular to 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)

Car / bike lane information

FieldDescription
car_lane_idxIf entity is inside a car lane, an integer (e.g. '1') represents the car lane index. Car lane 1 is the rightmost lane and increases towards centerline
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

Flags and diagnostics

FieldDescription
in_gap'True' if this row of the trajectory was inferred due to occlusion gap
off_grid'True' if this row is off the uniform 0.1s time grid and was spliced into the dataframe for completeness
match_qualityQuality of the segment matching: '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

Registry map

The registry maps contain details regarding the data post-processing for each location; stored as registry_location.pkl. Each mapped location is represented as a registry — a structured record of its roadway geometry.

  • A geometry store captures the centerline of every road as a smooth spline, along with key reference points such as stop and yield lines.
  • A segment registry then defines each individual lane — its direction, width, and mode (car, bike, or shared) — as a corridor along that centerline.
  • Finally, a movement registry links lanes together into complete paths, such as a left turn or straight-through crossing, by connecting an approach lane, a turning path through the intersection, and a departure lane.

Together, these registries define the reference geometry used to compute the lane-based coordinates (s_native, d_native, segment_id, movement_key, etc.) described above.

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 can be replicated as time-stamped animations, providing a visual equivalent of the raw footage without exposing identifiable information. The viz_tutorial.ipynb file walks through generating both the per-trajectory debug map and the fleet-wide animated map.