Unione riquadri delimitanti
Due riquadri, uno di latitudine da 40,7 a 40,8 e uno da 40,75 a 40,9, si uniscono in uno solo da 40,7 a 40,9, con longitudini da −74,1 a −73,85. Ottiene anche larghezza, altezza, area e centro. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Latitudine minima A
- 40,7
- Latitudine massima A
- 40,8
- Longitudine minima A
- -74,1
- Longitudine massima A
- -73,9
- Latitudine minima B
- 40,75
- Latitudine massima B
- 40,9
- Latitudine minima
- 40,7
- Latitudine massima
- 40,9
- Longitudine minima
- -74,1
- Longitudine massima
- -73,85
Un calcolatore di unione di riquadri delimitanti riceve due rettangoli geografici definiti da latitudine e longitudine minime e massime e restituisce il più piccolo rettangolo allineato agli assi che contiene per intero entrambi. Le pipeline cartografiche raccolgono spesso inviluppi separati —uno per layer, cluster o tile di download— e hanno bisogno di un solo viewport, finestra di query o estensione di export senza inventare una libreria geometrica pesante.
Cos'è l'unione di riquadri delimitanti e quando Le serve
Un riquadro delimitante geografico allineato agli assi è il rettangolo definito da una latitudine sud, una latitudine nord, una longitudine ovest e una longitudine est. Quando Lei dispone già di due tali rettangoli —da query di feature indipendenti, cache di tile, pacchetti offline o microservizi fratelli— spesso serve l'unico inviluppo che copre ogni angolo di entrambi senza calcolare una dissoluzione completa di multipoligoni.
L'unione classica dei riquadri allineati usa estremi componente per componente: il bordo sud dell'unione è il minore dei due bordi sud; il nord è il maggiore dei due bordi nord; l'ovest è la minore delle due longitudini occidentali; l'est è la maggiore delle due longitudini orientali. Quella costruzione è il più piccolo rettangolo allineato che contiene ancora entrambi gli input, misurato nello stesso sistema lat/lon.
Docenti, studenti di GIS e ingegneri backend esigono che gli intervalli invertiti (min maggiore di max) siano errori duri: scambiare gli angoli in silenzio nasconderebbe bug del client e produrrebbe inviluppi che non corrispondono ai layer previsti. I casi annidati si risolvono con la stessa regola min/max: se il riquadro A sta interamente dentro B, l'unione è B; se sono identici, l'unione è l'uno o l'altro.
Riquadri disgiunti producono comunque un inviluppo valido che copre il vuoto tra loro —utile per inquadrare la camera della mappa anche quando i layer non si sovrappongono. Questa pagina è per chi ha già due bbox e serve l'estensione combinata, non per chi ha solo un centro e un raggio (usi prima uno strumento riquadro punto-raggio) né per chi serve buffer geodetici su un ellissoide.
Casi d'uso
Unire inviluppi di layer e query per i viewport
Combini due riquadri delimitanti indipendenti di layer di feature in un'unica estensione di camera o di richiesta tile che copra ogni geometria restituita.
Prefiltri spaziali SQL tra microservizi
Unisca gli inviluppi di risultato del servizio A e del servizio B in un'unica finestra BETWEEN prima di un join o un raffinamento di distanza più pesante.
Domande frequenti
Come si calcola il riquadro delimitante dell'unione?
È il più piccolo riquadro allineato che contiene entrambi gli input.
Perché un min maggiore del max viene rifiutato?
Un intervallo invertito è quasi sempre un bug del client.
Gestisce l'antimeridiano?
Lo strumento applica min/max puro e non inventa un multipoligono che attraversa la linea del cambio data. Prepari intervalli non avvolti lato client se serve quel caso.
Il calcolatore di unione di riquadri delimitanti è gratis?
Lo strumento del browser è gratis e gira in locale.
Cosa succede se un riquadro sta del tutto dentro l'altro?
L'unione è semplicemente il riquadro più grande, perché i suoi bordi sono già gli estremi. Se i due riquadri sono identici, l'unione coincide con uno qualsiasi dei due. La stessa regola di minimi e massimi copre entrambi i casi.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/geo/bbox-union \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"min_lat_a":40.7,"max_lat_a":40.8,"min_lon_a":-74.1,"max_lon_a":-73.9,"min_lat_b":40.75,"max_lat_b":40.9,"min_lon_b":-74.05,"max_lon_b":-73.85}'const res = await fetch("https://api.kit.forhosting.com/geo/bbox-union", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"min_lat_a": 40.7,
"max_lat_a": 40.8,
"min_lon_a": -74.1,
"max_lon_a": -73.9,
"min_lat_b": 40.75,
"max_lat_b": 40.9,
"min_lon_b": -74.05,
"max_lon_b": -73.85
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/geo/bbox-union",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"min_lat_a": 40.7,
"max_lat_a": 40.8,
"min_lon_a": -74.1,
"max_lon_a": -73.9,
"min_lat_b": 40.75,
"max_lat_b": 40.9,
"min_lon_b": -74.05,
"max_lon_b": -73.85
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/geo/bbox-union", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"min_lat_a":40.7,"max_lat_a":40.8,"min_lon_a":-74.1,"max_lon_a":-73.9,"min_lat_b":40.75,"max_lat_b":40.9,"min_lon_b":-74.05,"max_lon_b":-73.85}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"min_lat_a":40.7,"max_lat_a":40.8,"min_lon_a":-74.1,"max_lon_a":-73.9,"min_lat_b":40.75,"max_lat_b":40.9,"min_lon_b":-74.05,"max_lon_b":-73.85}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/geo/bbox-union", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"min_lat_a": 40.7,
"max_lat_a": 40.8,
"min_lon_a": -74.1,
"max_lon_a": -73.9,
"min_lat_b": 40.75,
"max_lat_b": 40.9,
"min_lon_b": -74.05,
"max_lon_b": -73.85
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "geo.bbox_union",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Inserisca otto angoli finiti in gradi decimali (min e max di lat e lon per il riquadro A e il B); lo strumento restituisce min_lat, max_lat, min_lon e max_lon dell'unione, un array bbox in stile GeoJSON [west, south, east, north], larghezza e altezza in gradi, area in gradi al quadrato, il centro, i riquadri di ingresso, un indicatore di relazione per casi identici o annidati, e righe di derivazione passo passo. Riquadri invertiti e coordinate fuori intervallo falliscono con invalid_input così Lei non pubblica mai un intervallo scambiato in silenzio. Il percorso è aritmetica puramente deterministica —senza rete, senza semi casuali, senza orologio— cosicché l'esecutore gratuito del browser e l'API prepagata restituiscono lo stesso JSON dopo l'arrotondamento decimale fisso a ogni chiamata.
Come chiamare l'API e cosa torna indietro
I campi di latitudine devono stare nell'intervallo chiuso da meno novanta a novanta; quelli di longitudine da meno centottanta a centottanta. Invii un corpo JSON con otto numeri finiti obbligatori: min_lat_a, max_lat_a, min_lon_a e max_lon_a per il primo riquadro, e min_lat_b, max_lat_b, min_lon_b e max_lon_b per il secondo. Dentro ogni riquadro, min_lat deve essere minore o uguale a max_lat e min_lon minore o uguale a max_lon. I nomi canonici accettano alias come south_a, north_a, west_a, east_a e le forme _b corrispondenti, più alternative stile lat_min_a, così i client esistenti mappano i nomi GIS comuni senza riscrittura. In caso di successo la risposta imposta min_lat, max_lat, min_lon e max_lon dell'unione; imposta bbox alla quadrupla min_lon, min_lat, max_lon, max_lat nell'ordine west-south-east-north; imposta width_deg, height_deg e area_deg2 con aritmetica dei gradi; imposta center_lat e center_lon al punto medio dell'unione; restituisce box_a e box_b con angoli arrotondati; imposta relation a identical, a_inside_b, b_inside_a o partial_or_disjoint; imposta message a un breve riepilogo in inglese; e imposta steps a un array ordinato di righe di derivazione per log o interfaccia. La validazione fallita —campi mancanti, numeri non finiti, latitudine o longitudine fuori intervallo, o un min maggiore del max— restituisce invalid_input e non viene addebitata. Il prezzo è un $0.002 fisso per richiesta riuscita con unità item.
Consigli pratici, limiti e ricerche correlate
Mantenga entrambi i riquadri nello stesso CRS geografico e in gradi decimali; non mescoli metri web-mercator con gradi lat/lon nella stessa chiamata. Vicino ai poli un grado di longitudine è corto in metri, quindi usi l'unione per indicizzazione e inquadratura del viewport, poi raffini con misure proiettate o geodetiche se serve area fisica. Questa landing mira a chi cerca unione di riquadri delimitanti, unire due bounding box, inviluppo lat lon di due riquadri o estensione geografica combinata; non è un buffer punto-raggio, né un codificatore geohash, né una dissoluzione di poligoni. Preferisca questa capacità quando ha già due inviluppi allineati e serve solo il rettangolo contenitore; se la fonte è un insieme multipunto, calcoli un bbox multipunto. Ricordi che un inviluppo in gradi non è un'area geodetica vera: width_deg e height_deg sono span angolari, e area_deg2 è il loro prodotto per confronti rapidi, non metri quadrati sull'ellissoide. Per lavoro centrato sul Pacifico vicino all'antimeridiano, si assicuri che ogni input abbia già min_lon minore o uguale a max_lon nel senso non avvolto che ha scelto; questo strumento non inventa un multipoligono che attraversa la linea del cambio data, perché il contratto di prodotto è esplicitamente min e max componente per componente. Esempi abbinati: due quartieri di Manhattan sovrapposti che espandono i bordi sud ed est; un piccolo riquadro annidato in uno a scala urbana con relation a_inside_b; e un riquadro deliberatamente invertito che dimostra il percorso duro invalid_input. Le attività fallite con invalid_input non consumano saldo prepagato, il che mantiene economici gli script esplorativi quando si inviano di proposito intervalli invertiti. I controlli andata e ritorno sono semplici: ricalcoli a mano il minimo dei due min_lat e confermi che la risposta combacia entro l'arrotondamento a dodici decimali pubblicato.
Casi di integrazione
Pianificazione di pacchetti offline e estensione di export
Con due pacchetti regionali già descritti come riquadri lat/lon, calcoli in modo deterministico l'estensione combinata di download o stampa per fixture CI.
Domande tecniche
Cosa succede se un riquadro è interamente dentro l'altro?
L'unione è uguale al riquadro esterno. La risposta imposta relation a a_inside_b o b_inside_a così i client rilevano l'annidamento senza controlli extra.