Frage zu dem Aufbau der exportierten OSM Dateien

Hallo, ich bin neu hier im OSM Forum und vielleicht könnt ihr mir bei meinem Problem helfen.

Eine kurze beschreibung was ich eigentlich machen will :

ich muss aus den exportieren OSM Dateien die Positionen von Tankstellen, MC,Bürgerking oder Kirchen rausholen.
Diese Informationen sind ja im diesem Format gespeichert:

Anhand dieser Informationen will ich eine neue OSM datei erstellen, die auf den Koordinaten der Tankstelle eine rechteckige Fläche (mit 4 Punkten) erstellt.
Diese soll dann z.B. das Tankstellen Gebäude representieren, das in einem 3D modellierungs Programmen anschliessend bearbeitet wird.

Problem:

Ich muss die neu erstellte Fläche bzw. die nötigen Punkte so ausrichten/berechnen, das sie sich nicht mit den umliegenden Strassen überschneiden.
Dafür muss ich die Koordinaten der Umliegenden Objekte rausfinden.

Frage:
Sind die OSM Daten so aufgebaut, dass die eingetragenen nodes und ihre nachbarn (oben/unten) immer neben einander liegen ?
also z.B wenn in dem OSM File so stehen würde

Tankstelle

Kann ich davon ausgehen das die einträge die drüber und drunter stehen die objekte sind die die geringste Entfernung zu meiner Tankstelle haben, also direkte Nachbarn ?

Wenn NEIN → Gibts es eine bekannte Möglichkeit rauszufinden , welche Knoten die unmittelbaren Nachbarn sind ?

danke schon mal für die Hilfe .

Also da gibt es ein klares NEIN. Die IDs werden chronologisch fortlaufend so vergeben, wie sie eingetragen werden, unabhängig vom Raumbezug.
Den bekommst du nur, indem du dir die Ecke im Editor anschaust.

Gruß,
ajoessen

Also muss ich die lat und die lon werte der Gesammten Datei untersuchen, um festzustellen welche davon im Bereich meiner Tankstelle vorzufinden sind.

Gibt es dort irgendwelche ansätze um das schnell zumachen, weil es sind ja enorme berechnung wenn ich wirklich jeden Knoten untersuchen muss ?

Wenn das für die ganze Welt gemacht werden soll, dann brauchst einen verdammt schnellen Computer mit Datenbank.

Wenn es aber nur ein paar einzelne sein sollen, dann kannst per api einen Bereich von 50m um den Punkt laden und mit diesen Werten arbeiten.

Den Abstand zwischen Punkt und Linie musst aber selbst berechnen. Dafür gibt es aber sicher fertige mathematische Formeln.

PHP kann die OSM-XML-Dateien sehr schnell im Stream parsen. Ansonsten solltest Du vielleicht mal eine eigene Datenbank im Blick behalten. So kannst Du via SQL-Abfragen einfach alles das rausselektieren, wie Du es brauchst.