Fahrradrouter der die Unfallstatistik berücksichtigt https://kreis.uber.space/safe-bike-routing/
Find a file
2020-11-05 23:02:37 +01:00
dist fix fa font path 2020-08-13 13:19:44 +02:00
src add sidebar info, improve fitBounds() 2020-08-13 12:50:43 +02:00
.gitignore init 2020-08-12 00:39:55 +02:00
package-lock.json Update dependency webpack-cli to v4 2020-11-05 22:01:51 +00:00
package.json Update dependency webpack-cli to v4 2020-11-05 22:01:51 +00:00
README.md readme 2020-08-13 13:14:39 +02:00
renovate.json Add renovate.json 2020-09-19 00:51:59 +00:00
webpack.config.js add sidebar 2020-08-13 01:32:35 +02:00

safe-bike-routing

OpenRouteService Frontend mit avoid_polygons abgeleitet aus der Fahrrad-Unfallstatistik 2019.

Der dist Ordner kann einfach auf xbeliebigem Webserver deployed werden. Bitte einen eigenen ORS API-Key nutzen.

build

git clone https://git.nroo.de/norwin/safe-bike-routing
npm install
npm run build

avoid_polygons

Das Routing basiert auf einem avoid_polygons Datensatz, den ich aus der Unfallstatistik abgeleitet habe. Die Schritte dazu sind:

  • wget https://unfallatlas.statistikportal.de/app/UnfalldatenDownload/Unfallorte2019_LinRef_Shapefile.zip
  • In QGIS öffnen
    • Layerfilter: "IstRad"=1
  • QGIS Processing Toolbox DBSCAN clustering
    • min clustersize = 6
    • max distance = 20 meters
  • Ergebnis Layerfilter: CLUSTER_ID>=0
  • QGIS Processing Toolbox Buffer
    • distance = 15 meters
    • dissolve = true
  • QGIS Processing Toolbox Simplify
    • tolerance = 10 meters
  • export as GeoJSON
    • coordinate precision: 6

Dem geneigten Routing-Nerd wird auffallen, dass sich dieses Problem besser als mit Polygonen lösen lässt: Die vernünftige Lösung ist die Unfälle auf ein (OSM-) Straßennetz zu map-matchen und jedem Straßensegment entsprechend ein Gewicht hinzuzufügen, das beim Routing berücksichtigt wird. Dadurch werden auch Stellen mit geringerer Unfallmenge als dem Schwellwert berücksichtigt, und das Unfallrisiko adequat mit anderen Routing-Parametern verrechnet. Dieses Projekt setzt aber auf die deutlich einfachere Lösung, denn es war nur kurzer Zeitvertreib für den ich keinen eigenen Routing Server betreiben will.

license

  • src/: UNLICENSE
  • dist/gefaehrliche_kreuzungen_2019.json: Lizenz unbekannt? Basierend auf destatis open data.