So berechnen Sie Linienabschnittsüberschneidungen auf einer Karte

8

Ich arbeite mit Breiten- / Längengradkoordinaten in einer Google Map.

Ich habe zwei Zeilen:

  • Linie A: 48.31508162629726, -2.591741396838972 bis 48.40216156645915, -2.2218462112093404
  • Linie B: 48.383816077371215, -2.274292940053768 bis 48.66103546935337, -1.7066197241571377

Ich verwende dann die folgende Formel, um den Punkt zu finden, an dem sie sich kreuzen.

%Vor%

Das sagt mir, dass die Linien tatsächlich die X- und Y-Werte kreuzen und zurückgeben.

Wenn ich jedoch den zurückgegebenen Punkt grafisch darstelle, wird er (nicht viel) von der realen Schnittmenge versetzt.

Gibt es einen besseren und genauso schnellen Algorithmus, den ich verwenden könnte, der mir den richtigen Schnittpunkt zurückgibt?

Es muss schnell sein, da ich über eine große Anzahl von Zeilen iteriere (~ 1000).

BEARBEITEN: Beachten Sie, dass dies einen Fehler-Offset von etwa 7,5 Metern ergibt.

    
Simon 25.07.2012, 12:44
quelle

1 Antwort

4

Ich gehe davon aus, dass der Algorithmus, den Sie verwenden, derjenige ist, um Linienüberschneidungen in einem kartesischen Koordinatensystem (d. h. einer Ebene) zu finden. Leider ist die Erde keine Ebene (oder sogar eine Kugel), so dass die Verwendung dieses Algorithmus einen Fehler verursacht. Google Maps verwendet ein Ellipsoid (speziell WGS84), um die Erdoberfläche zu approximieren. Daher benötigen Sie einen Algorithmus, um die Schnittpunkte von Bögen auf einem Ellipsoid zu finden.

Diese Seite enthält möglicherweise hilfreiche Informationen: Ссылка

    
Jeff Bridgman 25.07.2012 16:49
quelle

Tags und Links