حساب مربع الإحاطة من نصف القطر وخطي العرض والطول
منطقة بنصف قطر 1000 م حول 51.5074، −0.1278 تتحول إلى الحدود الأربعة لأصغر مستطيل من خطوط العرض والطول يحيط بها، مع مؤشرات لعبور خط التاريخ وبلوغ القطبين. وهي تصفية أولية سريعة قبل حساب المسافة الدقيقة. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- خط العرض
- 51.5074
- خط الطول
- -0.1278
- نصف القطر (m)
- 1,000
- أدنى خط عرض
- 51.4984067964
- أدنى خط طول
- -0.1422489201
- أقصى خط عرض
- 51.5163932036
- أقصى خط طول
- -0.1133510799
تحوّل هذه الحاسبة خط العرض المركزي وخط الطول المركزي ونصف القطر بالأمتار إلى أصغر مستطيل جغرافي يحيط بالحاجز الدائري المقابل على نموذج كروي للأرض. تعرض النتيجة الإحداثيات الدنيا والعليا، إلى جانب مؤشرين لعبور خط التاريخ وتغطية جميع خطوط الطول. تفيد الأداة عندما تحتاج قاعدة بياناتكم أو خدمة الخرائط أو الفهرس المكاني إلى مرشح مستطيل سريع قبل إجراء اختبار أدق للمسافة.
أدخلوا المركز ونصف القطر بوحدات واضحة
يجب أن يقع خط العرض بين -90 و90، وخط الطول بين -180 و180، ولا يجوز أن يكون نصف القطر سالبا. الصفر قيمة صالحة، وينتج مربعا منكمشا تتطابق حدوده مع النقطة الأصلية. يستخدم الحساب متوسط نصف قطر الأرض وفق IUGG، وهو 6,371,008.8 متر، بوصفه نموذجا كرويا عمليا لمناطق البحث ومعاينات الخرائط والمرشحات الأولية لقواعد البيانات.
لا ينبغي تقديم هذا المستطيل على أنه حد مساحي عالي الدقة؛ فالغرض منه إحاطة المنطقة الدائرية بصورة موثوقة ضمن النموذج المعلن. حافظوا على المرجع الإحداثي نفسه طوال سير العمل، ولا تمرروا الكيلومترات أو الأميال أو الدرجات حيث تكون الأمتار مطلوبة.
اقرؤوا النتائج العادية ونتائج عبور خط التاريخ
في النتيجة العادية تكون كل قيمة دنيا أقل عدديا من القيمة العليا المقابلة، ولذلك يمكن استعمال المستطيل مباشرة في استعلام نطاقي. تحتاج خطوط الطول قرب 180 درجة إلى معاملة خاصة. لا تعيدوا ترتيب الحدين، لأن ذلك سيختار المنطقة المقابلة الواسعة بدلا من الصندوق الضيق حول المركز.
يظل خط العرض نطاقا واحدا عاديا. للحصول على بحث موثوق، رشحوا السجلات بالمربع أولا، ثم احسبوا مسافة الدائرة العظمى الفعلية؛ فقد تقع زوايا المستطيل خارج الحاجز الدائري.
تعاملوا مع الحواجز القطبية وأنصاف الأقطار العالمية
لا يمكن تمثيل حاجز يصل إلى أحد القطبين بنطاق ضيق من خطوط الطول، لأن جميع خطوط الزوال تلتقي عند القطب. تنطبق التغطية الكاملة نفسها عندما يبلغ نصف القطر نصف محيط الكرة. يمنع هذا السلوك القسمة غير المستقرة قرب القطبين، ويحول دون استبعاد نقاط صحيحة بسبب مربع ضيق بصورة مضللة.
الخوارزمية حتمية ولا تستخدم الشبكة أو بيانات مخزنة أو قرارات تعتمد على الوقت. لذلك تلائم المعالجة القابلة للتكرار ومفاتيح التخزين المؤقت والاختبارات والحساب داخل المتصفح. تذكروا أن مربع الإحاطة غلاف فعال، وليس مضلعا يرسم الحافة الدائرية بدقة.
حالات الاستخدام
الترشيح الأولي للبحث عن الأماكن القريبة
أنشئوا نطاقات عرض وطول مناسبة للفهارس قبل حساب المسافة الدقيقة لعدد أقل من النتائج المرشحة.
اختيار العرض الأولي للخريطة
استخرجوا حدودا جغرافية تحتوي نصف قطر حول موقع محدد، مع معالجة آمنة للقطبين وخط التاريخ.
تقسيم العمل الجغرافي المكاني
حوّلوا مهام النقطة ونصف القطر إلى امتدادات مستطيلة ثابتة للتخزين المؤقت أو البلاطات أو الطوابير أو العمليات المكانية.
الأسئلة الشائعة
ما تكلفة الطلب الواحد؟
ويمكن أيضا تنفيذ الحساب داخل المتصفح عندما تدعم صفحة الويب ذلك.
ما نموذج الأرض المستخدم؟
يستخدم الحساب كرة بمتوسط نصف قطر الأرض وفق IUGG، وقدره 6,371,008.8 متر.
هل تقع كل نقطة داخل المربع ضمن نصف القطر؟
لا. يحيط المربع بالحاجز الدائري، ولذلك قد تكون زواياه أبعد من نصف القطر. أجروا اختبار مسافة دقيقا عند الحاجة.
كيف أستعلم عن مربع يعبر خط التاريخ؟
قسّم خط الطول إلى نطاقين: من أدنى خط طول حتى 180، ومن −180 حتى الأقصى. وحين يكون مؤشر العبور مفعّلًا يكون الأدنى أكبر عدديًا من الأقصى عن قصد، فلا تبدّل بينهما.
ماذا يحدث عندما تبلغ المنطقة أحد القطبين؟
تصبح خطوط الطول −180 و180 ويتفعّل مؤشر تغطية كل خطوط الطول، لأن جميع خطوط الزوال تلتقي عند القطب. وفي هذه الحالة صفِّ النتائج بحدود خط العرض وحدها ودون تصفية بخط الطول.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/geo/buffer-bbox \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"lat":51.5074,"lon":-0.1278,"radius_m":1000}'const res = await fetch("https://api.kit.forhosting.com/geo/buffer-bbox", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"lat": 51.5074,
"lon": -0.1278,
"radius_m": 1000
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/buffer-bbox",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"lat": 51.5074,
"lon": -0.1278,
"radius_m": 1000
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/buffer-bbox", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"lat":51.5074,"lon":-0.1278,"radius_m":1000}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"lat":51.5074,"lon":-0.1278,"radius_m":1000}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/buffer-bbox", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"lat": 51.5074,
"lon": -0.1278,
"radius_m": 1000
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.buffer_bbox",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
أدخلوا المركز ونصف القطر بوحدات واضحة
حددوا المركز بقيمتي lat وlon بالدرجات العشرية، ثم أدخلوا نصف القطر بالأمتار في radius_m. تقرب الإحداثيات إلى عشر منازل عشرية للحصول على JSON ثابت مع الاحتفاظ بدقة أكبر بكثير مما تحتاج إليه معظم بيانات المواقع.
اقرؤوا النتائج العادية ونتائج عبور خط التاريخ
القيم الأربع الأساسية هي min_lat وmin_lon وmax_lat وmax_lon. إذا عبر الحاجز الدائري خط التاريخ، تلتف خطوط الطول من القيم الموجبة إلى السالبة وتصبح قيمة crosses_antimeridian هي true. عندئذ تكون min_lon أكبر من max_lon عن قصد. نفذوا الاستعلام على نطاقين: من min_lon إلى 180، ومن -180 إلى max_lon.
تعاملوا مع الحواجز القطبية وأنصاف الأقطار العالمية
لذلك تعيد الحاسبة min_lon بقيمة -180 وmax_lon بقيمة 180، وتجعل covers_all_longitudes مساوية لـ true كلما وصل نطاق العرض إلى قطب. تكون crosses_antimeridian في هذه الحالات false، لأن تقسيم النطاق لا يضيف معلومة مفيدة. استخدموا حدود العرض وتجاوزوا ترشيح الطول عندما تكون covers_all_longitudes هي true.
أسئلة تقنية
لماذا قد تكون min_lon أكبر من max_lon؟
يشير هذا الترتيب إلى عبور خط التاريخ. تعاملوا مع النتيجة كنطاقين لخط الطول من دون تبديل الحدين.
ماذا يحدث عندما يصل الحاجز إلى قطب؟
يمتد خط الطول من -180 إلى 180 وتصبح covers_all_longitudes هي true لأن جميع خطوط الزوال تلتقي عند القطب.