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