Heim  >  Artikel  >  Java  >  Wie berechnet man die Entfernung zwischen zwei Punkten auf der Erde anhand der Breiten- und Längengrade?

Wie berechnet man die Entfernung zwischen zwei Punkten auf der Erde anhand der Breiten- und Längengrade?

Linda Hamilton
Linda HamiltonOriginal
2024-11-01 01:48:28959Durchsuche

How to Calculate Distance Between Two Points on Earth Using Latitude and Longitude?

Einführung in die auf Breiten- und Längengraden basierende Entfernungsberechnung

Die Berechnung der Entfernung zwischen zwei Punkten auf der Erdoberfläche anhand ihrer Breiten- und Längenkoordinaten ist eine grundlegende Aufgabe in verschiedenen Anwendungen. Im Folgenden untersuchen wir die Feinheiten der Berechnung dieser Entfernung mithilfe eines Java-Codeausschnitts und befassen uns mit einer verbesserten Implementierung, die Höhenunterschiede berücksichtigt.

Berechnung der Entfernung mithilfe eines Java-Codeausschnitts

Der von Dommer bereitgestellte Code verwendet eine vereinfachte Formel, um den Abstand zwischen zwei Punkten auf der Erdoberfläche zu berechnen:

<code class="java">double temp = Math.cos(Math.toRadians(latA))
            * Math.cos(Math.toRadians(latB))
            * Math.cos(Math.toRadians((latB) - (latA)))
            + Math.sin(Math.toRadians(latA))
            * Math.sin(Math.toRadians(latB));
    return temp * RADIUS * Math.PI / 180;</code>

Diese Formel geht von einer kugelförmigen Erde aus und liefert vernünftige Ergebnisse für kleine Entfernungen. Höhenunterschiede werden jedoch nicht berücksichtigt, was bei erheblichen Entfernungen zu Ungenauigkeiten führen kann.

Einführung der Haversine-Formel für die höhenbezogene Entfernungsberechnung

Um die Einschränkungen zu beheben Von der von Dommer verwendeten Formel wenden wir uns der Haversine-Formel zu, die ein präziseres Modell zur Darstellung der Erdform enthält. Diese Formel berücksichtigt explizit den Abstand und den Höhenunterschied zwischen den beiden Punkten:

<code class="java">public static double distance(double lat1, double lat2, double lon1,
        double lon2, double el1, double el2) {

    final int R = 6371; // Radius of the earth
    
    double latDistance = Math.toRadians(lat2 - lat1);
    double lonDistance = Math.toRadians(lon2 - lon1);
    double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2)
            + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2))
            * Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2);
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
    double distance = R * c * 1000; // convert to meters

    double height = el1 - el2;

    distance = Math.pow(distance, 2) + Math.pow(height, 2);

    return Math.sqrt(distance);
}</code>

Diese Formel bietet eine genauere Darstellung des Abstands und ist daher für Anwendungen wertvoll, die präzise geografische Berechnungen erfordern.

Das obige ist der detaillierte Inhalt vonWie berechnet man die Entfernung zwischen zwei Punkten auf der Erde anhand der Breiten- und Längengrade?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn