Geschwindigkeitslimits für GPS-Koordinaten anfordern

Hi,

ich beschäftige mich gerade mit der Entwicklung einer iPhone app. Für diese app wäre es schön, wenn ich die Geschwindigkeitslimits der Straße, auf der ich fahre, kennen würde. Nach längerem Suchen bin ich auf dieses Projekt gestoßen, welches die wohl höchste Dichte an Daten in diesem Bereich aufweist. Leider bin ich an Hand des Wiki’s nicht schlau geworden.

Was ich benötige ist ein request, der mir zu vorhandenen GPS-Koordinaten die Höchstgeschwindigkeit zurück gibt.

Vielen Dank für die Hilfe.

P.s.: Wenn jemand noch andere Quellen für Geschwindigkeitslimts kennt, würde ich mich auch freuen.

Eine fertige Lösung gibt es dafür meines Wissens nicht.
Also müsstest du dafür eine eigene Datenbank mit den gewünschten OSM-Daten verwenden.

Gruß,
Mondschein

Wenn Du die Daten in der PG-Datenbank hast ist das sehr einfach, nur zu der Koordinate den nächsten Highway raussuchen und das Attribut abgreifen falls es gesetzt ist. An welcher Stelle dieses Ablaufs befindest Du Dich?

Wir finden es immer sehr schön, wenn jemand Interesse an unseren Daten hat. Allerdings möchtest du sicher auch, das deine App bekannt und viel/häufig genutzt wird.
Das würde aber für jede Infrastruktur ein Problem darstellen. In der Vergangenheit haben uns immer wieder solche Apps dazu gezwungen die Server anzupassen um diese Anfragen auszufiltern. Das ist weder für uns noch für den Appbetreiber wirklich schön. Bitte bedenke das dies hier ein freies Projekt ist, welches nicht von Millionen Euro gesegnet ist.

Sollte dein Interesse noch nicht erlöschen sein, so möchte ich dir einen eigenen Server mit einer Datenbank ans Herz legen. Besonders günstig für OSM sind Postgresql mit Postgis.
Dies wird bei vielen Anwenungen bereits verwendet und daher auch von den Standardprogrammen unterstützt. Auf diese Art bekommst du also die Daten ohne große Umwege in die Datenbank und auch aktualisiert.

Was hat OSM jetzt für Dich zu bieten? Es sind Punkte und Linien, welche mit Tags zu Straßen mit Gewschwindigkeitsbegrenzungen werden. Du müsstest also die gewünschten Daten herausfiltern um so dann auf die Geschwindigkeit zu schließen. Das Filtern hat nicht nur den Vorteil, dass die Datenbank sehr viel kleiner wird, es beschleunigt das ganze auch noch.

Postgis bietet jede Menge vorgefertigter Fuktionen um eine Umkreissuche oder ähnliches durchzuführen. Dabei kann man dir sicher hier weiterhelfen. Aber erstmal solltest du festlegen ob das für dich gangbar ist und dann solltest du einen Anfang machen.

Danke für die schnellen Antworten.

Ich bin ganz am Anfang und habe noch keinerlei Erfahrung mit der API gemacht. Was genau ist die PG-Datenbank? Ich wundere mich auch generell, wie man einen request stellt. An irgendeiner Stelle müsste man doch GPS-Koordinaten bereitstellen, um die gewünschten Informationen zu erhalten. Ähnlich wie wenn man eine Wetter-API verwendet und man im request den Ort mit übergibt. Oder sehe ich das falsch?

Die API schreibst du. :slight_smile:

http://de.wikipedia.org/wiki/PostgreSQL mit http://de.wikipedia.org/wiki/PostGIS

Gruß,
Mondschein

Ah ok so langsam verstehe ich. Das ist leider nicht ganz, was ich mir erhofft hatte. Ich kann aber durchaus nachvollziehen, dass die traffic Kosten für so ein OpenSourceProjekt wohl zu hoch wären.

Danke für die Hilfe

Nana nicht verzagen :wink: Ist ja alles Open Source und nichts spricht dagegen, dass du selbst die entsprechenden Dienste betreibst um uns zu entlasten.

Das was du suchst ist ein Mix aus sog. Reverse Geocoding (LatLon → Wo bin ich?) und einer Abfrage bei der nächstgelegenden Straße, wie schnell man darauf fahren darf. Genau wie tiototo es im Prinzip gesagt hat :slight_smile: Entweder baust du dir dafür einen eigenen Dienst+API, der das OpenStreetMap Straßennetz in eine PostGIS Datenbank importiert und dann mittels PostGIS darauf sucht und beim Treffer das Attribut ausliest (und ggF. defaults anwendet), oder du probierst es testweise mal mit unseren APIs.

Nur um Verwirrung zu vermeinden unsere eigentliche API/XAPI/OverPass API ist eigentlich dazu da für Editoren oder andere Tools Vektordaten zu liefern und unterliegt natürlich technischen Beschränkungen. Reverse Geocoding unterstützt meines Wissens zwar unser Namensdienst “Nominatim”, aber ich befürchte die direkte Referenz zur nächsten Straße wird da nicht mitgeliefert: http://wiki.openstreetmap.org/wiki/Nominatim#Reverse_Geocoding_.2F_Address_lookup

Reverse Geocoding ist kein Problem, das kann die Google Api erledigen. Der Straßenname wäre somit kein Problem. Würde es mit dem entsprechenden Namen eine Möglichkeit geben das Geschwindigkeitslimit zu erfahren?
PostGIS scheint ja nur eine Erweiterung einer SQL Datenbank zu sein die spezielle für diesen Zweck entwickelt wurde. Mittels der richtigen Queries die Datenbank mittels eines PHP-Scripts zu durchsuchen und mir die Daten auszugeben kann ich mir noch vorstellen. Allerdings weiß ich nicht wo ich den Server und die Datenbank bekomme und die Datenbank mit der OpenStreetMap Datenbank verknüpfe.

Das geokodieren über Google ist übrigens nicht durch deren Lizenz gedeckt. Das heißt deine App würde illegal arbeiten.
Zum testen für kleinere Dinge kannst du sicher auch erstmal eine virtuelle Maschine benutzen. Damit du ein Gefühl für die Datenbank bekommst. Dort einfach mal ein Bundesland reinladen und dann mit einer einfachen SQl Anfrage die Datenbank kontaktieren. Dafür brauchst du sogar nichtmal das Geocoding von Google.
Server mit Postgresql und Postgis gibts wahrscheinlich sehr viel weniger Angebote als mit MySQL. Allerdings kannst du ja auch V-Server etc. dafür heranziehen oder Linuxserver mit Rootzugriff.
Ein kostenlosses Angebot gibt es auch bei bplaced.net Allerdings dürfte es schwierig werden dort große Datenmengen in die Datenbank zu bekommen, da die Laufzeit stark begrenzt ist.
Und ja du wirst dich erstmal mit den Grundlagen beschäftigen müssen. Fertig gibts das was du möchtest nämlich nicht.

aber es gibt sie: http://www.postgresql.org/support/professional_hosting/europe/
Dürfte aber einige Kohle kosten.

Gruss
Walter

Für OSM-Kram macht sich ein virtueller Server sowieso besser und das erste was man dann macht ist mySQL da runterzulöschen und durch eine Datenbank für Erwachsene zu ersetzen.