VANCOUVER CRIME OBSERVATORY

Methodology

This site displays derived statistical data for research and public interest purposes only. We do not store or display personal information, last names, addresses, or precise coordinates. All data is aggregated to prevent individual identification.

How data is processed

1
Collection
Raw data is downloaded from public APIs and open data portals. No personal identifiers are collected or stored at any stage.
2
Spatial aggregation
Individual incidents are assigned to 500m x 500m grid cells using PostGIS. Exact coordinates are never stored or displayed. All map visualizations show grid-level or neighborhood-level aggregates.
3
Temporal aggregation
Events are grouped into weekly or monthly time buckets. No exact timestamps are exposed. Date ranges are used for trend analysis.
4
Metric computation
Pre-computed metrics (counts, rates, severity indices) are calculated per grid cell and time period. These derived statistics are what the API serves.
5
Privacy validation
Automated checks strip forbidden fields (names, addresses, case numbers) and reject responses containing banned phrases. Minimum count thresholds prevent identification through small-number inference.
6
Data quality audit
Benford's Law chi-squared tests and temporal gap detection run weekly to flag anomalous data. Results are logged but do not block publication.

Spatial grid system

Vancouver is divided into approximately 500m x 500m grid cells. Each cell covers roughly 6 city blocks. Crime counts, service locations, and other metrics are computed per cell. This prevents pinpointing exact incident locations while still showing meaningful geographic patterns.

Heatmap visualizations interpolate between grid cell values to show density gradients. Individual points on the map represent grid cell centroids, not exact locations.

Neighborhood Safety Index

The composite safety index (0-100) combines multiple data layers into a single per-neighborhood score. Higher scores indicate lower density of negative indicators relative to available services.

Crime density — incident count per km², normalized across neighborhoods (weight: 40%)

Crisis signals — 311 reports (encampments, needles, graffiti) per km² (weight: 20%)

Overdose burden — death count relative to population estimates (weight: 20%)

Service coverage — harm reduction, shelters, treatment sites present (weight: 20%, inverted — more services improve score)

Scores are normalized within Vancouver only and are not comparable to other cities. Index weights may be adjusted as new data layers are added.

Data sources

368,000+ records · 2003-present
Individual crime incidents with category, date, and approximate location. Source of all mapped crime points and heatmaps.
Update frequency: Weekly
4,600+ records · 1998-2024
Weighted severity index comparing Vancouver CMA, BC, and Canada. Table 35-10-0026. Higher values indicate more serious crime composition.
Update frequency: Annual
28,000+ records · 1998-2023
Police-reported crime by violation type for Vancouver CMA. Includes actual incidents, clearance rates, and charges. Table 35-10-0177.
Update frequency: Annual
StatCan Hate Crime Data
50+ records · 2014-2024
Police-reported hate crimes by motivation type. Vancouver CMA, BC, and Canada levels. Tables 35-10-0191 and 35-10-0132.
Update frequency: Annual
Quarterly records · 2016-present
Substance-related harms and deaths by province. BC totals distributed to Vancouver neighborhoods using health authority proportions.
Update frequency: Quarterly
150,000+ records · 2009-present
311 service requests including encampments, needles, graffiti. Also business licences for crime-adjacent businesses (liquor, cannabis).
Update frequency: Weekly
BC Courts
90+ records · 2018-2024
Case timeliness and workload metrics for Provincial and Supreme courts.
Update frequency: Annual
BC Housing & Non-Market Housing
200+ records · Current
Supportive housing locations, shelter beds, and non-market housing inventory.
Update frequency: As updated
Service Provider Locations
100+ records · Current
Harm reduction sites, OAT clinics, supervised consumption sites, shelters, food programs, and mental health services.
Update frequency: As updated

Data quality validation

Automated quality checks run weekly after data ingestion:

Benford's Law — Chi-squared test on first-digit distributions of crime counts. Significant deviation (p < 0.05) flags potential data fabrication or truncation.

Temporal gap detection — Identifies months with missing data or suspiciously low counts (<20% of rolling average). Gaps are logged, not filled.

Cross-source comparison — VPD incident counts are compared against StatCan annual totals to detect significant discrepancies.

Known limitations

  • Crime data reflects reported incidents only. Unreported crime is not captured.
  • 311 signals depend on resident reporting behavior, which varies by neighborhood.
  • Overdose data from PHAC is quarterly and province-wide; neighborhood distribution uses fixed proportions derived from health authority reports, not exact counts.
  • StatCan data is CMA-level (Census Metropolitan Area), which extends beyond city boundaries.
  • Court metrics cover BC-wide courts, not Vancouver-specific outcomes.
  • Service location data may be incomplete. Facilities open and close between updates.
  • The 500m grid can mask micro-patterns within a cell and create edge effects at cell boundaries.

Last updated: February 2026. All source code is open source. Corrections and data source suggestions welcome via GitHub.