Ich muss momentan für ein GPS-Tracking ne’ Menge an GPS-Punkten verarbeiten und die nominateim-Daten sind ja auch nicht immer die neusten und ich mss auch noch ein paar andere Spielereien mit den Daten machen…
Ist es nun also möglich das ich z.B. mir alle Punkte (und evtl. Relations) für bestimmte Bereiche sozusagen in meine DB rüber kopiere? Ich will dies bewust beschränken, da ich z.B. für meine Aufgaben keine Daten aus den USA bräuchte, will dies aber auch wieder automatisieren, sodass bei eintreffen neuer Daten die Punkte in der Umgebung sozusagen aktuallisiert werden und damit dann gearbeitet wird.
Falls das noch zu umgangssprachlich war: Gibt es eine API, wo ich einfach sage ich hätte gerne alle Karten-Daten in dem Rechteck zwischen den Koordinaden (a1|b1) und (a2|b2) in was auch mmer für einem Format sodass ich diese verarbeiten kann? So in etwa wie auf der Karten-Startseite unter “Export”…
Wenn ich allerdings wieder die Export-API nehmen würde entstehen wieder enorme Datenmengen, da ich dann ja jedes mal wieder für diese Area alles abfragen muss, nur um zu schauen ob es updates gab, und das würde ja enorm viel Performance bei OSM rauben, oder nicht? Dagegen sind mir die einzelnen Changesets wiederum zu grpß zum automatischen rüber kopieren, denn wie gesagt: was will ich mit daten aus den USA oder Indien wenn ich doch nur halb Deutschland brauche
Ich hab mir vor ein paar Wochen sowas zugelegt (ein Oberbayern-Extrakt der Geofabrik und dann alle paar Stunden ein Update mit ner grosszügigen bbox um das Gebiet). Diese und diese Beschreibung waren recht hilfreich, soweit ich mich erinner praktisch alles mit copy&paste zu übernehmen.
Ok dafür brauch ich ja immer eigene Software, aber vllt. lässt sich das ja auch irgendwie so umändern dass ich es mit reinem PHP-Skript ansprechen kann… Ich werd mich da mal durchlesen.
Ja also zum einen brauch ich das für eine art nominatim, zum anderen muss ich auch die gefahrene strecke berechnen.
So habe ich dann also z.b. 2 Koordinaten, beide liegen jetzt auf einer Straße die eine Kehrtwende macht (z.b. serpentinen). Sie entfernung zwischen den Beiden Punkten über luftlinie wäre jetzt 10m, aber in wirklichkeit sind es 50m, weil die Kurve nicht berücksichtig worden ist.
Mit der Datenbank könte ich dann einfach diese Linie der Straße “abfahren”. Generell ist das ja nchts großes aber wenn ich das tagtäglich für ne menge an Punten mache freuen sich die OSM-Server doch bstimmt riesig… Und zum anderen braucht das auch länger…
Da ist es in meinen augen einfacher einfach die punkte um die gebenen koordinaten zu holen und dann damit direkt auf meinem server zu rechnen. Deswegen will ich ja auch nicht direkt ganz deutschland holen sondern nur ie sachen die ich gerade auch brauche. So würde ich dann also beim eintreffen der neuen Daten schauen, in welchem Gebiet diese Punkte sind, die entsprechenden Daten vom OSM-Server holen, wenn diese für dieses Gebiet nicht drinnen sind bzw. nach einer gewissen Zeit updaten und dann damit meine berechnungen anstellen.
Wobei so groß sind die einzelnen gebiete ja nicht. Könnte ich da nicht wirklich einfach die Expor-API der startseite nehmen?!?
Ehm routing brauch ich ja nicht sooo direkt, er soll ja nicht die route selbst finden, wobei… naja egal… also ich will das ganze aber auf meinem eigenen Server machen. ich versuch das jetzt mal mit dem Export-Tool, denn ich brauch wie gesagt nur die Punkte und die Infos dazu… Und das dann auch nur für die entsprechenden Areas… Die fertigen OSM-Zips sind dafür einfach zu groß. Wie lang soll der denn hier für nen Update brauchen? 10 Std. bei ner 768 Leitung?
Entweder bei openstreetmap.org bei “Export” auf einen (kleinen) Bereich zoomen, “XML” auswählen, dann bekommt man ein XML dieses Bereichs.
Oder so wie im Wiki (Xapi) beschrieben, sich eine URL zusammenbasteln mit bbox, filter für bestimmte tags… xapi liefert grössere Bereiche, hat aber auch Beschränkungen nach Gebietsgröße und Anzahl der Elemente.
Sonstiges: Mit welchen Programmiersprachen arbeitest du auf welcher Plattform?
ach ja: Was willst du eigentlich mit den Daten machen?
mit openlayers als Punkte über eine OSM-Karte legen?
selber Karten erstellen (Rendern)?
die Daten in einer ganz anderen Anwendung verwenden?
wenn ja, welche?
alles hoch geheim? → Ende der Diskussion.
Gruss
Walter
p.s. Hervorhebungen in den Zitaten sind von mir.
weiterhin hab ich nicht den ganzen Thread vollständig analysiert, da ich glaube, dass du dich eventuell in einer Sackgasse befindest und ich in diesem Falle ganz von Vorne anfange. Siehe meine Sig
mit “alle Punkte” sind hauptsächlich nur Straßen gemeint, ich brauche aber auch die PLZ-Grenzen, etc… also brauche ich wohl wirklich ALLE Punkte und daten der Karte
nein ich will mir keine Karte rendern, dafür nehme ich die fretig gerenderte OSM-Karte
Der Bereich variiert… Ich will das ganze benutzen um GPS-Tracks zu analysieren. Die Autos schicken uns GPS-Tracks auf den Server und die werden dann mithilfe eines PHP-Scriptes von mir ausgewertet. Dabei will ich dann direkt schauen auf welchen Straßen der gefahren ist, etc… Wenn Also ein Auto mal durch Köln gefahren ist, sollen die Daten rund um die Fahrstrecke abgerufen werden, aber z.B. nicht ganz Köln…
Natürlich buffer ich die Daten, sonst wär das ja ne enorme Datenmenge jedes mal für den OSM-Server… Die zwischengespeicherten Daten werden aber natürlich in regelmäßigen Abständen (so etwa 1 mal die Woche) aktualisiert. Die “neuen” Daten werden immer dann abgerufen wenn neue GPS-tracks eintreffen, das kann im 50-Sekunden-Abstand sein oder auch mal ne ganze Woche dauern…
Ziel des ganzen ist es, das ich wenn ich einen Punkt habe, das ich nur alles in nem kleinen Radius drumherum lade und nicht direkt die ganze Stadt… Ok wenn ich daraus ne Karte rendern würde wäre die ein bissl löchrig aber das will ich ja garnicht… ich brauch halt nur da Daten wo auch nen Auto langefahren ist…
dennoch müsste man mal den Oberbereich kennen (Bundesländer, Kreise, Ausland, …) Daraus leitet sich die absolute Größe der lokalen OSM-Datenbank ab.
meinst du hier den Update der lokalen OSM-Daten?
Bei der Lösung, die mir vorschwebt, wird nicht nach Bedarf vom OSM-Server abgerufen.
Gerade das ist der Knackpunkt: Du hast alle notwendigen OSM-Daten lokal in deiner DB. Nur die Art und Weise, wie die lokalen OSM-Daten aktuell gehalten werden, hängt davon ab, wie aktuell die jeweils sein müssen.
Und das hat auch nichts mit irgend einer API oder XAPI zu tun - das geht anders auf eine Art und Weise, die die OSM-Server nicht im geringsten belastet.
aus meiner Sicht der total falsche Ansatz. Du schlägst dich ständig mit Problemen rum, an die jeweils aktuellen OSM-Daten zu kommen.
Sieh es mal so: Was wäre, wenn deine lokale OSM-DB immer aktuell ist. Das wär doch was - oder?
php null Problemo - mysql Riesenproblem.
OSM-Datenbanken rennen nur vernünftig mit postgresql zusammen mit der postgis-erweiterung.
Da sind aber gleich alle Funktionen drin, die du so brauchen solltest: Abstand, Zentrum, nächstes Objekt, Umgebung eines Punktes …
Es spricht aber technisch nichts dagegen, dass deine Anwendung mit 2 Datenbanken arbeitet.
Also… generell verstehe ich ja das Ihr alle wollt das ich die komplette OSM-Datenbank nehme aber das bringt auch riesen Probleme mit sich…
Der Bereich steht vorher nicht fest. Wenn auf einmal eines der Fahrzeuge nach Spanien fährt (z.B. über die Autobahn) dann brauch ich ja nicht ganz Spanien dondern nur das Gebiet um die Autobahn, stimts?
Ich dachte mir jetzt das ich das was ich brauche über die API hole und dann damit in meiner DB das anstelle was ich brauche… Ganz Deutschland wäre schlicht weg eine zu große Datenmenge, sorry^^
Wie aktuell müssen die Daten denn sein? Reicht es tagesaktuell? Reicht es, wenn die Karte von vor drei Wochen ist?
Wenn du einen 3 km breiten Kartenstreifen “Autobahn von Flensburg nach Madrid” über die API abrufen willst, musst du arg viel Geduld mitbringen.
Entweder du zerlegst die Strecke in lauter Rechtecke und fragst die Rechtecke dann (evtl. einzeln) ab, oder du baust dir ein (sehr längliches) Polygon und holst dir die Daten, die innerhalb des Polygons liegen. Mal davon abgesehen, dass ich nicht weiß, ob die API Polgone überhaupt unterstützt, die Abfrage ist mit sehr viel Rechenaufwand verbunden und wird im ungünstigsten Fall nach ein paar Versuchen durch die Saveguards des OSM-SPI-Servers geblockt.
Da ist es unter Umständen schneller, ein europe.osm.pbf bereitzuhalten und auf Anforderung automatisch zu schneiden und in die Datenbank zu schieben.
Straßennamen inkl. der einzelnen Punkte der Straße
Die Punkte der Straßen sind am wichtigsten da ich damit verschiedene Sachen berechnen muss, aber vllt. brauch ich auch mal nen maxspeed oder so…
Ich könnte auch 3 einzelne Files runterladen:
Wöchentlich Stadt- und Landesgrenzen sowie die PLZ-Gebiete und dann je nach bedarf die einzelnen Straßen. Eine Straße die allerdings in der DB wäre würde erst nach einer Woche wieder abgefragt.
Das soll den XAPI-Server dann entlasten und ich könnte auch vor der Abfrage den Filter setzen, dass ich z.B. nur Straßen haben will. Die Grenzen können ja meinetwegen auch gedownloaded werden, hauptsache ich brauch dafür keine Erweiterungen in PHP.
Ich müsste die Route übrigens schon sowieso in Rechtecke zerteilen, da ich ja auf der Stecke Flensburg-Madrin alle 50 sekunden einen GEO-Punkt habe… dann würde ich davon immer ein paar zusammenfassen (je nach größe der fläche), daraus nen Rechteck bilden und dieses noch ein wenig größer machen und davon dann die Daten abrufen…
Vorsehen tue ich dafür eine Datenbank mit einigen Tabellen:
Tabelle Punkte mit den einzelnen Punkten und infos zu den Punkten (also hier auch die einzelnen tags)
Tabelle Straßen (straßennamen, etc)
verknüpfungstabelle für Straße <-> Punkte
verschiedene Tabellen für PLZ- und Ländergrenzen wären dann auch noch möglich…
Ok ich gebe zu der Server ist echt nicht gerade oft erreichbar… Aber das kann ich echt nicht mit den Planet-Files machen… 160 GB! das muss man sich mal auf der Zunge zergehen lassen. Wenn ich mit dem Download fertig bin kann ich direkt wieder von vorne anfangen oder was? Ok einmal die Woche reicht aber trotzdem… dafür bräuchte ich 40 (!) Tage!!!
Also Europa laden (anmachen, schlafen gehen, aufstehen, zur schule gehen, schlafen gehen, aufwachen, entpacken :D) und dann ab dem Zeitpunkt wo das Europa-File erstellt wurde immer die Updates der Planet laden und anwenden?
Ich schau mir mal grad die Updates an. Dieses .osm-Format find ich nämlich garnicht mal so schlecht, dann kann ich mir das daraus picken und in meine Datenbank holen, was ich auch brauche. Haltestellen und so sind ja uninteressant für mich…