Compare commits
14 Commits
8fe3f84be8
...
generic
| Author | SHA1 | Date | |
|---|---|---|---|
| 8e2d9fbcee | |||
| f3443bfd4d | |||
| d68d6fdd6e | |||
| bc5f273b74 | |||
| efaba0abbe | |||
| e2307b881d | |||
| 713e83e89e | |||
| 1a66405e4a | |||
| e952699d65 | |||
| d440ea29e4 | |||
| f2900ee8ad | |||
| 786fcfd54f | |||
| cefd497ef5 | |||
| 4dce3155b9 |
+6
-2
@@ -5,8 +5,12 @@
|
||||
!.vscode/launch.json
|
||||
!.vscode/extensions.json
|
||||
*.code-workspace
|
||||
|
||||
|
||||
config.php
|
||||
docker-compose.yml
|
||||
./docker-compose.yml
|
||||
./database
|
||||
statistics/gemeinden.html
|
||||
vendor
|
||||
|
||||
|
||||
|
||||
|
||||
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"editor.scrollbar.horizontal": "visible"
|
||||
}
|
||||
@@ -13,63 +13,63 @@ Dort wird die vereinfachte Version exportiert.
|
||||
|
||||
## Direktlinks
|
||||
|
||||
* [Aachen (Städteregion)](https://unfallkarte.hpadm.de/aachen)
|
||||
* [Bielefeld (kreisfreie Stadt)](https://unfallkarte.hpadm.de/bielefeld)
|
||||
* [Bochum (kreisfreie Stadt)](https://unfallkarte.hpadm.de/bochum)
|
||||
* [Bonn (kreisfreie Stadt)](https://unfallkarte.hpadm.de/bonn)
|
||||
* [Borken](https://unfallkarte.hpadm.de/borken)
|
||||
* [Bottrop (kreisfreie Stadt)](https://unfallkarte.hpadm.de/bottrop)
|
||||
* [Coesfeld](https://unfallkarte.hpadm.de/coesfeld)
|
||||
* [Dortmund (kreisfreie Stadt)](https://unfallkarte.hpadm.de/dortmund)
|
||||
* [Duisburg (kreisfreie Stadt)](https://unfallkarte.hpadm.de/duisburg)
|
||||
* [Düren](https://unfallkarte.hpadm.de/dueren)
|
||||
* [Düsseldorf (kreisfreie Stadt)](https://unfallkarte.hpadm.de/duesseldorf)
|
||||
* [Ennepe-Ruhr-Kreis](https://unfallkarte.hpadm.de/erk)
|
||||
* [Essen (kreisfreie Stadt)](https://unfallkarte.hpadm.de/essen)
|
||||
* [Euskirchen](https://unfallkarte.hpadm.de/euskrichen)
|
||||
* [Gelsenkirchen (kreisfreie Stadt)](https://unfallkarte.hpadm.de/gelsenkirchen)
|
||||
* [Gütersloh](https://unfallkarte.hpadm.de/guetersloh)
|
||||
* [Hagen (kreisfreie Stadt)](https://unfallkarte.hpadm.de/hagen)
|
||||
* [Hamm (kreisfreie Stadt)](https://unfallkarte.hpadm.de/hamm)
|
||||
* [Heinsberg](https://unfallkarte.hpadm.de/heinsberg)
|
||||
* [Herford](https://unfallkarte.hpadm.de/herford)
|
||||
* [Herne (kreisfreie Stadt)](https://unfallkarte.hpadm.de/herne)
|
||||
* [Hochsauerlandkreis](https://unfallkarte.hpadm.de/hochsauerlandkreis)
|
||||
* [Höxter](https://unfallkarte.hpadm.de/hoexter)
|
||||
* [Kleve](https://unfallkarte.hpadm.de/kleve)
|
||||
* [Köln (kreisfreie Stadt)](https://unfallkarte.hpadm.de/koeln)
|
||||
* [Krefeld (kreisfreie Stadt)](https://unfallkarte.hpadm.de/krefeld)
|
||||
* [Leverkusen (kreisfreie Stadt)](https://unfallkarte.hpadm.de/leverkusen)
|
||||
* [Lippe](https://unfallkarte.hpadm.de/lippe)
|
||||
* [Märkischer Kreis](https://unfallkarte.hpadm.de/maerkischerkreis)
|
||||
* [Mettmann](https://unfallkarte.hpadm.de/mettmann)
|
||||
* [Minden-Lübbecke](https://unfallkarte.hpadm.de/minden-luebbecke)
|
||||
* [Mönchengladbach (kreisfreie Stadt)](https://unfallkarte.hpadm.de/moenchengladbach)
|
||||
* [Mülheim an der Ruhr (kreisfreie Stadt)](https://unfallkarte.hpadm.de/muelheim)
|
||||
* [Münster (kreisfreie Stadt)](https://unfallkarte.hpadm.de/muenster)
|
||||
* [Oberbergischer Kreis](https://unfallkarte.hpadm.de/oberbergischerkreis)
|
||||
* [Oberhausen (kreisfreie Stadt)](https://unfallkarte.hpadm.de/oberhausen)
|
||||
* [Olpe](https://unfallkarte.hpadm.de/olpe)
|
||||
* [Paderborn](https://unfallkarte.hpadm.de/paderborn)
|
||||
* [Recklinghausen](https://unfallkarte.hpadm.de/recklinghausen)
|
||||
* [Remscheid (kreisfreie Stadt)](https://unfallkarte.hpadm.de/remscheid)
|
||||
* [Rhein-Erft-Kreis](https://unfallkarte.hpadm.de/rek)
|
||||
* [Rhein-Kreis Neuss](https://unfallkarte.hpadm.de/neuss)
|
||||
* [Rhein-Sieg-Kreis](https://unfallkarte.hpadm.de/rsk)
|
||||
* [Rheinisch-Bergischer Kreis](https://unfallkarte.hpadm.de/rbk)
|
||||
* [Siegen-Wittgenstein](https://unfallkarte.hpadm.de/siegen-wittgenstein)
|
||||
* [Soest](https://unfallkarte.hpadm.de/soest)
|
||||
* [Solingen (kreisfreie Stadt)](https://unfallkarte.hpadm.de/solingen)
|
||||
* [Steinfurt](https://unfallkarte.hpadm.de/steinfurt)
|
||||
* [Unna](https://unfallkarte.hpadm.de/unna)
|
||||
* [Viersen](https://unfallkarte.hpadm.de/viersen)
|
||||
* [Warendorf](https://unfallkarte.hpadm.de/warendorf)
|
||||
* [Wesel](https://unfallkarte.hpadm.de/wesel)
|
||||
* [Wuppertal (kreisfreie Stadt)](https://unfallkarte.hpadm.de/wuppertal)
|
||||
* [Aachen (Städteregion)](https://unfallkarte.adfc-hamm.de/aachen)
|
||||
* [Bielefeld (kreisfreie Stadt)](https://unfallkarte.adfc-hamm.de/bielefeld)
|
||||
* [Bochum (kreisfreie Stadt)](https://unfallkarte.adfc-hamm.de/bochum)
|
||||
* [Bonn (kreisfreie Stadt)](https://unfallkarte.adfc-hamm.de/bonn)
|
||||
* [Borken](https://unfallkarte.adfc-hamm.de/borken)
|
||||
* [Bottrop (kreisfreie Stadt)](https://unfallkarte.adfc-hamm.de/bottrop)
|
||||
* [Coesfeld](https://unfallkarte.adfc-hamm.de/coesfeld)
|
||||
* [Dortmund (kreisfreie Stadt)](https://unfallkarte.adfc-hamm.de/dortmund)
|
||||
* [Duisburg (kreisfreie Stadt)](https://unfallkarte.adfc-hamm.de/duisburg)
|
||||
* [Düren](https://unfallkarte.adfc-hamm.de/dueren)
|
||||
* [Düsseldorf (kreisfreie Stadt)](https://unfallkarte.adfc-hamm.de/duesseldorf)
|
||||
* [Ennepe-Ruhr-Kreis](https://unfallkarte.adfc-hamm.de/erk)
|
||||
* [Essen (kreisfreie Stadt)](https://unfallkarte.adfc-hamm.de/essen)
|
||||
* [Euskirchen](https://unfallkarte.adfc-hamm.de/euskrichen)
|
||||
* [Gelsenkirchen (kreisfreie Stadt)](https://unfallkarte.adfc-hamm.de/gelsenkirchen)
|
||||
* [Gütersloh](https://unfallkarte.adfc-hamm.de/guetersloh)
|
||||
* [Hagen (kreisfreie Stadt)](https://unfallkarte.adfc-hamm.de/hagen)
|
||||
* [Hamm (kreisfreie Stadt)](https://unfallkarte.adfc-hamm.de/hamm)
|
||||
* [Heinsberg](https://unfallkarte.adfc-hamm.de/heinsberg)
|
||||
* [Herford](https://unfallkarte.adfc-hamm.de/herford)
|
||||
* [Herne (kreisfreie Stadt)](https://unfallkarte.adfc-hamm.de/herne)
|
||||
* [Hochsauerlandkreis](https://unfallkarte.adfc-hamm.de/hochsauerlandkreis)
|
||||
* [Höxter](https://unfallkarte.adfc-hamm.de/hoexter)
|
||||
* [Kleve](https://unfallkarte.adfc-hamm.de/kleve)
|
||||
* [Köln (kreisfreie Stadt)](https://unfallkarte.adfc-hamm.de/koeln)
|
||||
* [Krefeld (kreisfreie Stadt)](https://unfallkarte.adfc-hamm.de/krefeld)
|
||||
* [Leverkusen (kreisfreie Stadt)](https://unfallkarte.adfc-hamm.de/leverkusen)
|
||||
* [Lippe](https://unfallkarte.adfc-hamm.de/lippe)
|
||||
* [Märkischer Kreis](https://unfallkarte.adfc-hamm.de/maerkischerkreis)
|
||||
* [Mettmann](https://unfallkarte.adfc-hamm.de/mettmann)
|
||||
* [Minden-Lübbecke](https://unfallkarte.adfc-hamm.de/minden-luebbecke)
|
||||
* [Mönchengladbach (kreisfreie Stadt)](https://unfallkarte.adfc-hamm.de/moenchengladbach)
|
||||
* [Mülheim an der Ruhr (kreisfreie Stadt)](https://unfallkarte.adfc-hamm.de/muelheim)
|
||||
* [Münster (kreisfreie Stadt)](https://unfallkarte.adfc-hamm.de/muenster)
|
||||
* [Oberbergischer Kreis](https://unfallkarte.adfc-hamm.de/oberbergischerkreis)
|
||||
* [Oberhausen (kreisfreie Stadt)](https://unfallkarte.adfc-hamm.de/oberhausen)
|
||||
* [Olpe](https://unfallkarte.adfc-hamm.de/olpe)
|
||||
* [Paderborn](https://unfallkarte.adfc-hamm.de/paderborn)
|
||||
* [Recklinghausen](https://unfallkarte.adfc-hamm.de/recklinghausen)
|
||||
* [Remscheid (kreisfreie Stadt)](https://unfallkarte.adfc-hamm.de/remscheid)
|
||||
* [Rhein-Erft-Kreis](https://unfallkarte.adfc-hamm.de/rek)
|
||||
* [Rhein-Kreis Neuss](https://unfallkarte.adfc-hamm.de/neuss)
|
||||
* [Rhein-Sieg-Kreis](https://unfallkarte.adfc-hamm.de/rsk)
|
||||
* [Rheinisch-Bergischer Kreis](https://unfallkarte.adfc-hamm.de/rbk)
|
||||
* [Siegen-Wittgenstein](https://unfallkarte.adfc-hamm.de/siegen-wittgenstein)
|
||||
* [Soest](https://unfallkarte.adfc-hamm.de/soest)
|
||||
* [Solingen (kreisfreie Stadt)](https://unfallkarte.adfc-hamm.de/solingen)
|
||||
* [Steinfurt](https://unfallkarte.adfc-hamm.de/steinfurt)
|
||||
* [Unna](https://unfallkarte.adfc-hamm.de/unna)
|
||||
* [Viersen](https://unfallkarte.adfc-hamm.de/viersen)
|
||||
* [Warendorf](https://unfallkarte.adfc-hamm.de/warendorf)
|
||||
* [Wesel](https://unfallkarte.adfc-hamm.de/wesel)
|
||||
* [Wuppertal (kreisfreie Stadt)](https://unfallkarte.adfc-hamm.de/wuppertal)
|
||||
|
||||
## Statistische Auswertungen
|
||||
|
||||
* https://radwege-hamm.de/dokuwiki/doku.php?id=unfallstatistik_nrw
|
||||
* https://wiki.radwege-hamm.de/doku.php?id=unfallstatistik_nrw
|
||||
|
||||
## Javascript-Bibliotheken
|
||||
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@ date_default_timezone_set('UTC');
|
||||
|
||||
$mapbox_token="write_mapbox_token_here";
|
||||
|
||||
$db_server = "unfallkarte-db";
|
||||
$db_server = "dev-unfallkarte-db";
|
||||
$db_user = "root";
|
||||
$db_passwd = "geheim";
|
||||
|
||||
@@ -16,5 +16,5 @@ try {
|
||||
} catch (PDOException $e) {echo "Fehler: ".$e->getMessage(); die();}
|
||||
|
||||
$numStartYear=2019;
|
||||
$numLatestYear=2022;
|
||||
$numLatestYear=2025;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
unfallkarte:
|
||||
dev-unfallkarte:
|
||||
image: php81:v1
|
||||
container_name: dev-unfallkarte
|
||||
volumes:
|
||||
@@ -21,9 +21,9 @@ services:
|
||||
- proxy
|
||||
restart: always
|
||||
|
||||
unfallkarte-db:
|
||||
dev-unfallkarte-db:
|
||||
image: mariadb
|
||||
container_name: unfallkarte-db
|
||||
container_name: dev-unfallkarte-db
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=geheim #SQL root Passwort eingeben
|
||||
@@ -19,6 +19,7 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<script src="js/jquery.min.js"></script>
|
||||
<script src="js/bootstrap.min.js"></script>
|
||||
<script src="js/leaflet.js"></script>
|
||||
<script src="js/leaflet.ajax.js"></script>
|
||||
<script src="js/leaflet.awesome-markers.js"></script>
|
||||
@@ -66,7 +67,7 @@
|
||||
echo "<input type='hidden' name='d' value='$strDistrict'>";
|
||||
?>
|
||||
</form>
|
||||
|
||||
</ul>
|
||||
<!-- District -->
|
||||
<form method="GET" action="index.php">
|
||||
<select name="d" style="float:left;margin-top:0.5em;margin-right:0.5em;" onchange="this.form.submit()">
|
||||
@@ -76,11 +77,19 @@
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</form>
|
||||
</ul>
|
||||
|
||||
<div>
|
||||
<ul class="navbar-nav mr-auto right">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="statistics/">Statistik</a>
|
||||
<li class="nav-item active dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="./" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
Statistik
|
||||
</a>
|
||||
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
|
||||
<a class="dropdown-item" href="statistics/index.php">Übersicht</a>
|
||||
<a class="dropdown-item" href="statistics/nrw_details.php">NRW</a>
|
||||
<a class="dropdown-item" href="statistics/kreise.php">Kreise</a>
|
||||
<a class="dropdown-item" href="statistics/gemeinden.php">Gemeinden</a>
|
||||
</div>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="impressum.php">Impressum</a>
|
||||
@@ -107,6 +116,11 @@
|
||||
<div class="sidebar-sticky">
|
||||
<h1>Jahr <?= $numYear?></h2>
|
||||
<h2>Unfälle mit <?= $arrVehicles_pl[$numVehicle]; ?> </h2>
|
||||
<?php
|
||||
if ($numVehicle==1) {
|
||||
echo "<a href=\"statistics/kreis_details.php?regbez=" . $numUREGBEZ . "&kreis=" . $numUKREIS . "\">Weitere Statistiken</a>";
|
||||
}
|
||||
?>
|
||||
<ul class="nav flex-column">
|
||||
<?php echo get_statistics($numVehicle,$strWhere,$strYear); ?>
|
||||
</ul>
|
||||
|
||||
+2
-2
@@ -149,7 +149,7 @@ function nl2br2($string) {
|
||||
break;
|
||||
case 3:
|
||||
$strSQL="SELECT count(*) as count FROM data
|
||||
WHERE IstPKW=0 and IstRad=0 and IstKrad and IstGkfz=0 and IstSonstige=0".$strLocation;
|
||||
WHERE IstPKW=0 and IstRad=0 and IstKrad=0 and IstGkfz=0 and IstSonstige=0".$strLocation;
|
||||
break;
|
||||
case 4:
|
||||
$strSQL="SELECT count(*) as count FROM data
|
||||
@@ -199,7 +199,7 @@ function nl2br2($string) {
|
||||
|
||||
//Erläuterung
|
||||
|
||||
$strTable.="<a href='https://recht.nrw.de/lmi/owa/br_vbl_show_pdf?p_id=12225' target='_blank'>Unfalltpyen</a><br>";
|
||||
$strTable.="<a href='https://recht.nrw.de/system/files/VA/11023-12225-mbl26-3anlage8.pdf' target='_blank'>Unfalltpyen</a><br>";
|
||||
$strTable.="<a href='https://www.destatis.de/DE/Themen/Gesellschaft-Umwelt/Verkehrsunfaelle/Methoden/verkehrsunfaelle-grundbegriffe.pdf?__blob=publicationFile' target='_blank'>Unfallbeschreibung</a><br>";
|
||||
return $strTable;
|
||||
}
|
||||
@@ -127,3 +127,10 @@ function get_series_verlauf($arrData,$arrBezeichnung){
|
||||
return $strResult;
|
||||
}
|
||||
|
||||
function titleYears(int $numLatestYear, int $numStartYear) {
|
||||
$html = "";
|
||||
for ($year = $numLatestYear; $year >= $numStartYear; $year--) {
|
||||
$html .= "<th>{$year}</th>";
|
||||
}
|
||||
return $html;
|
||||
}
|
||||
@@ -60,17 +60,17 @@
|
||||
|
||||
<!-- Unfallverlauf -->
|
||||
<div class="row">
|
||||
<div class="col-5">
|
||||
<div class="col-6">
|
||||
<h4>Unfallverlauf von <?=$numLatestYear?> bis <?=$numStartYear?></h4>
|
||||
<table class='table table-sm'>
|
||||
<tr><th></th><th>2022</th><th>2021</th><th>2020</th><th>2019</th></tr>
|
||||
<tr><th></th><?= titleYears($numLatestYear, $numStartYear) ?></tr>
|
||||
<tr><td><?= $arrCategory[1]?></td><?= get_row($resultVerlauf,1) ?></tr>
|
||||
<tr><td><?= $arrCategory[2]?></td><?= get_row($resultVerlauf,2) ?></tr>
|
||||
<tr><td><?= $arrCategory[3]?></td><?= get_row($resultVerlauf,3) ?></tr>
|
||||
<tr><th>Gesamt</th><?= get_row($resultVerlauf,0) ?></tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="col-7">
|
||||
<div class="col-6">
|
||||
<div id="c_unfallverlauf"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+72
-60
@@ -14,72 +14,95 @@
|
||||
<style>
|
||||
.rechts {text-align:right;background-color:#eee;}
|
||||
.l {border-left: 1px solid black; }
|
||||
/* Sehr kleine Schrift für Tabelle */
|
||||
#unfallzahlen {
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
/* Optional: kleinere Schrift auch für Paginierung, Filter, usw. */
|
||||
.dataTables_wrapper {
|
||||
font-size: 11px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<?php
|
||||
|
||||
require("../config.php");
|
||||
// Hilfsfunktionen
|
||||
function jahresHeader($von, $bis, $mitRand = false) {
|
||||
$html = "";
|
||||
for ($y = $von; $y >= $bis; $y--) {
|
||||
$class = ($y == $von && $mitRand) ? " class='l'" : "";
|
||||
$html .= "<th{$class}>{$y}</th>";
|
||||
}
|
||||
return $html;
|
||||
}
|
||||
function jahresSpaltenSQL($prefix, $von, $bis, $bedingung = "") {
|
||||
$cols = [];
|
||||
for ($y = $von; $y >= $bis; $y--) {
|
||||
$cond = $bedingung ? " AND {$bedingung}" : "";
|
||||
$cols[] = "SUM(UJAHR={$y}{$cond}) as {$prefix}_{$y}";
|
||||
}
|
||||
return implode(",\n ", $cols);
|
||||
}
|
||||
function jahresZellen($row, $prefix, $von, $bis) {
|
||||
$html = "";
|
||||
for ($y = $von; $y >= $bis; $y--) {
|
||||
$class = ($y == $von) ? " class='l'" : "";
|
||||
$html .= "<td{$class}>" . $row["{$prefix}_{$y}"] . "</td>";
|
||||
}
|
||||
return $html;
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<?php include("navbar.php"); ?>
|
||||
|
||||
|
||||
<div class="container-fluid" style="margin-top:4em;">
|
||||
<div class="container-fluid" style="margin-top:4em;">
|
||||
<h1>Fahrradunfälle in Nordrhein-Westfalen in Gemeinden</h2>
|
||||
<table id="unfallzahlen" class="display">
|
||||
<thead>
|
||||
<tr><th></th>
|
||||
<th colspan="4">Fahrradunfälle</th>
|
||||
<th colspan="4">Todesfälle</th>
|
||||
<th colspan="4">Schwerverletzte</th>
|
||||
<th colspan="4">Leichtverletzte</th>
|
||||
<th class='l'>Fäche</th>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th colspan="<?= $numLatestYear - $numStartYear + 1 ?>">Fahrradunfälle</th>
|
||||
<th colspan="<?= $numLatestYear - $numStartYear + 1 ?>">Todesfälle</th>
|
||||
<th colspan="<?= $numLatestYear - $numStartYear + 1 ?>">Schwerverletzte</th>
|
||||
<th colspan="<?= $numLatestYear - $numStartYear + 1 ?>">Leichtverletzte</th>
|
||||
<th class='l'>Fläche</th>
|
||||
<th>Einw.</th>
|
||||
<th>Quote</th>
|
||||
|
||||
</tr>
|
||||
<tr><th>Name</th>
|
||||
<th class='l'>2022</th><th>2021</th><th>2020</th><th>2019</th>
|
||||
<th class='l'>2022</th><th>2021</th><th>2020</th><th>2019</th>
|
||||
<th class='l'>2022</th><th>2021</th><th>2020</th><th>2019</th>
|
||||
<th class='l'>2022</th><th>2021</th><th>2020</th><th>2019</th>
|
||||
<th class='l' colspan="2">in Tausend</th><th></th>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<?= jahresHeader($numLatestYear, $numStartYear, true) ?>
|
||||
<?= jahresHeader($numLatestYear, $numStartYear, true) ?>
|
||||
<?= jahresHeader($numLatestYear, $numStartYear, true) ?>
|
||||
<?= jahresHeader($numLatestYear, $numStartYear, true) ?>
|
||||
<th class='l' colspan="2">in Tausend</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
|
||||
require("../config.php");
|
||||
|
||||
$strSQL="SELECT d.Name as Gemeinde,
|
||||
SUM(UJAHR=2022) as Jahr_2022,
|
||||
SUM(UJAHR=2021) as Jahr_2021,
|
||||
SUM(UJAHR=2020) as Jahr_2020,
|
||||
SUM(UJAHR=2019) as Jahr_2019,
|
||||
|
||||
SUM(UJAHR=2022 AND UKATEGORIE=1) as Tode_2022,
|
||||
SUM(UJAHR=2021 AND UKATEGORIE=1) as Tode_2021,
|
||||
SUM(UJAHR=2020 AND UKATEGORIE=1) as Tode_2020,
|
||||
SUM(UJAHR=2019 AND UKATEGORIE=1) as Tode_2019,
|
||||
|
||||
SUM(UJAHR=2022 AND UKATEGORIE=2) as Schwerverletzt_2022,
|
||||
SUM(UJAHR=2021 AND UKATEGORIE=2) as Schwerverletzt_2021,
|
||||
SUM(UJAHR=2020 AND UKATEGORIE=2) as Schwerverletzt_2020,
|
||||
SUM(UJAHR=2019 AND UKATEGORIE=2) as Schwerverletzt_2019,
|
||||
|
||||
SUM(UJAHR=2022 AND UKATEGORIE=3) as Leichtverletzt_2022,
|
||||
SUM(UJAHR=2021 AND UKATEGORIE=3) as Leichtverletzt_2021,
|
||||
SUM(UJAHR=2020 AND UKATEGORIE=3) as Leichtverletzt_2020,
|
||||
SUM(UJAHR=2019 AND UKATEGORIE=3) as Leichtverletzt_2019,
|
||||
$strSQL = "SELECT d.Name as Gemeinde,
|
||||
" . jahresSpaltenSQL('Jahr', $numLatestYear, $numStartYear) . ",
|
||||
" . jahresSpaltenSQL('Tode', $numLatestYear, $numStartYear, 'UKATEGORIE=1') . ",
|
||||
" . jahresSpaltenSQL('Schwerverletzt', $numLatestYear, $numStartYear, 'UKATEGORIE=2') . ",
|
||||
" . jahresSpaltenSQL('Leichtverletzt', $numLatestYear, $numStartYear, 'UKATEGORIE=3') . ",
|
||||
Flaeche, Einwohner,
|
||||
SUM(UJAHR=2022)/d.Einwohner*1000 as Quote_2022,
|
||||
d.ULAND,
|
||||
d.UREGBEZ,
|
||||
d.UKREIS,
|
||||
d.UGEMEINDE
|
||||
SUM(UJAHR={$numLatestYear})/d.Einwohner*1000 as Quote_{$numLatestYear},
|
||||
d.ULAND, d.UREGBEZ, d.UKREIS, d.UGEMEINDE
|
||||
FROM data s, community d
|
||||
WHERE IstRad=1
|
||||
AND d.ULAND=s.ULAND AND d.UREGBEZ=s.UREGBEZ AND d.UKREIS=s.UKREIS AND d.UGEMEINDE=s.UGEMEINDE
|
||||
GROUP BY s.ULAND, s.UREGBEZ, s.UKREIS,s.UGEMEINDE
|
||||
ORDER BY Quote_2022 DESC
|
||||
";
|
||||
GROUP BY s.ULAND, s.UREGBEZ, s.UKREIS, s.UGEMEINDE
|
||||
ORDER BY Quote_{$numLatestYear} DESC";
|
||||
|
||||
// --- ORDER BY s.ULAND, s.UREGBEZ, s.UKREIS,s.UGEMEINDE
|
||||
|
||||
$result=$db->query($strSQL);
|
||||
@@ -87,27 +110,16 @@ $result=$db->query($strSQL);
|
||||
while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
|
||||
echo "<tr>";
|
||||
echo "<td><a href='gemeinde_details.php?regbez=".$row['UREGBEZ']."&kreis=".$row['UKREIS']."&gemeinde=".$row['UGEMEINDE']."'>".$row['Gemeinde']."</a></td>";
|
||||
echo "<td class='l'>".$row['Jahr_2022']."</td>";
|
||||
echo "<td>".$row['Jahr_2021']."</td>";
|
||||
echo "<td>".$row['Jahr_2020']."</td>";
|
||||
echo "<td>".$row['Jahr_2019']."</td>";
|
||||
echo "<td class='l'>".$row['Tode_2022']."</td>";
|
||||
echo "<td>".$row['Tode_2021']."</td>";
|
||||
echo "<td>".$row['Tode_2020']."</td>";
|
||||
echo "<td>".$row['Tode_2019']."</td>";
|
||||
echo "<td class='l'>".$row['Schwerverletzt_2022']."</td>";
|
||||
echo "<td>".$row['Schwerverletzt_2021']."</td>";
|
||||
echo "<td>".$row['Schwerverletzt_2020']."</td>";
|
||||
echo "<td>".$row['Schwerverletzt_2019']."</td>";
|
||||
echo "<td class='l'>".$row['Leichtverletzt_2022']."</td>";
|
||||
echo "<td>".$row['Leichtverletzt_2021']."</td>";
|
||||
echo "<td>".$row['Leichtverletzt_2020']."</td>";
|
||||
echo "<td>".$row['Leichtverletzt_2019']."</td>";
|
||||
echo jahresZellen($row, 'Jahr', $numLatestYear, $numStartYear);
|
||||
echo jahresZellen($row, 'Tode', $numLatestYear, $numStartYear);
|
||||
echo jahresZellen($row, 'Schwerverletzt', $numLatestYear, $numStartYear);
|
||||
echo jahresZellen($row, 'Leichtverletzt', $numLatestYear, $numStartYear);
|
||||
echo "<td class='rechts l'>".$row['Flaeche']."</td>";
|
||||
echo "<td class='rechts'>".round($row['Einwohner']/1000,1)."</td>";
|
||||
echo "<td class='rechts'>".round($row['Quote_2022'],2)."</td>";
|
||||
echo "<td class='rechts'>".round($row["Quote_{$numLatestYear}"],2)."</td>";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -155,7 +155,7 @@ Highcharts.chart('c_unfallverlauf', {
|
||||
align: 'center'
|
||||
},
|
||||
xAxis: {
|
||||
categories: ['2022','2021','2020','2019']
|
||||
categories: ['2025','2024','2023','2022','2021','2020','2019']
|
||||
},
|
||||
yAxis: {
|
||||
min: 0,
|
||||
|
||||
+12
-4
@@ -28,8 +28,8 @@
|
||||
|
||||
<h3>Weitere Auswertungen zu Fahrradunfällen</h3>
|
||||
<p>Auf den folgenden Seiten werden für Kreise bzw. Kreisfreie Städte und Gemeinden die
|
||||
Entwicklung der Unfallzahlen von 2019 bis 2022 dagestellt differenziert nach der
|
||||
Unfallkategorie. Weiterhin gibt es für das Jahr 2022 zu den Fahrradunfällen
|
||||
Entwicklung der Unfallzahlen von <?=$numStartYear?> bis <?=$numLatestYear?> dagestellt differenziert nach der
|
||||
Unfallkategorie. Weiterhin gibt es für das Jahr <?=$numLatestYear?> zu den Fahrradunfällen
|
||||
Statistiken zu Unfallart, Unfalltyp und Unfallbeteiligten.</p>
|
||||
<p>Alle Angaben basieren auf Daten des
|
||||
<a href="https://www.destatis.de" target_"blanc">Statistischen Bundesamtes</a>.
|
||||
@@ -37,8 +37,16 @@
|
||||
<a href="https://unfallatlas.statistikportal.de" target="_blank">unfallatlas.statistikportal.de</a>
|
||||
Die Daten unterliegen der
|
||||
<a href="https://www.govdata.de/dl-de/by-2-0" target="_blanc">Datenlizenz Deutschland – Namensnennung – Version 2.0</a></p>
|
||||
<p> </p>
|
||||
|
||||
|
||||
<div style="border:2px solid red; background-color: lightgray; padding:4px;">
|
||||
Die im Unfallatlas visualisierten Unfalldaten stammen aus der Statistik der Straßenverkehrsunfälle,
|
||||
die auf den Meldungen der Polizei basiert. Falls die Geo-Koordinaten der Unfallmeldung nicht einer
|
||||
Straße eindeutig zugeordnet werden können (Abgleich mit den Straßengeometrien der amtlichen Vermessungsverwaltung),
|
||||
werden sie nicht im Unfallatlas abgebildet. Die Zuordnungsquoten der Unfallkoordinaten
|
||||
im Unfallatlas liegen bei mehr als 90 Prozent.
|
||||
</div>
|
||||
<p> </p>
|
||||
<ul class="list-group" style="width:40em;">
|
||||
<li class="list-group-item"><a href="nrw_details.php"><strong>Landeswerte NRW</strong></a></li>
|
||||
<li class="list-group-item"><a href="kreise.php"><strong>Fahrradunfälle nach Kreisen und kreisfreien Städten</strong></a></li>
|
||||
@@ -49,7 +57,7 @@
|
||||
<a targe="_blank" href="https://www.destatis.de/DE/Themen/Gesellschaft-Umwelt/Verkehrsunfaelle/Methoden/verkehrsunfaelle-grundbegriffe.pdf?__blob=publicationFile">Beschreibung der Unfalldaten</a>
|
||||
liefert das Statistische Bundesamt.</p>
|
||||
<p>Weiter Informationen zu den Unfalltypen gibt es in dieser
|
||||
<a href="https://recht.nrw.de/lmi/owa/br_vbl_show_pdf?p_id=12225">Kurzbeschreibung.
|
||||
<a href="https://recht.nrw.de/system/files/VA/11023-12225-mbl26-3anlage8.pdf">Kurzbeschreibung.
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
require_once("../config.php");
|
||||
require_once("../lib/attributes.php");
|
||||
require_once("functions.php");
|
||||
|
||||
$numLand=5; // NRW
|
||||
$numRegbez=(isset($_GET['regbez'])) ? (int)$_GET['regbez'] : 1;
|
||||
$numKreis=(isset($_GET['kreis'])) ? (int)$_GET['kreis'] : 1;
|
||||
@@ -65,17 +66,17 @@
|
||||
<p><a class='btn btn-primary' href="../index.php?d=<?=$strDistrict?>">Zur Unfallkarte</a></p>
|
||||
<!-- Unfallverlauf -->
|
||||
<div class="row">
|
||||
<div class="col-5">
|
||||
<div class="col-6">
|
||||
<h4>Unfallverlauf von <?=$numLatestYear?> bis <?=$numStartYear?></h4>
|
||||
<table class='table table-sm'>
|
||||
<tr><th></th><th>2022</th><th>2021</th><th>2020</th><th>2019</th></tr>
|
||||
<tr><th></th><?= titleYears($numLatestYear, $numStartYear); ?></tr>
|
||||
<tr><td><?= $arrCategory[1]?></td><?= get_row($resultVerlauf,1) ?></tr>
|
||||
<tr><td><?= $arrCategory[2]?></td><?= get_row($resultVerlauf,2) ?></tr>
|
||||
<tr><td><?= $arrCategory[3]?></td><?= get_row($resultVerlauf,3) ?></tr>
|
||||
<tr><th>Gesamt</th><?= get_row($resultVerlauf,0) ?></tr>
|
||||
</table>
|
||||
</div>
|
||||
<div class="col-7">
|
||||
<div class="col-6">
|
||||
<div id="c_unfallverlauf"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+52
-17
@@ -14,7 +14,18 @@
|
||||
<style>
|
||||
.rechts {text-align:right;}
|
||||
.l {border-left: 1px solid black; }
|
||||
|
||||
/* Sehr kleine Schrift für Tabelle */
|
||||
#unfallzahlen {
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
/* Optional: kleinere Schrift auch für Paginierung, Filter, usw. */
|
||||
.dataTables_wrapper {
|
||||
font-size: 11px;
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@@ -27,19 +38,19 @@
|
||||
<thead>
|
||||
|
||||
<tr><th></th>
|
||||
<th colspan="4">Fahrradunfälle</th>
|
||||
<th colspan="4">Todesfälle</th>
|
||||
<th colspan="4">Schwerverletzte</th>
|
||||
<th colspan="4">Leichtverletzte</th>
|
||||
<th colspan="7">Fahrradunfälle</th>
|
||||
<th colspan="7">Todesfälle</th>
|
||||
<th colspan="7">Schwerverletzte</th>
|
||||
<th colspan="7">Leichtverletzte</th>
|
||||
<th></th><th></th>
|
||||
</tr>
|
||||
|
||||
<tr><th>Kreis</th>
|
||||
<th class="l">2022</th><th>2021</th><th>2020</th><th>2019</th>
|
||||
<th class="l">2022</th><th>2021</th><th>2020</th><th>2019</th>
|
||||
<th class="l">2022</th><th>2021</th><th>2020</th><th>2019</th>
|
||||
<th class="l">2022</th><th>2021</th><th>2020</th><th>2019</th>
|
||||
<th class="l">Einw. in Tausend</th><th>Quote</th>
|
||||
<th class="l">2025</th><th>2024</th><th>2023</th><th>2022</th><th>2021</th><th>2020</th><th>2019</th>
|
||||
<th class="l">2025</th><th>2024</th><th>2023</th><th>2022</th><th>2021</th><th>2020</th><th>2019</th>
|
||||
<th class="l">2025</th><th>2024</th><th>2023</th><th>2022</th><th>2021</th><th>2020</th><th>2019</th>
|
||||
<th class="l">2025</th><th>2024</th><th>2023</th><th>2022</th><th>2021</th><th>2020</th><th>2019</th>
|
||||
<th class ="l"> Einw. in Tausend </th><th> Quote </th>
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -50,59 +61,83 @@ require("../config.php");
|
||||
|
||||
$strSQL="SELECT d.title as Kreis,
|
||||
district,
|
||||
SUM(UJAHR=2025) as Jahr_2025,
|
||||
SUM(UJAHR=2024) as Jahr_2024,
|
||||
SUM(UJAHR=2023) as Jahr_2023,
|
||||
SUM(UJAHR=2022) as Jahr_2022,
|
||||
SUM(UJAHR=2021) as Jahr_2021,
|
||||
SUM(UJAHR=2020) as Jahr_2020,
|
||||
SUM(UJAHR=2019) as Jahr_2019,
|
||||
|
||||
SUM(UJAHR=2025 AND UKATEGORIE=1) as Tode_2025,
|
||||
SUM(UJAHR=2024 AND UKATEGORIE=1) as Tode_2024,
|
||||
SUM(UJAHR=2023 AND UKATEGORIE=1) as Tode_2023,
|
||||
SUM(UJAHR=2022 AND UKATEGORIE=1) as Tode_2022,
|
||||
SUM(UJAHR=2021 AND UKATEGORIE=1) as Tode_2021,
|
||||
SUM(UJAHR=2020 AND UKATEGORIE=1) as Tode_2020,
|
||||
SUM(UJAHR=2019 AND UKATEGORIE=1) as Tode_2019,
|
||||
|
||||
SUM(UJAHR=2025 AND UKATEGORIE=2) as Schwerverletzt_2025,
|
||||
SUM(UJAHR=2024 AND UKATEGORIE=2) as Schwerverletzt_2024,
|
||||
SUM(UJAHR=2023 AND UKATEGORIE=2) as Schwerverletzt_2023,
|
||||
SUM(UJAHR=2022 AND UKATEGORIE=2) as Schwerverletzt_2022,
|
||||
SUM(UJAHR=2021 AND UKATEGORIE=2) as Schwerverletzt_2021,
|
||||
SUM(UJAHR=2020 AND UKATEGORIE=2) as Schwerverletzt_2020,
|
||||
SUM(UJAHR=2019 AND UKATEGORIE=2) as Schwerverletzt_2019,
|
||||
|
||||
SUM(UJAHR=2025 AND UKATEGORIE=3) as Leichtverletzt_2025,
|
||||
SUM(UJAHR=2024 AND UKATEGORIE=3) as Leichtverletzt_2024,
|
||||
SUM(UJAHR=2023 AND UKATEGORIE=3) as Leichtverletzt_2023,
|
||||
SUM(UJAHR=2022 AND UKATEGORIE=3) as Leichtverletzt_2022,
|
||||
SUM(UJAHR=2021 AND UKATEGORIE=3) as Leichtverletzt_2021,
|
||||
SUM(UJAHR=2020 AND UKATEGORIE=3) as Leichtverletzt_2020,
|
||||
SUM(UJAHR=2019 AND UKATEGORIE=3) as Leichtverletzt_2019,
|
||||
d.Population as Population,
|
||||
SUM(UJAHR=2022)/d.Population*1000 as Quote_2022,
|
||||
SUM(UJAHR=2025)/d.Population*1000 as Quote_2025,
|
||||
s.ULAND,
|
||||
s.UREGBEZ ,
|
||||
s.UREGBEZ,
|
||||
s.UKREIS
|
||||
FROM data s, district d
|
||||
WHERE IstRad=1
|
||||
AND d.ULAND=s.ULAND AND d.UREGBEZ=s.UREGBEZ AND d.UKREIS=s.UKREIS
|
||||
GROUP BY s.ULAND, s.UREGBEZ, s.UKREIS
|
||||
ORDER BY Quote_2022 DESC;";
|
||||
ORDER BY Quote_2025 DESC;";
|
||||
|
||||
$result=$db->query($strSQL);
|
||||
|
||||
while ($row = $result->fetch(PDO::FETCH_ASSOC)) {
|
||||
echo "<tr>";
|
||||
echo "<td><a href='kreis_details.php?regbez=".$row['UREGBEZ']."&kreis=".$row['UKREIS']."'>".$row['Kreis']."</a></td>";
|
||||
echo "<td class='l'>".$row['Jahr_2022']."</td>";
|
||||
echo "<td class='l'>".$row['Jahr_2025']."</td>";
|
||||
echo "<td>".$row['Jahr_2024']."</td>";
|
||||
echo "<td>".$row['Jahr_2023']."</td>";
|
||||
echo "<td>".$row['Jahr_2022']."</td>";
|
||||
echo "<td>".$row['Jahr_2021']."</td>";
|
||||
echo "<td>".$row['Jahr_2020']."</td>";
|
||||
echo "<td>".$row['Jahr_2019']."</td>";
|
||||
echo "<td class='l'>".$row['Tode_2022']."</td>";
|
||||
echo "<td class='l'>".$row['Tode_2025']."</td>";
|
||||
echo "<td>".$row['Tode_2024']."</td>";
|
||||
echo "<td>".$row['Tode_2023']."</td>";
|
||||
echo "<td>".$row['Tode_2022']."</td>";
|
||||
echo "<td>".$row['Tode_2021']."</td>";
|
||||
echo "<td>".$row['Tode_2020']."</td>";
|
||||
echo "<td>".$row['Tode_2019']."</td>";
|
||||
echo "<td class='l'>".$row['Schwerverletzt_2022']."</td>";
|
||||
echo "<td class='l'>".$row['Schwerverletzt_2025']."</td>";
|
||||
echo "<td>".$row['Schwerverletzt_2024']."</td>";
|
||||
echo "<td>".$row['Schwerverletzt_2023']."</td>";
|
||||
echo "<td>".$row['Schwerverletzt_2022']."</td>";
|
||||
echo "<td>".$row['Schwerverletzt_2021']."</td>";
|
||||
echo "<td>".$row['Schwerverletzt_2020']."</td>";
|
||||
echo "<td>".$row['Schwerverletzt_2019']."</td>";
|
||||
echo "<td class='l'>".$row['Leichtverletzt_2022']."</td>";
|
||||
echo "<td class='l'>".$row['Leichtverletzt_2025']."</td>";
|
||||
echo "<td>".$row['Leichtverletzt_2024']."</td>";
|
||||
echo "<td>".$row['Leichtverletzt_2023']."</td>";
|
||||
echo "<td>".$row['Leichtverletzt_2022']."</td>";
|
||||
echo "<td>".$row['Leichtverletzt_2021']."</td>";
|
||||
echo "<td>".$row['Leichtverletzt_2020']."</td>";
|
||||
echo "<td>".$row['Leichtverletzt_2019']."</td>";
|
||||
echo "<td class='l rechts'>".round($row['Population']/1000,0)."</td>";
|
||||
echo "<td class='rechts'>".round($row['Quote_2022'],2)."</td>";
|
||||
echo "<td class='rechts'>".round($row['Quote_2025'],2)."</td>";
|
||||
echo "</tr>\n";
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -52,17 +52,19 @@
|
||||
|
||||
<!-- Unfallverlauf -->
|
||||
<div class="row">
|
||||
<div class="col-5">
|
||||
<div class="col-6">
|
||||
<h4>Unfallverlauf von <?=$numLatestYear?> bis <?=$numStartYear?></h4>
|
||||
<table class='table table-sm'>
|
||||
<tr><th></th><th>2022</th><th>2021</th><th>2020</th><th>2019</th></tr>
|
||||
<tr><th></th><?= titleYears($numLatestYear, $numStartYear) ?></tr>
|
||||
<tr><td><?= $arrCategory[1]?></td><?= get_row($resultVerlauf,1) ?></tr>
|
||||
<tr><td><?= $arrCategory[2]?></td><?= get_row($resultVerlauf,2) ?></tr>
|
||||
<tr><td><?= $arrCategory[3]?></td><?= get_row($resultVerlauf,3) ?></tr>
|
||||
<tr><th>Gesamt</th><?= get_row($resultVerlauf,0) ?></tr>
|
||||
</table>
|
||||
<p><strong>Beachte:</strong> Die Zahlen beziehen sich auf die Unfälle, die eindeutig einer Straße zugeordent werden konnten
|
||||
und entsprechen laut IT.NRW nur ca. 90 % der insgesamt erfassten Unfälle.</p>
|
||||
</div>
|
||||
<div class="col-7">
|
||||
<div class="col-6">
|
||||
<div id="c_unfallverlauf"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user