Appendix
Appendix A Key Parameter Summary
Coordinate system & traffic direction:
crs_metric='EPSG:27700'/crs_output='EPSG:27700';right_hand_traffic=True.Sidepath buffer:
sidepath_buffer_size=22;sidepath_buffer_distance=100.Default one-way setting:
default_oneway_cycle_lane='yes';default_oneway_cycle_track='yes'.Default road width (m):
primary=17,secondary=15,tertiary=13,residential=11,living_street=6, etc.Default facility/parking width (m):
Motor vehicles 3.2, buses 4.5, bicycles 1.4, pedestrians 2.2, rail 4.5, vertical 5.0.
Default surface layers:
default_highway_surface_dict,default_cycleway_surface_*,default_track_surface_dict.Base components:
base_index_dict(path/track/lanes/bus/bicycle/shared…).Road class / speed limit factors:
highway_factor_dict,maxspeed_factor_dict.Factor weighting:
highway_factor_dict_weights(higher weight for mixed with motor traffic, lower for segregated facilities).Surface / smoothness factors:
surface_factor_dict,smoothness_factor_dict.Data completeness factors:
data_incompleteness_dict(surface=30,width=25, etc.).Road classes prohibited for cycling:
cycling_highway_prohibition_list(motorway,trunk, etc.).
Appendix B Key Parameters and Mappings in Section of structural rideability
A. Global settings and network assumptions
- Coordinate reference systems: processing CRS =
EPSG:27700; output CRS =EPSG:27700. - Traffic side: left-hand traffic (
right_hand_traffic = FALSE). - Sidepath detection:
sidepath_buffer_size = 22m (lateral search radius)sidepath_buffer_distance = 100m (longitudinal sampling step)- Default one-way flags for cycle facilities:
default_oneway_cycle_lane = 'yes',default_oneway_cycle_track = 'yes'.
- Highway classes prohibited for cycling:
motorway,motorway_link,trunk,trunk_link(excluded from rideability scoring).
B. Default widths (m)
- Fallback carriageway width:
11. - By highway type (examples):
primary=17,secondary=15,tertiary=13,residential=11,living_street=6,service=4,pedestrian=6,cycleway=1.5,footway=2,track=2.5. - Lane / parking templates (m): motor-vehicle lane
3.2, bus/PSV4.5, cycle lane1.4; parallel/angled/perpendicular parking2.2 / 4.5 / 5.0.
C. Surface and smoothness factors
- Surface fallbacks (examples): cycle track →
paving_stones; cycle lane →asphalt;trackusestracktypeto map toasphalt/compacted/unpaved/ground/grass, etc. surface_factor_dict(indicative):- High:
asphalt,paved,concrete,chipseal,metal→ 1.0 - Medium:
paving_stones,compacted,fine_gravel,bricks→ 0.7 - Low:
sett,cobblestone,concrete:lanes,unpaved,wood→ 0.3 - Very low:
ground,dirt,earth,mud,gravel,grass,grass_paver, … → 0.2 - Minimal:
sand,rock→ 0.15
- High:
smoothness_factor_dict:excellent=1.10,good=1.00,intermediate=0.70,bad=0.30,very_bad=0.20,horrible=0.15,very_horrible=0.10,impassable=0.
D. Road class, speed and facility/separation weighting
highway_factor_dict(examples):motorway=0.10,trunk=0.15,primary=0.35,secondary=0.65,tertiary=0.85,residential=1.00,living_street=1.10.maxspeed_factor_dict(km/h):20→1.05,30→1.00,50→0.95,60→0.85,70→0.70,100→0.50.Facility type weighting (illustrative groups):
- Shared/bicycle road/shared traffic lane
→ 1.0
- Advisory/central cycle lane; shared bus lane; crossings/links
→ 0.7
- Exclusive/protected lane; track/path; segregated/shared footway
→ 0.2
- Cycle path within track or service road where not intended for through cycling
→ 0
separation_level_dict(examples):
none=0; studs=0.1; kerb/flex_post/greenery=0.3–0.5; planter=0.6; ditch=0.8; hedge/jersey_barrier=0.9; fence/guard_rail=1.0.
E. Base index and access modifiers
- **
base_index_dict(0–100; examples):
** cycle path 100; cycle track 90; segregated path 80; shared path 70; exclusive cycle lane 80; protected lane 90; advisory lane 70; central lane 60; shared bus lane 65; bicycle road 70; shared road 60; track/service 65; link 60; crossing 60.
- Motor-vehicle access bonus (
motor_vehicle_access_index_dict):
no=100, agricultural/forestry=90, private/customers/delivery/permit=80, destination=70.
- Traffic signs (examples):
mandatory cycle signs ['237','240','241']; non-mandatory ['none','1022'].
F. Data completeness weights (penalties for missing attributes)
width=25, surface=30, smoothness=10, width:lanes=10, parking=25, crossing=10, crossing_markings=10, maxspeed=15, lit=15.
G. Functional mappings used in analysis
- Slope-to-factor mapping:
≤2% → 1.00; 2–4% → 0.95; 4–6% → 0.85; 6–8% → 0.75; 8–10% → 0.65; >10% → 0.90. - Level of Traffic Stress (LTS) to factor:
LTS 1 → 1.00; LTS 2 → 0.90; LTS 3 → 0.75; LTS 4 → 0.60; other/NA → 0.90.
H. Fields included in processing and outputs (abridged)
- Input attributes (typical):
highway, name, oneway, lanes, width*, maxspeed, lit, incline, surface, smoothness, cycleway*, sidewalk*, parking*, separation*, buffer*, traffic_mode*, traffic_sign*, etc.
- Key derived/output fields:
id, way_type, base_index, fac_1, fac_2, fac_4, fac_5 (LTS), environment indices, completeness flags, and standardised proc_* fields used for modelling and visualisation.
Appendix C Key Parameters and Mappings in Section of structural rideability
| Category | Parameter Name | Value in Code | Notes |
|---|---|---|---|
| General settings | CRS | EPSG:27700 | Unified projected coordinate system for analysis and outputs |
| NA | segment_geometry | LineString (S1 output) | Base geometry used for buffering and sampling |
| GVI processing | gvi_source | Treepedia (~2015 GSV) | Data source |
| NA | gvi_statistic | mean | Mean of all GVI points within the buffer |
| NA | gvi_buffer_radius | 30 m | Buffer radius centered at the segment midpoint |
| NA | borough_mean_impute | TRUE | Impute missing values with the mean of the containing borough |
| NA | gvi_flag | 0/1 | 0 = use buffer mean; 1 = use borough mean |
| NO2 processing | no2_source | NO2 raster (AQI/LAEI2025) | Data source (read from .tif) |
| NA | no2_sample_step | 10 m | Spacing of sample points along the segment |
| NA | no2_statistic | mean | Average raster value over sampled points |
| NA | nodata_handling | exclude | Exclude NoData pixels during aggregation |
| Natural-feature proximity | nature_source | OSM-extracted park / water / wood / grass | Data source |
| NA | buffer_rings | [50, 40, 30, 20, 10, 1] m | Multiple concentric buffers from far to near |
| NA | score_mapping | Far rings = lower score; near rings = higher score (near overwrites far) | See code mapping table for exact scores |
| NA | override_rule | nearer overwrites farther | Scores from nearer rings override farther ones |
| Normalization & composition | norm_method | min–max | Normalize all inputs to [0, 1] |
| NA | no2_inverse | 1 - minmax(NO₂) | Higher pollution → lower score; invert after min–max |
| NA | weights | GVI = 0.5, NO₂ = 0.3, Natural = 0.2 | Weights for the environmental perception index |
| NA | env_index_range | 0–1 | Output is a continuous proportion value |
Appendix D Research log
| Date | Task |
|---|---|
| 28th June 2025 | Outlined research framework and indicator system |
| 5th July 2025 | Reviewed data sources and access channels |
| 10th July 2025 | Downloaded street network data and checked structure |
| 15th July 2025 | Processed GVI remote sensing data |
| 20th July 2025 | Collected AQI and landscape data |
| 21st July 2025 | Cleaned street network dataset |
| 24th July 2025 | Built LTS classification fields |
| 27th July 2025 | Generated slope layer |
| 30th July 2025 | Standardized environmental indicators |
| 2nd Aug 2025 | Merged datasets and created master table |
| 6th Aug 2025 | Calculated centrality measures |
| 10th Aug 2025 | Conducted correlation and clustering analysis |
| 13th Aug 2025 | Produced spatial maps (LTS, slope, GVI) |
| 15th Aug 2025 | Started writing methodology |
| 17th Aug 2025 | Computed Impedance Index |
| 19th Aug 2025 | Expanded results draft |
| 20th Aug 2025 | Continued writing methodology and results |
| 21st Aug 2025 | Integrated figures into results |
| 22nd Aug 2025 | Linked literature review with methodology |
| 24th Aug 2025 | Drafted discussion section |
| 26th Aug 2025 | Finalized writing |