Jörg Reinholz: Umkreisberechnung

Beitrag lesen

Ich möchte berechnen, ob ein Standpunkt, angegeben durch Geokoordinaten, im Umkreis von einem anderen Standpunkt liegt.

Vermutlich kommen Deine Daten aus einer Datenbank mit vielen Orten.

Mein Rat: Gehe mehrstufig vor.

Ermittle zunächst alle Orte aus der Datenbank, die innerhalb des durch die maximale Abweichung von Ausgangsort bestimmten VIERECKS liegen. Das ist eine realtiv simple Operation, du kannst also für Länge und Breite je einen minimalen und maxinalen Wert vorberechnen.

Damit hast folgende, einfache Abfrage:

select
   orte #wasauchimmer
from
   tabelle
where
        lat  <= lat_min
    and lat  >= lat_max
    and long <= long_min
    and long >= long_max

Dann erittle in einem zweiten Durchgang (das kann eine Abfrage aus einer temporären Tabelle oder in der "umgebenden" Programmiersprache sein) für jeden dieser Orte die genaue Entfernung zum Ausgangsort z.B. mit Gustls Formel (für die ich mich jetzt mal nicht verbürge) und bestimme so, ob der Radius passt.

Es wird die Datenbank ganz wesentlich entlasten, wenn nicht grundlos so relativ aufwendige Berechnungen angestellt werden müssen.

Du kannst Dir die Geschwindigkeit ja mal in diesem uralten Projekt ansehen.

Jörg Reinholz