La bounding box est la brique spatiale la plus simple et la plus utile de toute stack cartographique. Ce sont quatre nombres qui décrivent un rectangle en latitude et en longitude, et on la retrouve dans presque tous les appels d'API, fichiers GeoJSON et bibliothèques cartographiques que vous utiliserez.
Ce guide explique ce qu'est une bounding box, les conventions de format à connaître, les usages en production où elle rend le plus de services, et les pièges dans lesquels chaque développeur tombe au moins une fois.
La définition
Une bounding box (bbox, ou emprise) est le plus petit rectangle aligné sur les axes qui contient 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é. Quatre nombres décrivent la bbox : la longitude ouest, la latitude sud, la longitude est et la latitude nord.
Pour Paris, la bbox de la commune est d'environ [2.224, 48.8156, 2.4699, 48.9022]. Pour la France métropolitaine, Corse comprise, elle est d'environ [-5.142, 41.333, 9.560, 51.089]. Pour la planète entière, elle vaut [-180, -90, 180, 90].
Une bbox se résume toujours à deux coins opposés. Elle ne peut pas décrire une forme qui n'est pas rectangulaire, mais elle peut décrire le rectangle qui englobe n'importe quelle forme. Cela suffit pour un filtrage spatial rapide.
La question du format
Les conventions de format des bbox varient d'un système à l'autre, et ces écarts causent la plupart des bugs liés aux bbox.
GeoJSON, normes OGC et la plupart des API récentes : [ouest, sud, est, nord], soit [minLng, minLat, maxLng, maxLat]. La longitude d'abord, la latitude ensuite, les deux en WGS84.
Leaflet : un objet LatLngBounds avec les coins _southWest et _northEast, latitude d'abord, puis longitude. Mapbox GL et MapLibre utilisent LngLatBounds, avec la longitude d'abord.
Beaucoup d'API anciennes et d'exports CSV : [sud, ouest, nord, est] (latitude d'abord). Lisez la spécification.
Services de tuiles et WMS : la bbox est exprimée dans les unités de la projection (des mètres Web Mercator, pas des degrés) quand la tuile est en EPSG:3857.
La règle de prudence : n'utilisez jamais un simple tableau de 4 éléments dans votre propre code. Placez-le dans un objet typé avec des champs nommés ({ west, south, east, north }) pour que l'ordre soit explicite, et faites la conversion à l'entrée et à la sortie de chaque API.
Là où la bounding box rend le plus de services
La bbox est le filtre spatial le plus rapide qui existe. Voici trois usages classiques.
Cadrer une carte sur une entité. Quand l'utilisateur arrive sur un résultat de recherche, vous appelez map.fitBounds(bbox). La carte zoome et se déplace pour afficher l'entité avec une marge adaptée. Toutes les bibliothèques cartographiques récentes proposent cette fonction.
Filtrer les requêtes par zone. Les moteurs de base de données et les API de recherche indexent les bbox très efficacement. Une requête du type « tous les lieux visibles à l'écran » envoie au serveur la bbox de la zone affichée. Le serveur utilise un index spatial et renvoie seulement les enregistrements concernés. C'est la base de toute recherche limitée à la zone affichée.
Favoriser une zone dans l'autocomplétion et le géocodage. Passez la bbox actuelle de la carte comme zone préférée. Le géocodeur donne plus de poids aux résultats situés à l'intérieur. Si vous tapez « Liberty » sur une carte centrée sur New York, la statue de la Liberté arrive ainsi avant tous les autres lieux nommés Liberty dans le monde.
Un quatrième usage est moins visible : la bbox est l'unité de gestion d'un système de tuiles vectorielles. Chaque tuile couvre une bbox connue à un niveau de zoom connu, et le moteur de rendu assemble les tuiles pour former la carte affichée.
Ce que renvoie une API
La plupart des API de géocodage renvoient une bbox avec chaque résultat. Elle indique à la fois la taille de l'entité trouvée (la bbox d'un pays est immense, celle d'un bâtiment minuscule) et la façon de cadrer la carte. Une réponse pour « France » renvoie une bbox à l'échelle du pays, une réponse pour « 10 Downing Street » une bbox à l'échelle d'un bâtiment.
La taille de la bbox renvoyée permet aussi de vérifier la cohérence de la précision. Un résultat au niveau « pays » avec une bbox de la taille d'un bâtiment est suspect. Un résultat de précision « rooftop » (au bâtiment) avec une bbox de la taille d'une ville est faux.
Les bounding boxes qui traversent l'antiméridien
Voici un piège moins évident. Une bbox qui traverse l'antiméridien, à 180 degrés de longitude (par exemple pour la Russie, le Pacifique ou les Fidji), ne peut pas respecter ouest < est, car elle fait le tour du globe. Les conventions varient :
- Certains systèmes découpent la bbox en deux, une partie de chaque côté de l'antiméridien.
- D'autres acceptent
ouest > estet l'interprètent comme un passage de l'autre côté du globe. - GeoJSON (RFC 7946) accepte une bbox dont l'ouest est supérieur à l'est, mais demande de couper en deux les géométries qui traversent l'antiméridien.
Pour la plupart des usages européens ou limités à un pays, le cas ne se présente jamais. Si vous construisez un produit mondial (lignes aériennes, transport maritime, pêche), testez explicitement l'antiméridien.
Bounding box ou polygone
Une bbox est un rectangle, alors qu'une entité réelle l'est rarement. La bbox de la France inclut une partie de l'Atlantique et de l'Espagne. Celle de Manhattan inclut une partie du New Jersey et du Queens.
Quand l'approximation par un rectangle suffit (cadrer une carte, faire un premier tri rapide), la bbox est le bon outil. Pour savoir si un point se trouve vraiment dans l'entité, il faut un test de point dans un polygone sur la géométrie réelle de la frontière. Une méthode courante en production : filtrer d'abord par bbox (rapide, indexable, élimine la plupart des enregistrements), puis faire le test de point dans un polygone sur ceux qui restent (plus lent, mais exact). C'est ainsi que fonctionnent la plupart des bases de données spatiales.
Les bounding boxes en vision par ordinateur
Vous croiserez peut-être les bounding boxes orientées en détection d'objets, en robotique ou en rendu 3D. C'est une autre notion : une OBB pivote pour épouser une entité de plus près qu'un rectangle aligné sur les axes. En géospatial, la bbox alignée sur les axes reste la norme, car elle s'indexe facilement, s'aligne sur la grille des tuiles, et tester un chevauchement est trivial. Les bbox orientées servent quand il faut calculer sur des rectangles pivotés, ce qui est rare en cartographie mais courant en vision par ordinateur.
Les bounding boxes dans MapAtlas
Chaque résultat de l'API Geocoding et de l'API Search contient un champ bbox avec l'étendue de l'entité trouvée, dans l'ordre longitude puis latitude en WGS84. C'est exactement le format qu'attendent GeoJSON et les bibliothèques cartographiques récentes. Un paramètre boundary.rect.* vous permet de favoriser la zone affichée dans le géocodage. L'API Isochrone renvoie ses polygones de temps de trajet avec une bbox englobante, pour que vous puissiez cadrer la carte sans la calculer vous-même.
Pour une introduction pratique à GeoJSON et à la place des bbox dans les données spatiales, lisez 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, et appelée emprise en français) est le plus petit rectangle aligné sur les axes qui contient une entité géographique ou un ensemble de points. Quatre nombres la décrivent : la longitude minimale et maximale, et la latitude minimale et maximale. La bbox est partout en cartographie : pour cadrer une carte sur une entité, filtrer une requête de base de données par zone, définir l'étendue d'une tuile ou favoriser les résultats de géocodage d'une région. C'est la brique spatiale la plus simple et la plus rapide du code en production.
Quel est le format standard d'une bounding box ?
GeoJSON et la plupart des API récentes utilisent l'ordre [ouest, sud, est, nord], c'est-à-dire [minLng, minLat, maxLng, maxLat]. Utilisez ce format par défaut. Certaines API plus anciennes et certains exports CSV utilisent [sud, ouest, nord, est] (latitude d'abord), et quelques-uns utilisent quatre champs séparés. Vérifiez toujours la documentation de l'API ou du format concerné. L'erreur la plus fréquente consiste à inverser latitude et longitude, ce qui place le rectangle de l'autre côté de la planète.
Quelle est la différence entre une bounding box et une bounding box orientée ?
Une bbox classique est alignée sur les axes : ses côtés suivent les axes de latitude et de longitude. Une bounding box orientée (OBB, courante en vision par ordinateur et dans les moteurs de jeu) pivote pour épouser l'entité au plus près. Sa surface est plus petite, mais les calculs sont plus complexes. En géospatial, la bbox alignée sur les axes est la norme : elle s'indexe facilement dans les bases de données spatiales, s'aligne sur la grille des tuiles, et tester un chevauchement est trivial. Les OBB servent 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 en paramètre pour favoriser la zone affichée. Dans l'API Geocoding de MapAtlas, vous envoyez `boundary.rect.min_lon`, `boundary.rect.min_lat`, `boundary.rect.max_lon` et `boundary.rect.max_lat`. Le géocodeur classe alors les résultats situés dans cette zone devant les autres. C'est indispensable pour l'autocomplétion dans une carte : quand l'utilisateur déplace la carte, vous mettez la bbox à jour pour que les suggestions correspondent à ce qu'il regarde. Sans cette préférence, une autocomplétion pour « Springfield » renvoie le Springfield le plus populaire au monde, et c'est rarement celui que l'utilisateur cherche.

