Auswertungen mittels Jupyter-Notebook

Hallo zusammen,

unter Präsentation der Ergebnisse vom Forschungsprojekt an der TH Wildau - #4 von simse hat @simse ein Jupyter-Notebook veröffentlicht. Eine großartige Vorlage!

Das habe ich zum Anlass genommen, es für unsere Zwecke und Auswertungen in Lübeck anzupassen. Wir wollen die Auswertung für konkrete Straßen. Ich kann nun die komplette Auswertung für Lübeck mit einem Knopfdruck durchführen. Alle Grafiken werden für die gesamte Stadt und je ausgewählter Straße ausgeben. Hinweis: Das Jupyter-Notebook werde ich bei Gelegenheit veröffentlichen.

Die Ergebnisse entsprechen denen, die ich am Montag im Community-Call mittels QGIS präsentiert habe.

Im Folgenden ein paar Beispiele (etwa 3.600 Datenpunkte).

Eine Karte mit allen Punkten

Eine Karte mit besonders ausgewählter Straßen

Hiefür wird mit QGIS ein Polygon gezogen und exportiert, welches dann in Jupyter wieder eingelesen wird:

Wenn man zoomt sieht man alle Punkte innerhalb der Polygone und bei einem Klick auf einen Punkt öffnen sich weitere Informationen (erstmal nur zwei):

Boxplot Überholabstände ausgewählter Straßen

Boxplot Überholabstände je Fahrtrichtung je ausgewählter Straße

Histogramme je ausgewählter Straße

Anmerkung: Gleiche Straße wie in der vorherigen Grafik.

Streudiagramm Abstand rechts / Überholabstand links für alle Punkte

Boxplot Abstand rechts / Überholabstand links für alle Punkte

Beobachtung: Wir können somit das Ergebnis von der TH-Wildau bestätigen.

Boxplot Geschwindigkeit / Überholabstand links für alle Punkte

Beobachtung: Je langsamer man fährt, desto enger wird man überholt. Wer 30-35 km/h fährt, wird immer mit mind. 150cm überholt.

2 „Gefällt mir“

Großartig, danke :slight_smile: Freue mich auf das Notebook.

Bei Gelegenheit können wir auch mal einen Aggregator schreiben der die üblichen Portale abgreift und in ein gemeinsames JSON legt, für noch schnelleres losarbeiten.

Kleine Frage zu deinen Daten: Letzter plot, was ist n für 30-35 bzw 35-40 km/h? Sieht so aus als könnte 30-35 schon ein ziemlich kleines n haben, dann ist deine letzte Beobachtung etwas unsicher.

1 „Gefällt mir“

Das hatte ich bisher nicht hinterfragt. Ich habe mal auf die TODO-Liste geschrieben, das n mit auf die Plots zu packen. Tatsächlich hast du recht:

  • Für 35-40 km/h ist n=1
  • Für 30-35 km/h ist n=2
1 „Gefällt mir“

Evtl. bist du da schon dran aber ich glaube mit vertretbarem Aufwand kann man die Polygone auch in Jupyter erstellen statt in qgis (falls das der einzige Grund für Qgis im Workflow ist). Würde mir das mal angucken wenn du das Notebook hochgeladen hast.

1 „Gefällt mir“

Ja, das ist der einzige Grund für QGIS derzeit. Da ich die Polygone bereits in QGIS habe, war es sehr einfach für mich diese einfach zu exportieren und zu verwenden.

Könntest du bei Zeiten ein how-to veröffentlichen oder den Workflow aufzeichnen wie man die Daten in QGIS lädt, bzw. einzelen Straßenzuüge auswählen kann?

Für nächstes Jahr würde ich gerne VCD und ADFC in Braunschweig mit leichten Auswertungen/ Darstellungen versorgen.

Das HOWTO für QGIS ist quasi fertig. Ich plane es beim morgigen Communiy-Meeting kurz vorzustellen.

1 „Gefällt mir“

Ich bin gespannt! Erste Ansätze habe ich schon gemacht.

Ich habe das Jupyter-Notebook nun veröffentlicht:

2 „Gefällt mir“

danke dir!

Ist die QGIS-Doku auch schon vorstellbar?

Die findet sich hier, wie im letzten Protokoll verlinkt.

2 „Gefällt mir“

Hallo zusammen,

Bekomme ich beim Export aus dem Portal nur die Überholvorgänge, oder auch die Infos wie zB Anzahl Befahrungen je Straße?
Wir würden für unsere Auswertung auch gerne die meistbefahrenen Strecken/Straßen oder wenn möglich Stadtteile vorstellen. Analog dazu die am wenigsten vertretenen Bereiche. Damit würden wir auch die Leihanfragen oder „Werbetrommel“ für Testfahrer gezielt rühren wollen. Könnte man das anhand der Verwaltungsinformationen (Stadteil, etc) auswerten?
Oder müsste man dafür die ganze Datenbank exportieren?

Danke und Grüße
Markus

@markus im JSON-Export sind derzeit nur die Überholvorgänge enthalten. Die Befahrungshäufigkeit der Strecken kannst du aber derzeit leider nur im Portal visualisieren (dass es dort geht, wusstest du aber vermutlich schon).

Hi, ja das kenne ich. Ich hätte es nur gerne als Liste für Auswertungen etc und nicht nur grafisch.
Kommt man an die Datenbankdaten ran und kann die exportieren für Auswertungen?

Danke und Grüße
Markus

An die Datenbank kommst du nur als Serverbetreiber heran - vermutlich ist es sinnvoll die road usage auch im json zur Verfügung zu stellen, da sie ja eh sichtbar ist, aber derzeit gibt’s die leider noch nicht.

Wir betreiben den Server selbst :wink: kommen also ran wenn wir wissen wie.

Dann schau mal in die PostgreSQL Datenbank, da gibt es eine road_usage Tabelle mit den Spalten id, track_id, hex_hash, way_id, time, direction_reversed. Für die Statistik brauchst du dir da nur die letzten drei von anschauen. Wie ihr das exportiert findet ihr bestimmt selbst heraus (postgres to csv googlen?).

Wenn ihr eh eine GIS-Umgebung nutzt könnt ihr auch stattdessen die Kachel-URL der Karte heraussuchen (network inspector im browser) und dann darin nach dem entsprechenden layer suchen. Dann habt ihr auch die ganzen anderen Straßenabschnitt-Statistiken drin.

Wie die Kacheln erzeugt werden steht in tile-generator/layers/obs_roads/layer.sql. Falls ihr noch weitere Spielereien direkt in der Datenbank machen wollt, könnt ihr euch dort inspirieren lassen.

LG Paul

Da ich eine Rückfrage erhalten habe, wie man konkret auf die Straßen kommt: Hier nochmal schriftlich dokumentiert, was ich in einem Community-Call vor etwa 2 Monaten einmal präsentiert habe

1) Generelle Info

Der Schritt [5] im Notebook sorgt dafür, dass jeder Messpunkt ein cardinal bekommt, also eine menschenlesbare Himmelsrichtung. Diese habe ich mir einmal auf dem Papier aufgemalt:

2) Straßen als GEOJSON

Um die Punkte Straßen zuzuordnen muss man ein GEOJSON der Straße generieren. Ich habe dafür QGIS verwendet, um ein Polygon um die gewünschte Straße zu ziehen, was ich hier dokumentiert habe:

3) GEOJSON in Jupyter verwenden

Das Polygon habe ich dann als GEO-JSON exportiert und verwende dies im Jupyter-Notebook, z.B.

        Street("Fackenburger Allee", "cities/luebeck/geojson/Fackenburger.geojson", "red", [
            Drivingdirection("ALLE", []),
        ]),

4) Mapping aller Punkte auf die Straße

Wenn man nun das Notebook startet, dann sollten alle Punkte innerhalb des Polygons in Schritt [19] des Nootbooks zu sehen sein:

Man kann dann auch einen konkreten Punkt anklicken, dann sieht man u.a. die Himmelsrichtung:

Bildschirmfoto vom 2023-02-26 17-09-36

5) Himmelsrichtungen der Straße bestimmen

In Schritt [9] (relativ weit unten) die folgende Zeile einkommentieren:

# x['driving_direction'] = x.cardinal 

Dies sorgt dafür, dass alle Cardinals in den Auswertungel als eine eigene „Richttung“ erkannt werden. Wenn man das Nootbook neustartet, dann solltes es in Schritt [20] des Nootebooks wie folgt aussehen:

Man erkennt hier je Himmelrichtung große Gruppen, die zusammengehören.

6) Fahrtrichtungen definieren

Mit dem Wissen aus 1) und 5) kann man nun die „Cardinale“ zu „Richtungen“ vereinen. Z.b. alle Messungen die in Richtung Nord/Nord-West/Nord-Ost zeigen:

        Street("Fackenburger Allee", "cities/luebeck/geojson/Fackenburger.geojson", "red", [
            Drivingdirection("Stadtauswärts (Radfahrstreifen, 50km/h)", ["NW", "NNW", "N", "NNO"])
        ]),

Das gleiche für die Gegenrichtung:

        Street("Fackenburger Allee", "cities/luebeck/geojson/Fackenburger.geojson", "red", [
            Drivingdirection("Stadteinwärts (Radfahrstreifen, 50km/h)", ["SSW", "S", "SSO", "SO", "OSO"]),
            Drivingdirection("Stadtauswärts (Radfahrstreifen, 50km/h)", ["NW", "NNW", "N", "NNO"])
        ]),

Und schon haben wir die Auswertung für eine Straße für beide Fahrtrichtungen:

Hinweis

Ggf. gibt es auch Ausreißer, welche man nicht einer konkreten Himmelsrichtung zuordnen kann. Diese werden durch das wieder einkommentieren der Zeile aus 5) ignoriert.

1 „Gefällt mir“