Un bounding box è il primitivo spaziale più semplice e utile in qualsiasi mapping stack. Sono quattro numeri che descrivono un rettangolo nello spazio di latitudine e longitudine, e compaiono in quasi ogni chiamata API, file GeoJSON e libreria di mappe che utilizzerai.
Questa guida spiega cos'è un bounding box, le convenzioni di formato che devi conoscere, i pattern in produzione dove si dimostra indispensabile, e le insidie che colgono ogni sviluppatore almeno una volta.
La Definizione
Un bounding box (bbox) è il rettangolo ad assi allineati più piccolo che contiene una feature o un insieme di punti. "Ad assi allineati" significa che i suoi lati scorrono lungo gli assi di latitudine e longitudine; il rettangolo non è ruotato. Il bbox è descritto da quattro numeri: la longitudine occidentale, la latitudine meridionale, la longitudine orientale e la latitudine settentrionale.
Per Parigi, il bbox municipale ufficiale è approssimativamente [2.224, 48.8156, 2.4699, 48.9022]. Per la Francia continentale è approssimativamente [-5.142, 41.333, 9.560, 51.089]. Per l'intero pianeta è [-180, -90, 180, 90].
Un bbox è sempre due angoli opposti. Non può descrivere una forma non rettangolare, ma può descrivere il rettangolo che avvolge qualsiasi forma, il che è sufficiente per un filtro spaziale rapido.
La Questione del Formato
Le convenzioni di formato per il bbox sono incoerenti tra i sistemi, e questa incoerenza è la fonte della maggior parte dei bug sui bbox.
GeoJSON, standard OGC e la maggior parte delle API moderne: [west, south, east, north], equivalentemente [minLng, minLat, maxLng, maxLat]. Longitudine prima, latitudine seconda, entrambe in WGS84.
Alcune librerie di mappe web (oggetti LatLngBounds di Leaflet, Mapbox GL): un oggetto LatLngBounds con gli angoli _southWest e _northEast. Lat prima, poi lng.
Molte API più vecchie e export CSV: [south, west, north, east] (lat prima). Leggi la spec.
Servizi di tile e WMS: bbox nelle unità della proiezione (metri Web Mercator, non lat/lng) quando il tile è in EPSG:3857.
La regola difensiva: non usare mai un array grezzo a 4 elementi nel tuo codice. Wrappalo in un oggetto tipizzato con campi con nome ({ west, south, east, north }) in modo che l'ordine sia esplicito. Converti ai confini delle API.
Dove i Bounding Box Si Dimostrano Indispensabili
Un bbox è il filtro spaziale più veloce possibile. Tre usi classici:
Adattare una mappa a una feature. Quando l'utente atterra su un risultato di ricerca, chiami map.fitBounds(bbox) e la mappa zooma e si sposta per mostrare la feature con il padding appropriato. Ogni libreria di mappe moderna ha questo primitivo.
Filtrare le query API per area. I motori di database e le API di ricerca indicizzano i bbox in modo molto efficiente. Una query come "mostrami tutti i luoghi in questo viewport" invia il bbox visibile al server, che usa un indice spaziale per restituire solo i record corrispondenti. Questa è la base della ricerca basata sul viewport.
Orientare l'autocomplete e il geocoding. Passa il bbox attuale della mappa dell'utente come viewport bias. Il geocoder pesa i risultati all'interno del bbox più pesantemente, in modo che digitando "Liberty" all'interno del viewport di New York si ottenga la Statua della Libertà prima di qualsiasi altro Liberty nel mondo.
Un quarto uso, meno ovvio: i bbox sono l'unità di contabilità di un sistema di vector tile. Ogni tile copre un bbox noto a uno zoom noto, e il renderer li compone nella mappa visibile.
Cosa Restituisce un'API
La maggior parte delle geocoding API restituisce un bbox insieme a ogni corrispondenza, perché indica sia la dimensione della feature trovata (il bbox di un paese è enorme, quello di un edificio è minuscolo) sia come adattare la mappa. Una risposta di geocoding per "France" restituisce un bbox su scala nazionale; una risposta per "10 Downing Street" restituisce un bbox su scala di edificio.
Puoi usare la dimensione del bbox restituito come controllo di integrità sulla precisione. Una query che corrisponde a precisione "country" ma restituisce un bbox delle dimensioni di un edificio è sospetta. Una query che corrisponde a precisione "rooftop" ma restituisce un bbox delle dimensioni di una città è rotta.
Bounding Box che Attraversano l'Antimeridiano
Una sottile insidia: un bbox che attraversa l'antimeridiano a 180 gradi (es. per Russia, Pacifico, Fiji) non può essere descritto come west < east perché avvolge attorno. Le convenzioni variano:
- Alcuni sistemi dividono tale bbox in due pezzi, uno per ogni lato dell'antimeridiano.
- Alcuni sistemi consentono
west > easte lo interpretano come "avvolgi attorno". - GeoJSON consente il wrap-around ma raccomanda la divisione per l'interoperabilità.
Per la maggior parte dei casi d'uso europei o a paese singolo questo non si presenta mai. Se costruisci un prodotto globale (rotte aeree, spedizioni, pesca), testa esplicitamente il caso dell'antimeridiano.
Bounding Box vs Poligoni
Un bbox è un rettangolo. Una feature reale è raramente rettangolare. Il bbox della Francia include parti dell'Oceano Atlantico e della Spagna. Il bbox di Manhattan include parti del New Jersey e del Queens.
Quando l'approssimazione rettangolare è abbastanza buona (adattare una mappa, pre-filtro rapido), il bbox è lo strumento giusto. Quando hai bisogno di sapere se un punto è davvero all'interno della feature, ti serve la matematica point-in-polygon contro la vera geometria del confine. Un pattern di produzione comune: filtra prima per bbox (veloce, indicizzabile, elimina il 99% dei record), poi esegui point-in-polygon sui superstiti (lento ma accurato). Questo approccio in due fasi è come funzionano la maggior parte dei database spaziali sotto il cofano.
Bounding Box nella Computer Vision
Potresti vedere "oriented bounding box" menzionato nel rilevamento di oggetti, nella robotica o nel rendering 3D. Questo è un concetto diverso: un OBB è ruotato per adattarsi a una feature più strettamente di quanto farebbe un box ad assi allineati. Nel lavoro geospaziale, i bbox ad assi allineati sono lo standard perché si indicizzano perfettamente, si inseriscono nella griglia dei tile e sono banali da testare per la sovrapposizione. I bbox orientati appaiono quando hai bisogno di matematica con rettangoli ruotati, il che è raro nel mapping ma comune nella computer vision.
Come MapAtlas Usa i Bounding Box
Ogni risultato della Geocoding API e della Search API restituisce un campo bbox con l'estensione della feature trovata in ordine longitudine/latitudine WGS84, esattamente il formato che GeoJSON e le librerie di mappe moderne si aspettano. Puoi passare un parametro boundary.rect.* per orientare il geocoding verso un viewport, e l'Isochrone API restituisce i suoi poligoni di tempo di viaggio con un bbox di avvolgimento in modo da poter adattare la mappa senza calcolarlo tu stesso.
Per un'introduzione pratica a GeoJSON e a come i bbox si inseriscono nel quadro più ampio dei dati spaziali, vedi Cos'è GeoJSON e Cos'è un Geocode.
Domande frequenti
Cos'è un bounding box?
Un bounding box (spesso abbreviato bbox) è il rettangolo ad assi allineati più piccolo che contiene una feature geografica o un insieme di punti. È descritto da quattro numeri: la longitudine minima e massima e la latitudine minima e massima. I bounding box sono usati ovunque nel mapping: per adattare una mappa a una feature, per filtrare le query del database per area, per definire l'estensione di un tile e per orientare i risultati del geocoding verso una regione. Sono il primitivo spaziale più semplice e veloce nel codice in produzione.
Qual è il formato standard per un bounding box?
GeoJSON e la maggior parte delle API moderne usano l'ordine [west, south, east, north], anche scritto come [minLng, minLat, maxLng, maxLat]. Questo è il formato da usare come default. Alcune API più vecchie e export CSV usano [south, west, north, east] (cioè lat prima), e alcune usano quattro campi separati. Verifica sempre la documentazione dell'API o del formato specifico. L'errore più comune è mescolare l'ordine lat/lng, il che mette il box sul lato sbagliato del pianeta.
Qual è la differenza tra un bounding box e un oriented bounding box?
Un bounding box normale è ad assi allineati: i suoi lati scorrono lungo gli assi di latitudine e longitudine. Un oriented bounding box (OBB, comune nella computer vision e nei motori di gioco) è ruotato per adattarsi più strettamente alla feature, il che dà un'area più piccola ma una matematica più complessa. Nel lavoro geospaziale, i bbox ad assi allineati sono lo standard perché si indicizzano perfettamente nei database spaziali, si inseriscono nella griglia dei tile e sono banalmente testabili per la sovrapposizione. I bounding box orientati appaiono nel rendering 3D, nel rilevamento degli oggetti e nei motori fisici.
Come uso un bounding box per filtrare una geocoding API?
Passa il bbox come parametro di viewport bias. Nella MapAtlas Geocoding API invii `boundary.rect.min_lon`, `boundary.rect.min_lat`, `boundary.rect.max_lon`, `boundary.rect.max_lat`, e il geocoder classifica i risultati all'interno di quell'area più in alto rispetto ai risultati all'esterno. Questo è essenziale per l'autocomplete all'interno di una mappa: mentre l'utente si sposta, aggiorni il bbox in modo che i suggerimenti corrispondano a ciò che sta guardando. Senza un bias bbox, un autocomplete per 'Springfield' restituisce qualsiasi Springfield abbia la popolarità globale più alta, il che raramente è ciò che l'utente intende.

