Une bounding box est la primitive spatiale la plus simple et la plus utile dans tout stack cartographique. Ce sont quatre nombres qui décrivent un rectangle en espace de latitude et longitude, et elle apparaît dans presque chaque appel d'API, fichier GeoJSON et bibliothèque cartographique que vous utiliserez jamais.
Ce guide explique ce qu'est une bounding box, les conventions de format à connaître, les patterns en production où elle s'impose, et les pièges qui guettent chaque développeur au moins une fois.
La définition
Une bounding box (bbox) est le plus petit rectangle aligné sur les axes contenant une entité ou un ensemble de points. "Aligné sur les axes" signifie que ses côtés suivent les axes de latitude et de longitude ; le rectangle n'est pas pivoté. La bbox est décrite par quatre nombres : la longitude ouest, la latitude sud, la longitude est et la latitude nord.
Pour Paris, la bbox municipale officielle est approximativement [2.224, 48.8156, 2.4699, 48.9022]. Pour la France métropolitaine, elle est approximativement [-5.142, 41.333, 9.560, 51.089]. Pour la planète entière, elle est [-180, -90, 180, 90].
Une bbox correspond toujours à deux coins opposés. Elle ne peut pas décrire une forme non rectangulaire, mais elle peut décrire le rectangle enveloppant n'importe quelle forme, ce qui suffit pour un filtrage spatial rapide.
La question du format
Les conventions de format pour les bbox sont incohérentes selon les systèmes, et cette incohérence est la source de la plupart des bugs liés aux bbox.
GeoJSON, normes OGC et la plupart des API modernes : [ouest, sud, est, nord], équivalent à [minLng, minLat, maxLng, maxLat]. Longitude en premier, latitude en second, les deux en WGS84.
Certaines bibliothèques de cartographie web (objets bounds Leaflet, Mapbox GL) : un objet LatLngBounds avec les coins _southWest et _northEast. Latitude en premier, puis longitude.
Nombreuses API plus anciennes et exports CSV : [sud, ouest, nord, est] (latitude en premier). Lisez la spécification.
Services de tuiles et WMS : bbox dans les unités de la projection (mètres Web Mercator, pas lat/lng) quand la tuile est en EPSG:3857.
La règle défensive : n'utilisez jamais un tableau brut de 4 éléments dans votre propre code. Enveloppez-le dans un objet typé avec des champs nommés ({ west, south, east, north }) pour que l'ordre soit explicite. Convertissez aux frontières des API.
Les usages où les bounding boxes s'imposent
Une bbox est le filtre spatial le plus rapide possible. Trois usages classiques :
Ajuster une carte à une entité. Quand l'utilisateur arrive sur un résultat de recherche, vous appelez map.fitBounds(bbox) et la carte effectue le zoom et le panoramique pour afficher l'entité avec une marge appropriée. Toutes les bibliothèques cartographiques modernes disposent de cette primitive.
Filtrer les requêtes API par zone. Les moteurs de base de données et les API de recherche indexent les bbox très efficacement. Une requête comme "montrer tous les lieux dans ce viewport" envoie la bbox visible au serveur, qui utilise un index spatial pour ne renvoyer que les enregistrements correspondants. C'est le fondement de la recherche basée sur le viewport.
Orienter l'autocomplétion et le géocodage. Passez la bbox courante de la carte comme biais de viewport. Le géocodeur pondère les résultats à l'intérieur de la bbox plus fortement, de sorte que taper "Liberté" dans le viewport de New York renvoie la Statue de la Liberté avant tout autre endroit nommé Liberté dans le monde.
Un quatrième usage, moins évident : les bbox sont l'unité de comptabilité d'un système de tuiles vectorielles. Chaque tuile couvre une bbox connue à un zoom connu, et le renderer les compose pour former la carte visible.
Ce que renvoie une API
La plupart des API de géocodage renvoient une bbox avec chaque correspondance, car elle indique à la fois la taille de l'entité correspondante (une bbox de pays est énorme, une bbox de bâtiment est minuscule) et comment ajuster la carte. Une réponse de géocodage pour "France" renvoie une bbox à l'échelle nationale ; une réponse pour "10 Downing Street" renvoie une bbox à l'échelle du bâtiment.
Vous pouvez utiliser la taille de la bbox renvoyée comme contrôle de cohérence de précision. Une requête qui correspond au niveau "pays" mais renvoie une bbox de la taille d'un bâtiment est suspecte. Une requête qui correspond au niveau "rooftop" mais renvoie une bbox de la taille d'une ville est cassée.
Les bounding boxes qui traversent l'antiméridien
Un piège subtil : une bbox qui traverse l'antiméridien à 180 degrés (par exemple pour la Russie, le Pacifique, Fidji) ne peut pas être décrite par ouest < est car elle s'enroule autour. Les conventions varient :
- Certains systèmes découpent cette bbox en deux parties, une pour chaque côté de l'antiméridien.
- Certains systèmes autorisent
ouest > estet l'interprètent comme "enroulement autour". - GeoJSON autorise l'enroulement mais recommande le découpage pour l'interopérabilité.
Pour la plupart des cas d'usage européens ou d'un seul pays, cela ne se produit jamais. Si vous construisez un produit mondial (routes aériennes, transport maritime, pêche), testez explicitement le cas de l'antiméridien.
Bounding boxes vs polygones
Une bbox est un rectangle. Une entité réelle est rarement rectangulaire. La bbox de la France inclut des parties de l'Atlantique et de l'Espagne. La bbox de Manhattan inclut des parties du New Jersey et du Queens.
Quand l'approximation rectangulaire est suffisante (ajustement de carte, pré-filtrage rapide), la bbox est le bon outil. Quand vous devez savoir si un point se trouve réellement à l'intérieur de l'entité, vous avez besoin d'un calcul point-dans-polygone sur la géométrie réelle de la frontière. Un pattern courant en production : filtrer par bbox en premier (rapide, indexable, élimine 99 % des enregistrements), puis exécuter le point-dans-polygone sur les survivants (plus lent mais précis). C'est ainsi que fonctionnent la plupart des bases de données spatiales en coulisses.
Les bounding boxes en vision par ordinateur
Vous verrez peut-être "oriented bounding box" mentionné en détection d'objets, robotique ou rendu 3D. C'est un concept différent : une OBB est pivotée pour s'adapter plus étroitement à une entité qu'un rectangle aligné sur les axes ne le ferait. En géospatial, les bbox alignées sur les axes sont la norme car elles s'indexent proprement, s'emboîtent dans la grille de tuiles et sont triviales à tester pour le chevauchement. Les bbox orientées apparaissent quand vous avez besoin de calculs de rectangle pivoté, ce qui est rare en cartographie mais courant en vision par ordinateur.
Comment MapAtlas utilise les bounding boxes
Chaque résultat de l'API Geocoding et de l'API Search renvoie un champ bbox avec l'étendue de l'entité correspondante dans l'ordre longitude/latitude WGS84, exactement le format qu'attendent GeoJSON et les bibliothèques cartographiques modernes. Vous pouvez passer un paramètre boundary.rect.* pour orienter le géocodage vers un viewport, et l'API Isochrone renvoie ses polygones de temps de trajet avec une bbox englobante pour que vous puissiez ajuster une carte sans la calculer vous-même.
Pour une introduction pratique à GeoJSON et à la manière dont les bbox s'inscrivent dans le tableau plus large des données spatiales, consultez Qu'est-ce que GeoJSON et Qu'est-ce qu'un géocode.
Questions fréquemment posées
Qu'est-ce qu'une bounding box ?
Une bounding box (souvent abrégée en bbox) est le plus petit rectangle aligné sur les axes contenant une entité géographique ou un ensemble de points. Elle est décrite par quatre nombres : la longitude minimale et maximale, et la latitude minimale et maximale. Les bounding boxes sont utilisées partout dans la cartographie : pour ajuster une carte à une entité, filtrer des requêtes de base de données par zone, définir l'étendue d'une tuile et orienter les résultats de géocodage vers une région. Ce sont les primitives spatiales les plus simples et les plus rapides dans le code en production.
Quel est le format standard d'une bounding box ?
GeoJSON et la plupart des API modernes utilisent l'ordre [ouest, sud, est, nord], aussi écrit [minLng, minLat, maxLng, maxLat]. C'est le format à utiliser par défaut. Certaines API plus anciennes et exports CSV utilisent [sud, ouest, nord, est] (latitude en premier), et quelques-unes utilisent quatre champs séparés. Vérifiez toujours la documentation de l'API ou du format spécifique. L'erreur la plus fréquente est de mélanger l'ordre lat/lng, ce qui place la box du mauvais côté de la planète.
Quelle est la différence entre une bounding box et une oriented bounding box ?
Une bounding box classique est alignée sur les axes : ses côtés suivent les axes de latitude et de longitude. Une oriented bounding box (OBB, courante en vision par ordinateur et moteurs de jeu) est pivotée pour s'adapter plus étroitement à l'entité, ce qui donne une surface plus petite mais des calculs plus complexes. En géospatial, les bbox alignées sur les axes sont la norme car elles s'indexent proprement dans les bases de données spatiales, s'emboîtent dans la grille de tuiles et sont trivialement testables pour le chevauchement. Les oriented bounding boxes apparaissent dans le rendu 3D, la détection d'objets et les moteurs physiques.
Comment utiliser une bounding box pour filtrer une API de géocodage ?
Passez la bbox comme paramètre de biais de viewport. Dans l'API Geocoding MapAtlas, vous envoyez `boundary.rect.min_lon`, `boundary.rect.min_lat`, `boundary.rect.max_lon`, `boundary.rect.max_lat`, et le géocodeur classe les résultats à l'intérieur de cette zone plus haut que les résultats à l'extérieur. C'est indispensable pour l'autocomplétion dans une carte : à mesure que l'utilisateur se déplace, vous mettez à jour la bbox pour que les suggestions correspondent à ce qu'il regarde. Sans biais de bbox, une autocomplétion pour 'Springfield' renvoie le Springfield avec la popularité mondiale la plus élevée, ce qui correspond rarement à l'intention de l'utilisateur.

