flowchart TB
Acc["ANSR Road Accidents<br>2019–2023<br>(georeferenced points)"]
Pop["Census Population<br>(parish and grid)"]
G1["Geographic units"]
Filter["Filter: last 5 years<br>(2019–2023)"]
SJoin["st_join: assign accidents<br>to geographic units"]
ExcludeOuter["Exclude accidents<br>outside localities<br>(freeways/bridges)"]
Acc --> Filter
Filter --> SJoin
G1 --> SJoin
SJoin --> ExcludeOuter
subgraph Aggregate["Aggregate per geographic unit"]
direction LR
A1["Total accidents (5 years)"] ~~~ A2["Victim counts:<br>fatal, serious, slight (30-day)"] ~~~ A3["Vehicles involved:<br>motorised, cycle, pedestrian"] ~~~ A4["Context flags:<br>at night, within localities"]
end
ExcludeOuter --> Aggregate
JoinPop["Join census population"]
Aggregate --> JoinPop
Pop --> JoinPop
subgraph CalcIdx["Compute indexes"]
direction LR
C1["Severity index:<br>fatalities / total victims"] ~~~ C2["Mode-specific severity:<br>fatalities / vehicles involved"] ~~~ C3["Accident rate<br>per 1,000 residents"] ~~~ C4["Fatality rate<br>per 1,000 residents"]
end
JoinPop --> CalcIdx
BothSets["All accidents<br>+<br>Within-localities only"]
CalcIdx --> BothSets
%% Subgraph styling
style Aggregate fill:#f8f9fa,stroke:#adb5bd,stroke-width:1px,color:#212529
style CalcIdx fill:#f8f9fa,stroke:#adb5bd,stroke-width:1px,color:#212529
9 Safety
Script: 04_safety.R
Source: ANSR — Autoridade Nacional de Segurança Rodoviária, road accident georeferenced point data (2019–2023) - via PMUS TML 2025 (TML and Way2Go 2025).
9.1 Accident data filtering
Accidents located outside administrative parish boundaries are excluded. This includes accidents on major bridges (Ponte 25 de Abril, Ponte Vasco da Gama) which cannot be assigned to a parish. Only accidents reported as occurring within localities (dentro das localidades) are used for the IMPT normalisation.
9.2 Safety indicators computed
For each geographical unit and transport mode:
| Indicator | Formula |
|---|---|
| Total accidents (5 years) | Count |
| Fatalities (30-day) | Sum VM_30d |
| Serious injuries (30-day) | Sum FG_30d |
| Slight injuries (30-day) | Sum FL_30d |
| Accident rate | total_acidentes / population × 1000 |
| Fatality rate | vitimas_mortais30 / population × 1000 |
| Severity index (total) | fatalities / total_victims |
| Severity index (motorised) | fatalities / motorised_vehicles_involved |
| Severity index (cycling) | fatalities / cycling_involved |
| Severity index (pedestrian) | fatalities / pedestrians_involved |

