Methodik · Wahldaten
Diese Seite dokumentiert Datenquellen, Aggregations-Strategie und bekannte Coverage-Lücken der Wahl-Daten. Werte beschreiben Stimmenanteile, keine Bewertung.
1. Datenquellen
- Bundestagswahlen
- Bundeswahlleiterin Wahlbezirksstatistik (
_wbz.zip). Direkt-Bezug pro Wahl-Jahr von bundeswahlleiterin.de. Lizenz Datenlizenz Deutschland Namensnennung 2.0. - Abgeordnetenhaus + BVV
- Amt für Statistik Berlin-Brandenburg, XLSX-Sheet-Pipeline (
DL_BE_*.xlsx). Bezug von statistik-berlin-brandenburg.de. Lizenz Datenlizenz Deutschland Namensnennung 2.0. - Stimmbezirks-Geometrien
- Amt für Statistik Berlin-Brandenburg, Shapefile-Releases pro Wahlgang:
RBS_OD_Wahlgebiete_BTW17.zip,RBS_OD_UWB_AH21.zipu. a. Reprojektion von ETRS89 UTM33 nach WGS84 via mapshaper-Pipeline, Simplify visvalingam + keep-shapes.
2. Daten-Cutoff
Aktuell ist Phase 1 mit Wahlen ab 2011 abgedeckt. Pre-2011-Daten liegen bei der Bundeswahlleiterin teilweise in unterschiedlichen Formaten vor und erfordern Mapping zur Bezirksreform 2001. Reaktivierung als FragDenStaat-Backlog für Phase 2.
- Bundestagswahlen: 2013, 2017, 2021, 2025
- Abgeordnetenhauswahlen: 2011, 2016, 2021, 2023 (Wiederholung)
- Bezirksverordneten-Versammlungen: 2011, 2016, 2021, 2023 (Wiederholung)
- Europawahlen: Phase 2 Backlog, aktuell nicht enthalten
- Volksentscheide: out-of-scope Phase 1
3. Briefwahl-Asymmetrie
Stimmbezirks-Werte enthalten Urne-Stimmen plus eine räumliche Zuteilung der Briefstimmen, sofern die jeweilige Wahlleitung diese Zuordnung publiziert. In den Berliner Wahlbezirks-Datensätzen vor 2021 sind Briefstimmen ausschließlich als separater Brief-Wahlbezirks-Aggregat erfasst, der keinen räumlichen Bezug zu den Urnenwahl-Stimmbezirken besitzt.
Konsequenz für die Aggregation: auf den Ebenen Bezirk und Berlin sind alle abgegebenen Stimmen enthalten. Auf Stimmbezirks-Ebene fehlen die Brief- Stimmen pre-2021, weswegen Inspector + Stimmbezirks-Choropleth in dieser Konstellation einen dezenten Schraffur-Streifen und einen Inline-Badge zeigen (siehe Story 6.5).
Für 2021+ verteilen die Wahlleitungen Briefstimmen auf Brief-Wahlbezirks- Distrikte, die räumlich auf Stimmbezirks-Ebene mit-ausgewiesen werden. Die Asymmetrie entfällt damit ab BTW 2021 / AGH 2021 / BVV 2021.
4. Stimmbezirks-zu-Kiez-Aggregation
Stimmbezirks-Werte werden räumlich auf vier Ebenen aggregiert: Stimmbezirk, Kiez (LOR-Bezirksregion), Bezirk (12) und Berlin gesamt.
Für die Kiez-Ebene wird pro Stimmbezirk der Polygon-Centroid berechnet (via turf-center) und in die enthaltene LOR-Bezirksregion gemappt (booleanPointInPolygon). Stimmbezirke außerhalb aller LOR-Polygone bleiben ungemappt und fließen nur in Bezirk + Berlin ein. Die SQL-Aggregation summiert pro Kiez und Partei aus den Roh-Stimmbezirks-Rows (siehe scripts/build-wahl-kiez-aggregat.ts).
Brief-Wahlbezirks-Rows (ist_briefwahl_aggregat = true)
werden für das Kiez-Aggregat ausgeschlossen, weil sie keinen räumlichen
Bezug haben. Sie zählen ausschließlich für Bezirk und Berlin gesamt.
5. Wiederholungswahl 2023
AGH 2021 + BVV 2021 wurden vom Berliner Verfassungsgerichtshof teilweise
für ungültig erklärt. AGH 2023 und BVV 2023 sind die jeweiligen
Wiederholungswahlen. In der Datenbank tragen sie das Flag is_repeat_election mit Verweis auf
die jeweilige Original-Wahl über parent_election_id.
Die Wahlbezirks-Geometrie der Wiederholungswahl ist identisch zur Original-
Wahl von Sept 2021. Die separate SBB-Quelle RBS_OD_Wahllokale_AH23.zip enthält ausschließlich Wahllokal-Standorte (Punkte), nicht Wahlbezirks-
Polygone; deshalb mappt navigator.berlin AGH 2023 und BVV 2023 für
Choropleth + Kiez-Aggregation auf den Polygon-Layer ah21.
6. Geometrien + Coverage
Stimmbezirks-Polygone sind verfügbar für: BTW 2017, 2021, 2025 sowie AGH + BVV 2016 und 2021 (verwendet auch für 2023-Wiederholung). Pre-2017 BTW und pre-2011 AGH/BVV besitzen keine publizierten Stimmbezirks-Geometrien. Diese Wahlen sind ausschließlich auf Bezirks- und Berlin-Aggregat zugänglich; das Kiez-Aggregat ist für sie leer und die Choropleth-Komponente fällt auf 12 Bezirks-Polygone zurück mit einem Inline-Hinweis.
Reprojektion: ETRS89 UTM33 → WGS84 via mapshaper Node-API, Simplify
visvalingam + keep-shapes (Memory
project_simplify_keep_shapes) damit Sliver-Polygone den Simplify-Schritt
überleben.
7. Update-Cadence
Wahldaten werden manuell nach jedem Wahlgang aktualisiert. Es gibt keinen Live-Refresh aus den Quell-APIs, weil die offiziellen Endgültige-Ergebnisse erst Wochen nach dem Wahltag vorliegen und die Bundeswahlleiterin / SBB ihre Datensätze nicht via stabile API ausspielen.
Build-Pipeline: pnpm data:wahl-fetch lädt + parsed Roh-Daten, pnpm data:wahl-geo rebuilded Stimmbezirks-Layer, pnpm data:wahl-kiez rebuildet das Kiez-Aggregat. Lint-Gate pnpm lint:wahl blockt
Wertungsvokabel in Code + Doku.
8. Parteien-Aliase
Parteien-Namen variieren über die Jahre (PDS → Die Linke, GRÜNE in
Schreibvarianten). Eine case-insensitive Alias-Tabelle in scripts/wahlen/lib/partei-seed.ts resolvt Quell-Spalten zu kanonischen kurzname-Werten. Nicht-aufgelöste
Eintragungen landen unter „Sonstige" und werden im Inspector nicht in
Top-N geführt.
9. Cross-Layer-Verknüpfung
Wahl-Daten werden in Kiez-Pages (siehe Wahl-Verlauf-Block) und im Adress-Inspector mit anderen Layern (Mietspiegel-Wohnlage, Lärmkartierung, Mietspiegel-Soziale-Stufe, Kiez-Score) nebeneinander angezeigt, ohne kausale Verknüpfung oder wertendes Framing. Editorial- Richtlinien dazu im Cross-Layer-Templates-Preview (noindex, Co-Design-Stage).