Statistiken der OSM Datenbank

Hallo,

für ein eigenes Projekt möchte ich gerne Statistiken auf Grundlage der OSM DB erzeugen. Was mich interessiert ist z.B. Wieviele Einträge vom Type “highway_type=residential” gibt es in einem bestimmten Gebiet. Gibt es einen Weg, das aus der Datenbank auszulesen, ohne die DB lokal speichern zu müssen (vielleicht eine API Abfrage)? Falls ja, wie muss ich das anstellen, bzw. gibt es eine Dokumentation?

Auf der folgenden Seite habe ich eine solche Statistik gefunden (siehe: ORS highway Type stats): http://wiki.openstreetmap.org/wiki/DE:OpenRouteService

Mit besten Grüßen
Nico

Die Overpass-API dürfte dir weiterhelfen.

Mit diesem Aufruf könntest du z.B. highway=residential in einem bestimmten Gebiet zählen:
http://overpass-turbo.eu/s/cMJ

Wenn du die Overpass-API nicht quälen willst, kannst du dir auch auf Basis von libosium ein kleines C+±Programm schreiben, das einen PBF-Extrakt (http://download.geofabrik.de) einliest und für dich zählt. https://github.com/osmcode/osmium-contrib/tree/master/road_length

Möglicherweise möchtest du auch gar nicht die Anzahl der Ways, sondern die Länge haben.

Hallo,
vielen dank für den Hinweis. Das funktioniert soweit gut. Gibt es eine Seite, wo solche statistischen Befehle an die Overpass-API dokumentiert sind?

Danke für den Hinweis auf libosium. Ich schaue mir das Tool bei Gelegenheit mal an. Leider sind meine C++ Kenntnisse beschränkt.

Was meinst Du mit Overpass-API “quälen”? Gibt es ein Problem (eventuell unerwünscht), wenn ich die API dafür nutze? Sprich, wozu ist die Overpass-API gedacht?

Ja gerne, wie mache ich das? einfach statt “count” “lenght” benutzen geht leider nicht.

way"highway"=“residential”;
out length;

http://wiki.openstreetmap.org/wiki/Overpass_API

Also, im Prinzip ist sie für solche Zwecke gedacht, wenn man es nicht übertreibt. :wink:

Bitte bedenke, dass die Anzahl von Wegen in der OSM-Datenbank rein gar nix mit der Anzahl der realen, erfassten Wege zu tun hat; Da ist auch nix gebietsweise innerhalb von OSM selbst vergleichbar - der eine Mapper trennt Wege an jeder nur möglichen Stelle in separate, kurze Wegstücke auf, und ein anderer verbindet sie möglichst so wie die Realität für ihn korrekt aussieht, und oftmals trifft man in der Datenbank Wege auch so zusammengefasst an, wie sie jemand eben draußen erfasst hat (also auch ein Abbiegen ist dann noch immer der gleiche Weg).

Hallo,

Overpass Api unterstützt aktuell keine Längenermittlung. Es gibt da zwar ein GitHub-Ticket, aber ich rechne nicht damit, dass das so schnell kommt.

https://github.com/drolbr/Overpass-API/issues/237

Gruß,
mmd

OK, dass ist ein Problem, was ich noch nicht auf dem Schirm hatte. Danke für den Hinweis! Dann versuche ich mal zu erklären, worum es eigentlich geht. Ich möchte für ein Uniprojekt die Veränderungen im Bereich Fußwege (z.B. highway = sidewalk, footway, usw.) dokumentieren. Im Prinzip soll es eine statistische Abbildung (Säulendiagramm) werden. Auf der X-Achse die KW und auf der Y-Achse die Anzahl (oder Längen) der für Fußgänger benutzbaren Wege.

Ok, danke für den Hinweis. Dann ist die Idee (im Moment) eine Sackgasse.

Die Veränderungen in OSM oder in der Realität? Letzteres wird mit OSM nicht möglich sein, da es weder eine hundertprozentige Abdeckung, noch eine zeitnahe Datenerfassung gibt. Was bedeutet zudem “Fußweg” bei dir? Ein eigenständiger Weg? Parallel zu einer anderen Straße? Nur Bordstein oder eine andere Abtrennung? Radfahren erlaubt? Fußgängerzonen? Waldwege? Trampelpfade?

Es geht um die Veränderungen in der OSM DB. Fußwege sind für mich alles weg, die ein Fußgänger in der Regel benutzt. Also Bürgersteige (egal in welcher Weise gemappt), verkehrsberuhigte Straßen, Pfade die zum gehen geeignet sind, usw… Das Untersuchungsgebiet ist das Stadtgebiet von Potsdam.

Mit way"highway"=“residential”; out skel geom; bekommst du alle Residentials mit den Koordinaten der Knoten.
Mit den Informationen könntest du ein Skript schreiben, das die Längen berechnet. Dafür müsstest du im Prinzip nur den Abstand der Knoten berechnen, und dann alle Abstände addieren.
Frag mich aber nicht, wie man den Abstand zwischen zwei Koordinaten berechnet. Das weiß ich jetzt so aus dem Kopf auch nicht.

Wie fit bist du denn in GIS?

Mit dem QuickOSM-Plugin für QGis könntest du dir für einen definierten Ausschnitt eine bestimmte Overpass-API-Abfrage ausführen, dann mit ein bisschen Prozessierung (manuell oder python) die Weglänge (sogar pro Wegeklasse) berechnen lassen.

Danke, funktioniert gut. Was für eine Sprache nutzt die Overpass API eigentlich? Ist das SQL?

OK, das ist eine gute Idee. Mal sehen, ob ich das hinbekomme.

Das ist OverpassQL: http://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL .

Es gibt aber auch einen XML-Dialekt für die Abfrage. Geht beides.

SQL ist (ganz) anders.

Außerdem ist es in Foren üblich, deinen Text unter den zu schreiben, den du zitierst. Die normale Leserichtung ist von oben nach unten.

/dozier

https://lists.openstreetmap.org/pipermail/talk/2011-November/060656.html