Polizeischüsse Deutschland
Ein interaktives Visualisierungstool für Polizei-Schusswaffeneinsätze in Deutschland von 1976-2025 mit Leaflet.js, SVG-Diagrammen und Vanilla JavaScript.
Polizeischüsse Deutschland
#Projektübersicht
Polizeischüsse Deutschland ist eine interaktive Webanwendung, die über 529 dokumentierte Vorfälle von Polizei-Schusswaffeneinsätzen in Deutschland von 1976 bis 2025 visualisiert. Die Daten werden von CILIP (Bürgerrechte & Polizei) gesammelt, einer Organisation, die diese Vorfälle seit 1976 dokumentiert.
Dieses Projekt macht die Daten durch eine intuitive Oberfläche mit Karten, Diagrammen undSuchfunktionen zugänglich.
#Motivation
Offizielle Statistiken zu Polizeischüssen in Deutschland sind unvollständig und oft schwer zugänglich. CILIP leistet seit fast 50 Jahren wichtige Arbeit bei der Dokumentation dieser Vorfälle, aber ihre Daten waren nur in verstreuten Berichten und PDFs verfügbar.
Das Ziel dieses Projekts war:
- Die CILIP-Daten in ein verwendbares Format aggregieren
- Vorfälle auf einer interaktiven Karte visualisieren
- Filter- und Suchfunktionen bereitstellen
- Die Daten für Journalisten, Forscher und die Öffentlichkeit zugänglich machen
#Systemarchitektur
#Client-seitiges Design
Die Anwendung läuft vollständig im Browser ohne benötigten Backend. Dies war beabsichtigt - es hält die Bereitstellung einfach und stellt sicher, dass die Anwendung funktioniert, selbst wenn die Datenquelle offline geht.
#Fallback-Mechanismus
Die Anwendung implementiert einen robusten Fallback-Mechanismus, um sicherzustellen, dass die Karte immer funktioniert:
#Daten-Pipeline
#CSV-Struktur
Die primäre Datenquelle ist eine CSV-Datei mit 21 Spalten:
| Spalte | Beschreibung | |--------|-------------| | Fall | Aktenzeichen | | Name | Name des Opfers | | Geschlecht | Geschlecht | | Alter | Alter | | Datum | Datum | | Ort | Stadt | | Bundesland | Bundesland | | Schussort | Ortstyp | | Szenarium | Szenario | | Quellen | Quellen | | Waffen | Waffentyp | | ... | Weitere Felder |
#Geocodierungsprozess
Standorte werden mit der Nominatim API von OpenStreetMap geokodiert:
#Datenqualität
| Metrik | Wert | |--------|-------| | Vorfälle insgesamt | 529 | | Zeitraum | 1976-2025 | | Geokodiert | ~85% | | Kategorien | tödlich, verletzt, Warnschuss |
#Frontend-Implementierung
#Layout
#Leaflet-Karten-Setup
#Marker-Clustering
Für dichte städtische Gebiete werden Marker geclustert:
#SVG-Diagramme
#Kategorie-Tortendiagramm
#SVG-Pfad-Generierung
#Hauptfunktionen
#1. Dynamische Filterung
#2. Echtzeit-Statistiken
Vier Tortendiagramme werden dynamisch aktualisiert:
- Kategorien (tödlich/verletzt/Warnschuss)
- Waffen (Schusswaffe/Messer/sonstige)
- Orte (Innenbereich/Außenbereich/unbekannt)
- Bewaffnungsstatus
#3. Timeline-Ansicht
Klickbare Vorfallsliste, die Kartenmarker fokussiert:
#Screenshots
#Kartenübersicht

Vollständige Anwendung mit Seitenleisten-Steuerung und interaktiver Karte.
#Karte mit Popup

Einzelne Vorfalldetails-Popup bei Marker-Klick.
#Statistik-Diagramme

SVG-gerenderte Tortendiagramme mit Vorfalls Kategorien, Waffen und Standorten.
#Technologie-Stack
| Komponente | Technologie | |-----------|------------| | HTML5 | Semantisches Markup | | Tailwind CSS | Styling (CDN) | | Vanilla JavaScript | Logik | | Leaflet.js | Karten | | MarkerCluster | Clustering | | OpenStreetMap | Kartenkacheln | | SVG | Diagramm-Rendering |
#Datenqualität & Einschränkungen
#Bekannte Probleme
- Unvollständige Daten: Der Datensatz repräsentiert wahrscheinlich nicht alle tatsächlichen Vorfälle - viele Fälle bleiben undokumentiert
- Quellen-Bias: Daten kommen hauptsächlich aus Medienberichten, die außergewöhnliche Fälle bevorzugen können
- Geocodierung: Einige Standorte haben ungefähre Koordinaten aufgrund unpräziser Standortdaten
- Kategorisierung: Klassifikation der Vorfälle (tödlich/verletzt/Warnschuss) kann sich im Laufe der Zeit geändert haben
#Einschränkungen
- Keine Vollständigkeitsgarantie
- Daten beginnen 1976 (Lücken in frühen Jahren)
- Einige Vorfälle缺乏 präzise Standortdaten
#Entwicklungsprozess
#Phase 1: Datensammlung
- CILIP-Website nach Vorfalldaten gescraped
- Manuelle Dateneingabe aus PDF-Berichten
- Geocodierung mit Nominatim API
#Phase 2: Kernentwicklung
- Leaflet-Karte mit OpenStreetMap-Kacheln eingerichtet
- Marker-Rendering mit Clustering implementiert
- Popup-Details für jeden Vorfall hinzugefügt
#Phase 3: Funktionen
- Dynamische Filterung gebaut (Jahr, Kategorie)
- SVG-Tortendiagramme erstellt
- Suchfunktion hinzugefügt
- Timeline-Ansicht implementiert
#Phase 4: Verfeinerung
- Responsives Design
- Fallback-Datenmechanismus
- Dokumentation
#Zukünftige Verbesserungen
- [ ] Dunkelmodus-Umschalter
- [ ] Mobile PWA
- [ ] Heatmap-Overlay
- [ ] PDF-Export
- [ ] Timeline-Animation
- [ ] API-Integration für Echtzeit-Updates
#Erkenntnisse
-
Client-seitige Architektur: Sie einfach zu halten ohne Backend machte die Bereitstellung trivial und das Vercel-Hosting nahtlos.
-
Fallbacks sind wichtig: Externe Datenquellen können ausfallen - habe immer einen Backup-Plan mit eingebetteten Daten.
-
SVG für Diagramme: Eigene Diagramm-Rendering zu bauen ist mehr Arbeit, gibt aber volle Kontrolle über das Styling.
-
Offene Daten Herausforderungen: Mit realen Daten zu arbeiten erfordert das Handhaben von fehlenden Werten, Inkonsistenzen und variierender Qualität.
#Fazit
Dieses Projekt demonstriert, wie offene Daten und moderne Webtechnologien komplexe Informationen zugänglich machen können. Durch die Kombination von Leaflet.js für Kartierung und benutzerdefinierten SVG-Diagrammen haben wir ein Tool erstellt, das Forschern, Journalisten und Bürgern hilft,Fast 50 Jahre Polizei-Schusswaffenvorfälle in Deutschland zu erkunden.
Der Code ist Open Source auf GitHub verfügbar. Beiträge sind willkommen!
#Links
- Live Demo: police-shootings-germany.vercel.app
- Repository: GitHub
- Dataset: Kaggle
- Datenquelle: CILIP
Erstellt mit Leaflet.js, SVG und Vanilla JavaScript