Rumah  >  Artikel  >  Java  >  Bagaimana Mengira Jarak Antara Dua Titik di Bumi Menggunakan Latitud dan Longitud?

Bagaimana Mengira Jarak Antara Dua Titik di Bumi Menggunakan Latitud dan Longitud?

Linda Hamilton
Linda Hamiltonasal
2024-11-01 01:48:28963semak imbas

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

Memperkenalkan Pengiraan Jarak Berasaskan Latitud dan Longitud

Mengira jarak antara dua titik di permukaan Bumi menggunakan koordinat latitud dan longitudnya ialah tugas asas dalam pelbagai aplikasi. Di bawah, kami akan meneroka selok-belok pengiraan jarak ini menggunakan coretan kod Java dan menyelidiki pelaksanaan yang dipertingkatkan yang menyumbang kepada perbezaan ketinggian.

Mengira Jarak Menggunakan Coretan Kod Java

Kod yang disediakan oleh Dommer menggunakan formula yang dipermudahkan untuk mengira jarak antara dua titik di permukaan Bumi:

<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>

Formula ini menganggap Bumi sfera dan menghasilkan hasil yang munasabah untuk jarak yang kecil. Walau bagaimanapun, ia gagal untuk mempertimbangkan perbezaan ketinggian, yang boleh menyebabkan ketidaktepatan untuk jarak yang ketara.

Memperkenalkan Formula Haversine untuk Pengiraan Jarak Sedar Ketinggian

Untuk menangani batasan daripada formula yang digunakan oleh Dommer, kita beralih kepada formula Haversine, yang menggabungkan model yang lebih tepat untuk mewakili bentuk Bumi. Formula ini secara jelas menjelaskan perbezaan jarak dan ketinggian antara dua titik:

<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>

Formula ini menyediakan perwakilan jarak yang lebih tepat, menjadikannya berharga untuk aplikasi yang memerlukan pengiraan geografi yang tepat.

Atas ialah kandungan terperinci Bagaimana Mengira Jarak Antara Dua Titik di Bumi Menggunakan Latitud dan Longitud?. 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