bounding box هو أبسط وأكثر الأدوات المكانية فائدةً في أي منظومة خرائط. إنه أربعة أرقام تصف مستطيلاً في فضاء خط العرض وخط الطول، ويظهر في كل تقريباً استدعاء API وملف GeoJSON ومكتبة خرائط ستستخدمها.
يشرح هذا الدليل ما هو bounding box، واصطلاحات التنسيق التي تحتاج معرفتها، وأنماط الإنتاج التي يبرع فيها، والمزالق التي تصطاد كل مطور مرةً على الأقل.
التعريف
bounding box (bbox) هو أصغر مستطيل محاذٍ للمحاور يحتوي معلماً أو مجموعة نقاط. "محاذٍ للمحاور" يعني أن جوانبه تسير على طول محوري خط العرض وخط الطول، والمستطيل غير مدوَّر. يُوصف bbox بأربعة أرقام: خط الطول الغربي وخط العرض الجنوبي وخط الطول الشرقي وخط العرض الشمالي.
لباريس، البيانات المكانية الرسمية تضع bbox المدينة تقريباً عند [2.224, 48.8156, 2.4699, 48.9022]. لفرنسا البرية نحو [-5.142, 41.333, 9.560, 51.089]. للكوكب كله [-180, -90, 180, 90].
bbox دائماً زاويتان متقابلتان. لا يمكنه وصف شكل غير مستطيلي، لكنه يمكنه وصف المستطيل الذي يلفّ أي شكل، وهذا كافٍ للتصفية المكانية السريعة.
مسألة التنسيق
اصطلاحات تنسيق bbox غير متسقة عبر الأنظمة، وعدم الاتساق هذا هو مصدر معظم أخطاء bbox.
GeoJSON ومعايير OGC ومعظم APIs الحديثة: [west, south, east, north] أي [minLng, minLat, maxLng, maxLat]. خط الطول أولاً ثم خط العرض بنظام WGS84.
بعض مكتبات خرائط الويب كـ Leaflet وكائنات حدود Mapbox GL: كائن LatLngBounds مع زاويتَي _southWest و_northEast. خط العرض أولاً ثم خط الطول.
كثير من APIs القديمة وصادرات CSV: [south, west, north, east] أي خط العرض أولاً. اقرأ المواصفة.
خدمات البلاطات وWMS: bbox بوحدات الإسقاط (متر Web Mercator لا خط العرض/الطول) حين تكون البلاطة في EPSG:3857.
القاعدة الدفاعية: لا تستخدم مصفوفة مجردة ذات 4 عناصر في كودك الخاص. غلّفها في كائن مكتوب بحقول مسماة ({ west, south, east, north }) حتى يكون الترتيب صريحاً. حوِّل عند حدود API.
أين تبرع bounding boxes
bbox هو أسرع تصفية مكانية ممكنة. ثلاثة استخدامات كلاسيكية:
ضبط الخريطة على معلم. حين يصل المستخدم إلى نتيجة بحث، تستدعي map.fitBounds(bbox) وتقوم الخريطة بالتكبير والتمرير لعرض المعلم مع هامش مناسب. كل مكتبة خرائط حديثة لديها هذا البدائي.
تصفية استعلامات API حسب المنطقة. محركات قواعد البيانات وواجهات APIs تفهرس bboxes بكفاءة عالية. استعلام مثل "أرني كل الأماكن في نطاق العرض هذا" يرسل bbox المرئي إلى الخادم الذي يستخدم فهرساً مكانياً لإعادة السجلات المتطابقة فقط. هذا أساس البحث المبني على منطقة العرض.
تحيّز الإكمال التلقائي والترميز الجغرافي. مرِّر bbox خريطة المستخدم الحالية كتحيّز لمنطقة العرض. يمنح geocoder النتائج داخل bbox وزناً أكبر، فكتابة "Liberty" داخل منطقة عرض نيويورك يعيد تمثال الحرية قبل أي Liberty أخرى في العالم.
استخدام رابع أقل وضوحاً: bboxes هي وحدة مسك الدفاتر في نظام بلاطات المتجهات. كل بلاطة تغطي bbox معروفاً عند تكبير معروف، والمصيّر يجمعها في الخريطة المرئية.
ما تعيده API
معظم geocoding APIs تعيد bbox مع كل تطابق، لأنه يخبرك بحجم المعلم المتطابق (bbox دولة ضخم، bbox مبنى صغير) وكيفية ضبط الخريطة. استجابة الترميز الجغرافي لـ "France" تعيد bbox على مستوى وطني، واستجابة لـ "10 Downing Street" تعيد bbox على مستوى المبنى.
يمكنك استخدام حجم bbox المُعاد كفحص عاقلية للدقة. استعلام يتطابق عند دقة "الدولة" لكن يعيد bbox بحجم المبنى مريب. استعلام يتطابق عند دقة "السطح" لكن يعيد bbox بحجم المدينة مكسور.
bounding boxes التي تتقاطع مع خط التاريخ الدولي
مزلق دقيق: bbox يتقاطع مع خط التاريخ الدولي عند درجة 180 كما في روسيا والمحيط الهادئ وفيجي لا يمكن وصفه بـ west < east لأنه يلف حول الكرة. تتباين الاصطلاحات:
- بعض الأنظمة تقسّم bbox إلى قطعتين، واحدة لكل جانب من خط التاريخ.
- بعض الأنظمة تسمح بـ
west > eastوتفسرها كـ "تلف حول". - GeoJSON يسمح بالتلف لكنه يوصي بالتقسيم لأغراض التشغيل البيني.
لمعظم حالات الاستخدام الأوروبية أو لدولة واحدة، لن تواجه هذا أبداً. إذا كنت تبني منتجاً عالمياً كخطوط الطيران أو الشحن، اختبر حالة خط التاريخ صراحةً.
bounding boxes مقابل المضلعات
bbox مستطيل. المعلم الحقيقي نادراً مستطيل. bbox فرنسا يشمل أجزاء من المحيط الأطلسي وإسبانيا. bbox مانهاتن يشمل أجزاء من نيوجيرسي وكوينز.
حين يكفي تقريب المستطيل (ضبط الخريطة والتصفية المبدئية السريعة)، bbox هو الأداة المناسبة. حين تحتاج معرفة ما إذا كانت نقطة فعلاً داخل المعلم، تحتاج رياضيات النقطة داخل المضلع مع هندسة الحدود الحقيقية. النمط الإنتاجي الشائع: تصفية بـ bbox أولاً (سريع وقابل للفهرسة ويزيل 99% من السجلات)، ثم تشغيل النقطة داخل المضلع على الباقين (بطيء لكن دقيق). هذا النهج ثنائي المرحلة هو كيفية عمل معظم قواعد البيانات المكانية تحت الغطاء.
bounding boxes في رؤية الكمبيوتر
قد ترى "oriented bounding box" مذكوراً في اكتشاف الكائنات أو الروبوتات أو التصيير ثلاثي الأبعاد. هذا مفهوم مختلف: OBB مدوَّر ليلائم معلماً بإحكام أكبر مما يفعله صندوق محاذٍ للمحاور. في العمل الجغرافي المكاني، bboxes المحاذية للمحاور هي المعيار لأنها تُفهرس بنظافة وتتوافق مع شبكة البلاطات وتختبر التداخل ببساطة.
كيف تستخدم MapAtlas بـ bounding boxes
كل نتيجة من Geocoding API وSearch API تعيد حقل bbox بامتداد المعلم المتطابق بترتيب خط الطول/العرض WGS84، بالضبط كما تتوقعه GeoJSON ومكتبات الخرائط الحديثة. يمكنك تمرير معامل boundary.rect.* لتحيّز الترميز الجغرافي نحو منطقة عرض، وIsochrone API تعيد مضلعات وقت السفر مع bbox محيط حتى تتمكن من ضبط الخريطة دون حسابه بنفسك.
للتعمق في GeoJSON وكيف تتلاءم bboxes في صورة البيانات المكانية الأشمل، انظر ما هو GeoJSON وما هو الترميز الجغرافي.
الأسئلة الشائعة
ما هو bounding box؟
bounding box (يُختصر bbox) هو أصغر مستطيل محاذٍ للمحاور يحتوي معلماً جغرافياً أو مجموعة نقاط. يُوصف بأربعة أرقام: الحد الأدنى والأقصى لخط الطول والحد الأدنى والأقصى لخط العرض. تُستخدم bboxes في كل مكان في الخرائط: لضبط الخريطة على معلم، ولتصفية استعلامات قواعد البيانات حسب المنطقة، ولتحديد امتداد بلاطة، وللتحيّز بنتائج الترميز الجغرافي نحو منطقة. إنها أبسط وأسرع بدائي مكاني في كود الإنتاج.
ما التنسيق المعياري لـ bounding box؟
GeoJSON ومعظم APIs الحديثة تستخدم الترتيب [west, south, east, north]، أي [minLng, minLat, maxLng, maxLat]. هذا هو التنسيق الذي يجب أن تعتمده بشكل افتراضي. بعض APIs القديمة وصادرات CSV تستخدم [south, west, north, east] أي خط العرض أولاً، وقليل منها تستخدم أربعة حقول منفصلة. تحقق دائماً من وثائق API أو التنسيق المحدد الذي تستخدمه.
ما الفرق بين bounding box العادي وoriented bounding box؟
bounding box العادي محاذٍ للمحاور: جوانبه تسير على طول محوري خط العرض وخط الطول. oriented bounding box (OBB) شائع في رؤية الكمبيوتر ومحركات الألعاب ومدوَّر ليلائم المعلم بإحكام أكبر مما يعطي مساحة أصغر لكن رياضيات أكثر تعقيداً. في العمل الجغرافي المكاني، bboxes المحاذية للمحاور هي المعيار لأنها تُفهرس بنظافة في قواعد البيانات المكانية وتتوافق مع شبكة البلاطات وتختبر التداخل ببساطة.
كيف أستخدم bounding box لتصفية geocoding API؟
مرِّر bbox كمعامل تحيّز منطقة عرض. في MapAtlas Geocoding API ترسل boundary.rect.min_lon وboundary.rect.min_lat وboundary.rect.max_lon وboundary.rect.max_lat ويرتّب geocoder النتائج داخل تلك المنطقة أعلى من النتائج خارجها. هذا ضروري للإكمال التلقائي داخل خريطة: مع تمرير المستخدم، تُحدّث bbox حتى تتطابق الاقتراحات مع ما يشاهده. بدون تحيّز bbox، الإكمال التلقائي لـ 'Springfield' يعيد أي Springfield بأعلى شعبية عالمية، وهو نادراً ما يقصده المستخدم.

