حساب المسافة من نقطة إلى خط دائرة عظمى لا نهائي
تحسب هذه الأداة أقصر مسافة كروية من نقطة ذات خط عرض وطول إلى الدائرة العظمى الكاملة التي يحددها إحداثيان آخران. بخلاف حساب القطعة، لا يتوقف الخط عند نقطتي التعريف، بل يمتد حول الكرة في الاتجاهين. تتضمن النتيجة الأمتار والكيلومترات والدرجات الزاوية، وتستخدم نصف قطر الأرض المتوسط افتراضيا، كما تقبل نصف قطر مخصصا لجسم كروي آخر أو لمقياس هندسي مختلف.
شغّل الأداة مجانًا
حدد النقطة وخط الدائرة العظمى اللانهائي
أدخل إحداثي النقطة المطلوب فحصها في point_lat وpoint_lon، ثم قدم إحداثيين يقعان على الخط المقصود. استخدم line_start_lat مع line_start_lon للنقطة الأولى، وline_end_lat مع line_end_lon للنقطة الثانية. يحدد هذان الإحداثيان دائرة عظمى، وهي تقاطع سطح الكرة مع مستوى يمر بمركزها. يعامل الحساب هذه الدائرة كخط لا نهائي يمتد بعد نقطتي التعريف في الاتجاهين ويلتف في النهاية حول الكرة. تظهر أهمية ذلك عندما تقع قدم العمود خارج القوس القصير بين النقطتين؛ فحساب القطعة سيختار إحدى النهايتين، أما هذه القدرة فتقيس إلى الدائرة العظمى الممتدة. يجب أن يكون خط العرض بين -90 و90 درجة، وخط الطول بين -180 و180 درجة. لا يجوز أن تكون النقطتان متطابقتين أو متقابلتين قطريا، لأن أيا من الحالتين لا يحدد مستوى فريدا. يمكن إرسال الدرجات العشرية كأرقام أو كسلاسل رقمية صارمة، سواء من نموذج أو من طلب API منظم.
افهم الحساب الكروي ومخرجاته
يحول كل إحداثي إلى متجه وحدة ثلاثي الأبعاد يبدأ من مركز الكرة. يعطي الضرب الاتجاهي لمتجهي نقطتي الخط متجها عموديا على مستوى الدائرة العظمى. بعد توحيده، تعطي القيمة المطلقة لضربه القياسي في متجه النقطة جيب الفصل الزاوي العمودي. ثم يعطي الجيب العكسي أصغر زاوية غير موقعة بين النقطة والدائرة العظمى. ينتج distance_m من ضرب تلك الزاوية في radius_m، بينما يساوي distance_km القيمة نفسها مقسومة على ألف. تتضمن الاستجابة أيضا angular_distance_deg لمن يعمل مباشرة بالزوايا الكروية. نصف القطر الافتراضي هو 6,371,008.8 متر، أي متوسط نصف قطر الأرض وفق IUGG، ويمكنكم تقديم أي نصف قطر موجب آخر. هذا نموذج كروي وليس حلا جيوديسيا على مجسم إهليلجي. تتجنب صيغة المتجهات تشوه خطوط الطول الناتج عن الإسقاط المستوي، وتعالج بصورة طبيعية الخطوط التي تعبر خط الزوال المقابل من دون فاصل خاص.
فسر أقصر مسافة تفسيرا صحيحا
تكون المسافة الناتجة غير سالبة دائما، وهي تجيب عن سؤال محدد: كم تبعد النقطة المطلوب فحصها عن أقرب موضع في أي مكان على الدائرة العظمى الكاملة؟ لا تبين النتيجة إن كانت النقطة على يسار مسار موجه أو يمينه، ولا مقدار التقدم على المسار حتى قدم العمود، ولا ما إذا كانت القدم بين إحداثيي التعريف. تتطلب هذه الأسئلة مسافة عرضية موقعة أو منطق قطعة. تعني النتيجة الصفرية أن النقطة تقع في مستوى الدائرة العظمى نفسه ضمن دقة الفاصلة العائمة، حتى لو كانت بعيدة جدا عن القوس المعطى. عند المقارنة بقياسات مساحية محلية، تذكروا أن النموذج يمثل الأرض ككرة، بينما الأرض الحقيقية مجسم إهليلجي مفلطح، وتضيف التضاريس ارتفاعا، وقد تتبع المسارات الواقعية طرقا أو مجالات مصرحا بها. احتفظوا بنصف قطر الإدخال لضمان إمكان إعادة الحساب. يؤدي عكس ترتيب النقطتين إلى تغيير إشارة المتجه العمودي فقط، ولا يغير هذه المسافة المطلقة.
حالات الاستخدام
فحص مسار طيران ممتد
قيسوا بعد نقطة طريق عن الخط الجيوديسي الكامل الذي يحدده إحداثيان، حتى إن وقعت أقرب قدم بعد القوس المعطى.
التحقق من هندسة الخرائط العالمية
تحققوا من أن إحداثيات يفترض وقوعها على دائرة عظمى واحدة تلتزم بسماحية كروية من دون إسقاطها على خريطة مستوية.
نمذجة جسم كروي آخر
قدموا نصف قطر مخصصا لحساب المسافة المناظرة على كوكب أو قمر أو كرة أرضية أو كرة هندسية مجردة.
الأسئلة الشائعة
ما تكلفة طلب API؟
يكلف كل طلب API مبلغ $0.002. ويمكن تشغيل حاسبة المتصفح محليا مجانا.
هل يقتصر الخط على القوس بين النقطتين؟
لا. يستخدم الحساب الدائرة العظمى الكاملة الممتدة عبر النقطتين في الاتجاهين.
لماذا ترفض النقطتان المتطابقتان أو المتقابلتان؟
لأن أيا من الزوجين لا يحدد مستوى دائرة عظمى فريدا، ولذلك يكون الخط المطلوب ملتبسا.
هل تستخدم الحاسبة مجسم WGS 84 الإهليلجي؟
لا. تستخدم افتراضيا كرة بمتوسط نصف قطر الأرض وفق IUGG، أو نصف القطر المخصص الذي تقدمونه.
هل يغير عكس نقطتي الخط النتيجة؟
لا. يعكس ذلك إشارة المتجه العمودي على المستوى، لكنه لا يغير المسافة العمودية المطلقة.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/geo/point-to-line-distance \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"point_lat":10,"point_lon":20,"line_start_lat":0,"line_start_lon":0,"line_end_lat":0,"line_end_lon":90}'const res = await fetch("https://api.kit.forhosting.com/geo/point-to-line-distance", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"point_lat": 10,
"point_lon": 20,
"line_start_lat": 0,
"line_start_lon": 0,
"line_end_lat": 0,
"line_end_lon": 90
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/point-to-line-distance",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"point_lat": 10,
"point_lon": 20,
"line_start_lat": 0,
"line_start_lon": 0,
"line_end_lat": 0,
"line_end_lon": 90
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/point-to-line-distance", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"point_lat":10,"point_lon":20,"line_start_lat":0,"line_start_lon":0,"line_end_lat":0,"line_end_lon":90}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"point_lat":10,"point_lon":20,"line_start_lat":0,"line_start_lon":0,"line_end_lat":0,"line_end_lon":90}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/point-to-line-distance", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"point_lat": 10,
"point_lon": 20,
"line_start_lat": 0,
"line_start_lon": 0,
"line_end_lat": 0,
"line_end_lon": 90
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.point_to_line_distance",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |