suit: Umkreissuche

Beitrag lesen

habt ihr schon einmal eine Umkreissuche programmiert? z.B. ich befinde mich in Köln (50679) und möchte sagen zeig mir alle Daten an, die um Umkreis von 10km sind.

Definiere "Umkreis" :)

Wie könnte ich das lösen?

Ich gehe davon aus, du willst eine einfache übliche Möglichkeit verwenden. Dabei gehen wir von folgenden Faktoren aus:

  1. du willst die Luftlinie berechnen und vernachlässigst, wie Jörg schon angedeutet hat irgendwelche Hindernisse wie Flüsse ohne Bücken oder Berge.

  2. du gehst davon aus, dass die Erde näherungsweise eine Kugel ist und nimmst dafür einen fertigen Standard her GRS 80 definiert hier das WGS84 Ellipsoid, welches unter anderem auch für GPS verwendet wird. Wir nehmen die dortige Definition des Ellipsoids und legen das auf eine Volumengleiche um - das entspricht dann einem mittleren Erdradius von 6371000,785 Metern

  3. wir ignorieren sämtliche Abplattungs oder positionsabhängigen Radiusabweichungen und nutzen _nur_ diese Kugel - das führt in Europa, den USA - also "unseren Breiten" zu guten Ergebnisse, scheitert aber um einige Meter wenn es um Berechnungen in Pol- oder Äquatornähe geht oder welche die sich von der Nord- in die Südhalbkugel erstrecken.

Das einzige was jetzt noch zu tun ist, ist eine Orthodrome zu berechnen - das ist ein Teilstück aus einem Großkreis auf einer Kugeloberfläche.

Die Formel zur Berechnung dieser Strecke findet sich auch in der deutschsprachigen Wikipedia
https://de.wikipedia.org/wiki/Orthodrome#Strecke

Ein Fallstrick hierbei: Längen und Breitengrade werden mit Winkelgraden (voller Winkel = 360 Grad) angegeben, die meisten Script- und Programmiersprachen erwarten aber bei trigonometrischen Funktion eine Angabe in Radiant. Und dann natürlich nicht vergessen: das Ergebnis ist in Metern.