"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية حساب المسافة بين نقطتين باستخدام خطوط الطول والعرض والارتفاع؟

كيفية حساب المسافة بين نقطتين باستخدام خطوط الطول والعرض والارتفاع؟

تم النشر بتاريخ 2024-11-09
تصفح:644

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

حساب المسافة بين نقطتين باستخدام خط العرض وخط الطول

لحساب المسافة بين نقطتين بدقة بناءً على خط الطول والعرض، من الضروري للنظر في انحناء سطح الأرض. طريقة هافرسين، وهي صيغة معروفة، تعالج هذا الانحناء وتوفر نتائج دقيقة.

كود دومر

يستخدم كود دومر صيغة هافيرسين لحساب المسافة. ومع ذلك، فإنه لا يأخذ في الاعتبار أي فروق في الارتفاع بين النقطتين.

التنفيذ الموصى به

بالنسبة لمسارات نظام تحديد المواقع العالمي (GPS) أو التطبيقات التي يكون فيها الارتفاع عاملاً، فكر في هذا التعديل التنفيذ:

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);
}

يتضمن هذا الرمز كلاً من صيغة Haversine وفروق الارتفاع لحساب المسافة بين نقطتين بدقة.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3