Compare commits

..

6 Commits

Author SHA1 Message Date
Walter Hupfeld
e952699d65 2023 fix 2024-07-05 12:27:52 +02:00
Walter Hupfeld
d440ea29e4 2023 2024-07-05 10:35:43 +02:00
Walter Hupfeld
f2900ee8ad docker-compose in gitignore 2023-10-26 11:32:53 +02:00
Walter Hupfeld
786fcfd54f Navigation 2023-10-26 11:20:38 +02:00
Walter Hupfeld
cefd497ef5 Navigation 2023-10-26 11:20:26 +02:00
Walter Hupfeld
4dce3155b9 cluster 2023-10-26 11:07:02 +02:00
11 changed files with 100 additions and 38 deletions

8
.gitignore vendored
View File

@@ -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

3
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,3 @@
{
"editor.scrollbar.horizontal": "visible"
}

View File

@@ -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";

View File

@@ -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

View File

@@ -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>
@@ -29,6 +30,12 @@
<link rel="stylesheet" href="css/leaflet.css" />
<link rel="stylesheet" href="css/leaflet.awesome-markers.css" />
<link rel="stylesheet" href="css/style.css" />
<link rel="stylesheet" href="vendor/Leaflet.markercluster/dist/MarkerCluster.css" />
<link rel="stylesheet" href="vendor/Leaflet.markercluster/dist/MarkerCluster.Default.css" />
<script src="vendor/Leaflet.markercluster/dist/leaflet.markercluster-src.js"></script>
<title><?= $strTitle ?></title>
</head>
@@ -66,7 +73,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,12 +83,20 @@
<?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>
<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>
</li>
@@ -122,6 +137,8 @@
<!-- row -->
</div>
<!-- container-fluid -->
<script>
// Map ----------------------------------------------------------------------
var mymap = L.map('mapid').setView([<?=$numInfoLat ?>, <?=$numInfoLng ?>], <?=$numZoom ?>);
@@ -162,7 +179,6 @@
}
//Hamm-Layer - todo invers area ---------------------------------------
var myStyle = {
"color": "grey",
"fillColor": "lightblue",
@@ -176,6 +192,32 @@
});
districtLayer.addTo(mymap);
var geoJsonData = {
"type": "FeatureCollection",
"features": [
{ "type": "Feature", "id":"1", "properties": { "address": "2" }, "geometry": { "type": "Point", "coordinates": [51.6792,7.77693] } },
{ "type": "Feature", "id":"2", "properties": { "address": "151" }, "geometry": { "type": "Point", "coordinates": [51.6787,7.77699] } },
{ "type": "Feature", "id":"3", "properties": { "address": "21" }, "geometry": { "type": "Point", "coordinates": [51.6777,7.77690] } },
{ "type": "Feature", "id":"4", "properties": { "address": "14" }, "geometry": { "type": "Point", "coordinates": [51.6798,7.77692] } },
{ "type": "Feature", "id":"5", "properties": { "address": "38B" }, "geometry": { "type": "Point", "coordinates": [51.6800,7.77700] } },
{ "type": "Feature", "id":"6", "properties": { "address": "38" }, "geometry": { "type": "Point", "coordinates": [51.6747,7.77683] } }
]
};
var markers = L.markerClusterGroup();
var geoJsonLayer = L.geoJson(geoJsonData, {
onEachFeature: function (feature, layer) {
layer.bindPopup(feature.properties.address);
}
});
markers.addLayer(geoJsonLayer);
//mymap.addLayer(markers);
// mymap.fitBounds(markers.getBounds());
// Marker from database -------------------------------------------------------
var marker = [];
@@ -191,16 +233,13 @@
// Info-Marker für Start --------------------------------------------------------
var marker2 = L.marker([<?=$numInfoLat?>, <?=$numInfoLng?>], { icon: infoMarker }).addTo(mymap);
<?php
echo "marker2.bindPopup('".$strIntro."');";
if ($numVehicle==0) {
echo "marker2.openPopup();";
}
?>
// Hide and show marker form checkbox ----------------------------------------

View File

@@ -63,7 +63,7 @@
<div class="col-5">
<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><th>2023</th><th>2022</th><th>2021</th><th>2020</th><th>2019</th></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>

View File

@@ -155,7 +155,7 @@ Highcharts.chart('c_unfallverlauf', {
align: 'center'
},
xAxis: {
categories: ['2022','2021','2020','2019']
categories: ['2023','2022','2021','2020','2019']
},
yAxis: {
min: 0,

View File

@@ -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>&nbsp;</p>
<p>
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.
</p>
<p>&nbsp;</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>

View File

@@ -68,7 +68,7 @@
<div class="col-5">
<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><th>2023</th><th>2022</th><th>2021</th><th>2020</th><th>2019</th></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>

View File

@@ -27,18 +27,18 @@
<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="5">Fahrradunfälle</th>
<th colspan="5">Todesfälle</th>
<th colspan="5">Schwerverletzte</th>
<th colspan="5">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">2023</th><th>2022</th><th>2021</th><th>2020</th><th>2019</th>
<th class="l">2023</th><th>2022</th><th>2021</th><th>2020</th><th>2019</th>
<th class="l">2023</th><th>2022</th><th>2021</th><th>2020</th><th>2019</th>
<th class="l">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>
@@ -50,27 +50,31 @@ require("../config.php");
$strSQL="SELECT d.title as Kreis,
district,
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=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=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=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=2023)/d.Population*1000 as Quote_2023,
s.ULAND,
s.UREGBEZ ,
s.UKREIS
@@ -78,31 +82,35 @@ $strSQL="SELECT d.title as Kreis,
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_2023 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_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_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_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_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_2023'],2)."</td>";
echo "</tr>\n";
}
?>

View File

@@ -55,7 +55,7 @@
<div class="col-5">
<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><th>2023</th><th>2022</th><th>2021</th><th>2020</th><th>2019</th></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>