Czarna mapa

wypadki drogowe z co najmniej pięcioma zabitymi · Polska od 1990 r.

Czarne serie — analiza skupień wypadków w czasie i przestrzeni

Spis treści

Wnioski i opis metody: wyniki. Pełne tabele: tabele wypadków śmiertelnych (wypadki śmiertelne) i tabele wypadków z rannymi (wszystkie wypadki z zabitymi lub rannymi). Kronika dzień po dniu 1990–2026: ../kronika/. Ten plik mówi tylko, co jest w katalogu i jak rachunek powtórzyć.

Analiza powstała 14.11.2026 na polecenia autora: „do tej analizy musisz użyć wszystkich wypadków z co najmniej 3 ofiarami śmiertelnymi. A jeszcze lepiej — wszystkie wypadki śmiertelne”, potem „Tak, pobierz” (surowe dane 2007–2012), a na końcu „Zrób to samo dla wszystkich wypadków z rannymi, ale najpierw uzupełnij brakujące lata — chcę mieć pełną kronikę tego, co działo się na polskich drogach”. Nie jest częścią serwisu „Czarna mapa”: niczego w www/ ani w potoku skrypty/01–05 nie zmienia i niczego nie publikuje.

Dane wejściowe

co skąd uwagi
wszystkie zdarzenia 2014–2024 (4,7 mln), w tym 306 455 wypadków z ofiarami i 25 912 śmiertelnych surowe eksporty rejestru policyjnego SEWiK: serwis-katastrofy/dane/sewik_2013_2017/pobrane/ (2014–2017) i dane/fixed-sewik-xml-(2018-25).tar.xz (2018–2024) współrzędne miejsca, godzina i minuta, droga i kilometr, pogoda, nawierzchnia, oświetlenie
wszystkie zdarzenia 2007–2012 (2,5 mln), w tym 258 737 wypadków z ofiarami i 24 559 śmiertelnych surowe eksporty pobrane 14.11.2026: serwis-katastrofy/dane/sewik_2007_2012/ bez współrzędnych miejsca — położenie z nazw (ulica, miejscowość, gmina)
wypadki śmiertelne 1997–2005 (51 116) dane/arkusze/wypl_97-05.csv — tabela autora („bez duplikatów”) miejsce do gminy, pełna godzina; 2 644 zdarzenia z lat 1997 i 1999 pominięte (niżej)
wypadki śmiertelne 1990–1996 (43 782) dane/arkusze/SEWiK_1990_1999_zabici_czI.xls — eksport policyjny miejsce = kod gminy w podziale na 49 województw, pełna godzina
wypadki z co najmniej 3 zabitymi 1990–2012 (2 182) dane/arkusze/1990-2012_tragedie_2.csv — tabela autora współrzędne gminy
rok 2006 i 1.01–10.07.2013: wypadki śmiertelne bez potrąceń pieszych (2 889 i 855) dane/arkusze/SEWiK_2006_2013_zabici.xls — eksport policyjny bez zabitych pieszych sprawdzony na latach 2007–2012: 15 589 zdarzeń na 15 589
lata 2013 i 2025: dzienne liczby wypadków, zabitych i rannych w kraju tabele Polskiego Obserwatorium BRD, odczyt 14.11.2026: serwis-katastrofy/dane/obserwatorium_dzienne/ dane końcowe; 21 dni kontrolnych zgodnych z surowym rejestrem
1.12.2008–13.11.2026: dzienne liczby wstępne policyjna „Informacja dzienna”, pobrana 14.11.2026: serwis-katastrofy/dane/kgp_dzienne/ jedyne źródło dla 2026 r.
miesięczne i roczne liczby wypadków, zabitych i rannych 1992–2014 raporty roczne KGP: dane/raporty KGP/*.pdf (czytane programem pdftotext) tło kroniki dla lat bez rejestru

Czego nadal nie ma: pojedynczych wypadków z lat 2013 i 2025 (archiwum 2013 jest zaszyfrowane, roku 2025 nikt nie udostępnił), wypadków z zabitymi pieszymi z 2006 r. i jakichkolwiek wypadków z rannymi sprzed 2007 r.

Lata 1997 i 1999. W eksporcie policyjnym 1 322 numery zdarzeń ze stycznia–kwietnia 1997 r. powtarzają się w roku 1999, a ofiary obu zdarzeń o wspólnym numerze są przypisane do obu naraz — jedno z pary bywa zdarzeniem, w którym nikt nie zginął. Te zdarzenia (po 1 322 w każdym z dwóch lat) pomijamy; reszta obu lat wchodzi do analizy (5 947 i 5 303 wypadki). 81 numerów wspólnych dla lat 1997 i 2000 to co innego: rok 2000 pochodzi z osobnego eksportu i każde z dwóch zdarzeń ma własne ofiary — oba zostają. Z listy „3+” wyłączone są 44 pozycje.

Skrypty

Wszystkie uruchamiamy z katalogu projektu jako python3 -I serwis-katastrofy/analizy/czarne_serie/<skrypt>.

Dane

skrypt co robi wynik czas
00_pobierz_sewik_2007_2012.py jednorazowo: surowe eksporty 2007–2012 z katalogu sewik.pl (81 plików, 460 MB) serwis-katastrofy/dane/sewik_2007_2012/pobrane/ ok. 3 min
00b_pobierz_kgp_dzienne.py [--tylko-rozbior] jednorazowo: 436 stron „Informacji dziennej” KGP (jedna na sekundę), rozbiór i poprawki dat serwis-katastrofy/dane/kgp_dzienne/ ok. 12 min
00c_obserwatorium_dzienne.py sprawdza odczyt tabel Obserwatorium (sumy kontrolne, sumy roczne, dni kontrolne) i zapisuje tabelę serwis-katastrofy/dane/obserwatorium_dzienne/dzienne_kraj.csv 3 s
01_wypadki_smiertelne.py 2007_2012, … 2014_2017, … 2018_2024 czyta surowe archiwa; zapisuje wypadki śmiertelne, wszystkie wypadki z ofiarami i dzienne sumy wszystkich zdarzeń dane/smiertelne_*.csv, dane/z_ofiarami_*.csv, dane/dzienne_wszystkie_*.csv 3–5 min każdy
02_polozenia.py [ofiary] położenie każdego wypadku 2014–2024 (pięć zapisów współrzędnych, zamienione osie, kontrola względem punktu miejscowości), rzut na płaszczyznę, numery dróg dane/wypadki_2014_2024.csv albo dane/ofiary_2014_2024.csv; wyniki/polozenia*.json 1–10 s
02b_polozenia_2007_2012.py wypadki śmiertelne 2007–2012: położenie gminy dane/wypadki_2007_2012.csv 2 s
02c_polozenia_ofiary_2007_2012.py wszystkie wypadki 2007–2012: położenie z nazw — słownik ulic i miejscowości z rejestru 2014–2024 dane/ofiary_2007_2012.csv, wyniki/polozenia_ofiary_2007_2012.json 10 s
03_dawne_lata.py tabele wypadków śmiertelnych 1990–1996 i 1997–2005 oraz lista „3+” dane/wypadki_1990_1996.csv, dane/wypadki_1997_2005.csv, dane/tragedie_3plus.csv 5 s
03b_lata_2006_2013.py rok 2006 i I połowa 2013 z eksportu bez pieszych; sprawdzian na latach 2007–2012 dane/wypadki_2006_2013_bez_pieszych.csv, wyniki/lata_2006_2013.json 5 s

Część I — wypadki śmiertelne

skrypt co robi wynik czas
04_skale.py [losowań] [zbiory] pary wypadków: odległość × odstęp czasu do 30 dni wobec pięciu tasowań dni (N0–N4) wyniki/skale.json ok. 20 min (999 losowań)
04b_profil.py [losowań] pary bliskie w przestrzeni, odstępy do 2 lat wyniki/profil.json ok. 2 min
05_serie.py mapa\|drogi [losowań] [2014_2024\|2007_2012] konkretne skupienia („walce” promień × czas) wyniki/serie_mapa*.json, wyniki/serie_drogi*.json ok. 1 min każdy
06_pogoda.py [2014_2024\|2007_2012] [ofiary] pogoda i ruch dnia a liczba wypadków (z „ofiary”: wszystkich wypadków) wyniki/pogoda*.json 10–60 s
07_dni.py dzienne liczby w kraju i województwach: rozproszenie, czarne dni, stały kalendarz — wypadki śmiertelne, rok 2006, wszystkie wypadki 2007–2025, dane wstępne 2021–2026 wyniki/dni.json ok. 3 min
08_wykresy.py, 09_tabele.py wykresy i tabele części I wykresy/*.png, wyniki/tabele.md kilka sekund

Część II — wszystkie wypadki z zabitymi lub rannymi

skrypt co robi wynik czas
14_skale_ofiary.py [losowań] [zbiory] pary: odległość × odstęp do 30 dni (N1, N3, N4, N5) dla lat 2014–2024 i 2007–2012, na mapie i wzdłuż dróg; profil — odstępy do 2 lat wyniki/skale_ofiary.json, wyniki/profil_ofiary.json ok. 20 min (499 losowań)
15_serie_ofiary.py mapa\|drogi [losowań] [2014_2024\|2007_2012] konkretne skupienia od 100 m i 6 godzin wyniki/serie_ofiary_*.json 1–4 min każdy (199 losowań)
18_wykresy_ofiary.py, 19_tabele_ofiary.py wykresy i tabele części II wykresy/ofiary_*.png, wyniki/tabele_ofiary.md kilka sekund
20_kronika.py kronika dzień po dniu 1990–2026 i zestawienia miesięczne, roczne serwis-katastrofy/analizy/kronika/ 30 s

czs.py — wspólne funkcje (rzut na płaszczyznę PUWG 1992, tasowanie w warstwach, słowniki rejestru).

Przy 306 tys. wypadków par w oknie 30 dni jest 746 mln, więc skrypty 14 i 15 nie wyliczają wszystkich: trójwymiarowe drzewo k-d (wschód, północ, czas przeskalowany tak, żeby 30 dni odpowiadało promieniowi) oddaje tylko pary bliskie i w przestrzeni, i w czasie; ostatni wiersz każdej tabeli („dalej niż…”) jest dopełnieniem do liczby wszystkich par o danym odstępie czasu.

Próba kontrolna metody: CZS_KONTROLA=7 python3 -I …/04_skale.py 499 2014-2024 → wyniki/skale_kontrola.json (dane, w których dni przetasowano raz; procedura ma w nich nie znaleźć niczego). Dopisanie jednego punktu odniesienia bez liczenia pozostałych: CZS_NULLE=N4 python3 -I …/04_skale.py 999.

Losowania mają stałe ziarna — ponowny przebieg daje te same liczby (z wyjątkiem 07_dni.py i 06_pogoda.py, gdzie kolejność losowań zależy od wersji skryptu; różnice dotyczą trzeciego miejsca po przecinku w szansach).

Jakość położeń

2014–2024. Z 306 455 wypadków 303 408 (99,0%) ma wiarygodne współrzędne miejsca (odczyt najbliższy punktowi miejscowości, nie dalej niż 20 km); 3 047 umieszczono w punkcie miejscowości lub w środku gminy — te nie biorą udziału w parach bliższych niż 5 km. Wśród wypadków śmiertelnych: 25 771 z 25 912 (99,5%). Rok 2014 jest najgorszy. „Ta sama droga” wymaga, żeby punkty leżały blisko siebie także na mapie (rejestr używa niekiedy tego samego numeru drogi w dwóch odległych miejscach).

2007–2012, wszystkie wypadki. Położenie z nazw: ta sama ulica tej samej miejscowości — 118 045 wypadków (rozrzut wzorca: mediana 0,4 km), miejscowość — 91 106 (0,7 km), gmina — 38 910 (2,9 km), powiat — 166; 10 510 rekordów ma własne współrzędne zgodne z nazwą. Słownik: 23 012 ulic i 28 304 miejscowości z rejestru 2014–2024.