Datenauswertung, am Beispiel maxspeed auf motorway

In den letzten Tagen wurde ja hin und wieder mal über die Einführung von 120 bzw. 130km/h auf Deutschland’s Autobahnen und den damit verbundenen CO2 Ausstoß berichtet. In diesem Zuge wurde oft gesagt bzw. schon eher gefragt, ob dies überhaupt etwas bringe, da eh schon ca. 50% der deutschen Autobahnen mit einer Geschwindigkeitsbeschränkung versehen wären.

Also habe ich mir mal gedacht, ich lasse die OSM Datenbank auf diese 50% Aussage los.

Hier meine Vorgehensweise und die Ergebnisse … ich würde mich freuen, wenn sich andere Datenauswerter hier beteiligen, ihre Herangehensweise beschreiben und ihre Ergebnisse veröffentlichen könnten, um auch mal zu zeigen, wie groß die Vielfalt der Auswertungsmöglichkeit (und vermutlich auch Interpretationsmöglichkeit) in der OSM Welt ist.

Ausgabe:


./highway_maxspeed /data/osm/germany-latest.osm.pbf motorway

Count	63625 ways
Length	26228.3 km
Maxspeed	25719.7 km
10	0.397857 km
100	1661.54 km
100none	1.04593 km
110	13.2999 km
120	2750.79 km
130	1399.34 km
140	5.45136 km
20	0.0700134 km
30	0.442278 km
40	8.97925 km
50	6.29777 km
60	156.218 km
70	13.2086 km
80	1039.4 km
90	5.36647 km
fixme:höchster üblicher Wert	1.8328 km
keine	0.809234 km
none	17377 km
noone	0.1963 km
signals	1276.85 km
variable	1.18089 km

Von den 26228,3 Autobahnkilometern sind ca. 17885,6 km (none + Differenz Length-Maxspeed, sprich wo gar nichts getaggt ist) mit keinem Geschwindigkeitslimit versehen, was also fast 68% entspricht, demnach also nur 32% mit Limit, also doch weit weg von 50%.

PS: Mir ist klar, dass dies keine höchstwissenschaftliche Auswertung ist,
dass wir im Gegensatz zum Wikipediaartikel Autobahn doppelt soviele Autobahnkilometer haben, da wir jede Fahrrichtung erfassen,
dass ich maxspeed:conditional unterschlagen habe,
dass ich keine motorway_links in der Auswertung abe,
dass in germany-latest.osm.pbf evtl. auch ein paar Autobahnkilometer außerhalb Deutschlands drin sind,
die komischen Values erst korrigiert werden müssten, usw.
… aber meiner Meinung nach eine gute Annäherung.

EDIT: keine motorway_links

Overpass API per https://overpass-turbo.eu/s/FA2 (läuft 30s).

num : Anzahl Ways
key: maxspeed Wert
len: Länge in Meter (!)


num	key	len
1638		507338.682
11	10	397.446
6313	100	1668269.622
1	100none	1044.845
7446	120	2725545.883
3404	130	1371584.865
1	140	283.63
2	20	69.941
3	30	441.819
71	40	8400.048
47	50	6356.645
756	60	152087.903
76	70	11997.416
3851	80	1033042.237
16	90	3973.576
3	fixme:höchster üblicher Wert	1830.9
1	non	172.872
36066	none	17362246.432
1	noone	196.097
3681	signals	1257692.024
3	variable	1179.672

100none, non und noone sollte man aber gleich in der DB korrigieren. Und auf welchem Autobahnabschnitt gilt Tempo 10 oder 20?

erledigt

Möglicherweise Abfahrten
Grenzübergänge

wenn ihr overpass nutzt, kommt ihr schnell z.B. zu diesem Grenzübergang, usw.

In der Auswertung fehlen auch noch maxspeed:variable und maxspeed:wet - Die Kombination dieser beiden zusätzlich zu maxspeed=none ist gar nicht so selten.

Wer sich das graphisch anschauen will: http://overpass-turbo.eu/s/FA3 (aber bitte quält unsere öffentliche API nicht ganz so - das dauert auf Bundeslandebene schon lang genug)
(groß)

erledigt.

Meiner Einschätzung nach sollte variable/signals nie allein stehen. Es gibt ja reichlich, die entweder nicht immer an sind, oder aber auch direkt mal ausfallen könn(t)en.

Diese fallen bei Harald leider in die Kategorie “none”. Z.B. die A5 nördlich von Frankfurt. Geschätzt 90% der Fahrzeuge fahren da während einer angezeigten Beschränkung, sie wird aber als maxspeed=none gezählt.

Natürlich hätte das keinen messbaren Effekt sondern wäre klimatechnisch eine reine Beruhigungspille (sicherheitstechnisch ist eine andere Frage)

130 sind “Tacho 140” sind eine sanktionslose Geschwindigkeit von Tacho 150. Wer will denn überhaupt so schnell fahren (20%) und wann kann man das auch (50%) und welcher Anteil der Fahrleistung ist überhaupt auf den Autobahnen (50%).

Daher werden aus Deinen 50% in Wahrheit 50%*20%*50%*50% = 2,5%

Haben die, die diese 2,5% der Fahrleistung abspulen, das Recht, dabei 3 mal soviel CO2 freizusetzen wie nötig? Ja, denn anders als die Flugreisenden haben die Autofahrer wenigstens Mineralölsteuer bezahlt…

Also wer’s ernst meint mit dem Klimaschutz muss dafür entweder Markt-Instrumente einsetzen (also CO2 Austoss höher und vor allem konsequent besteuern) oder über ein wirklich drasitisches Tempolimit reden was dann nicht nur direkt wirkt, sondern auch indirekt über Vermeidungs- oder Verlagerungs-Effekte.

Stimmt nur zur Hälfte, da bei mir oben maxspeed=signals als Beschränkung gezählt wird.

Und auch das kann ich so nicht ganz stehen lassen, da laut Wiki ein maxspeed:variable durchaus mit maxspeed=signals und nicht maxspeed=none kombiniert werden sollte.

Vielleicht “sollte”, aber nicht “ist”. 1877 ways in DE haben diese Kombi.

Und wie kompilier ich das richtig?

g++ -o output highway_maxspeed.cpp

liefert bei mir einen dicken Fehler. libosmium 2.15 ist installiert.

Hallo,

Kurzantwort, noch nicht ausprobiert:

Dir fehlen

  • die Includes -I /usr/include/libosmium für Libosmium oder so ähnlich,
  • ggf. die Includes für die Abhängigkeiten, die über #include <osmium/io/any_input.hpp> kommen. Du kannst da auch nur den Header für PBF includieren, denn geht alles etwas schneller, wenn du nur PBFs lesen möchtest
  • Linker-Flags für diverse Osmium-Abhängigkeiten: -lpthread -lz -lexpat -lbz2 (-lbz2 und -lexpat fallen weg, wenn du den Header für OSM-XML weglässt)
  • -std=c++11 für C++11

Welche Distribution nutzt du?

Viele Grüße

Michael, der seine Osmium-Programme und -Progrämmchen nicht mehr zählt

EDIT: C++11 ergänzt

Andere Option wäre, im examples Verzeichnis (https://github.com/osmcode/libosmium/tree/master/examples) ein neues File osmium_highway_maxspeed.cpp mit dem Code anzulegen, und das dann in https://github.com/osmcode/libosmium/blob/master/examples/CMakeLists.txt entsprechend als highway_maxspeed hinzuzufügen.

Wenn ich mich richtig erinnere, kann man dann einfach die Beispiele bauen und muss sich nicht mit irgendwelchen Kommandozeilen Sachen herumschlagen.

https://github.com/osmcode/libosmium/blob/master/examples/osmium_road_length.cpp ist ja schon sehr ähnlich und das tut dort auch ohne Probleme.

Das hab ich ihm bereits per Mail nahe gelegt :wink:
So habe ich es nämlich auch gemacht, cmake … und ein make, fertig

g++ -std=c++11 -I /usr/include/libosmium -lpthread -lz -lexpat -lbz2 highway_maxspeed.cpp

Astrein, vielen Dank.

https://bast.opus.hbz-nrw.de/files/1898/V1_BAB_Tempolimit_2015_Kurzfassung.pdf

Laut der “Bundesanstalt für Straßenwesen” waren 2015 knapp 3/4 der Autobahnen ohne jegliches Tempolimit.