Rumah >Java >javaTutorial >Bagaimana Mengira Jarak Antara Dua Titik Dengan Tepat Menggunakan Latitud, Longitud dan Altitud?

Bagaimana Mengira Jarak Antara Dua Titik Dengan Tepat Menggunakan Latitud, Longitud dan Altitud?

Patricia Arquette
Patricia Arquetteasal
2024-11-02 18:44:311076semak imbas

How to Accurately Calculate Distance Between Two Points Using Latitude, Longitude, and Altitude?

Mengira Jarak antara Dua Titik Menggunakan Latitud dan Longitud

Masalah:

Coretan kod Java yang disediakan mengira jarak antara dua titik berdasarkan latitud dan longitudnya. Kebimbangan ialah formula yang digunakan mungkin menghasilkan keputusan yang sedikit tidak tepat, terutamanya apabila terdapat beberapa titik pada jarak yang ketara.

Penyelesaian:

Untuk menangani isu ini, berikut ialah pelaksanaan Java bagi kaedah Haversine yang mengambil kira perbezaan ketinggian juga:

<code class="java">/**
 * Calculate distance between two points in latitude and longitude taking
 * into account height difference. If you are not interested in height
 * difference pass 0.0. Uses Haversine method as its base.
 *
 * lat1, lon1 Start point lat2, lon2 End point el1 Start altitude in meters
 * el2 End altitude in meters
 * @returns Distance in Meters
 */
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>

Pelaksanaan ini mengira jarak dengan tepat sambil turut menggabungkan perbezaan ketinggian. Ia menggunakan kaedah Haversine sebagai asas sambil mempertimbangkan perbezaan ketinggian antara dua titik.

Atas ialah kandungan terperinci Bagaimana Mengira Jarak Antara Dua Titik Dengan Tepat Menggunakan Latitud, Longitud dan Altitud?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn