Bounding box adalah primitif spasial paling sederhana dan paling berguna dalam stack pemetaan apa pun. Ini adalah empat angka yang mendeskripsikan persegi panjang dalam ruang latitude dan longitude, dan muncul di hampir setiap panggilan API, file GeoJSON, dan map library yang pernah kamu gunakan.
Panduan ini menjelaskan apa itu bounding box, konvensi format yang perlu kamu ketahui, pola production di mana ia sangat berguna, dan gotcha yang pasti dialami setiap developer setidaknya sekali.
Definisinya
Bounding box (bbox) adalah persegi panjang axis-aligned terkecil yang memuat fitur atau sekumpulan titik. "Axis-aligned" berarti sisinya berjalan sepanjang sumbu latitude dan longitude; persegi panjang tidak diputar. Bbox dideskripsikan dengan empat angka: longitude barat, latitude selatan, longitude timur, dan latitude utara.
Untuk Paris, bbox kota resminya kira-kira [2.224, 48.8156, 2.4699, 48.9022]. Untuk Prancis daratan sekitar [-5.142, 41.333, 9.560, 51.089]. Untuk seluruh planet adalah [-180, -90, 180, 90].
Bbox selalu dua sudut yang berlawanan. Ia tidak dapat mendeskripsikan bentuk non-persegi panjang, tetapi dapat mendeskripsikan persegi panjang yang membungkus bentuk apa pun, yang cukup untuk penyaringan spasial yang cepat.
Pertanyaan Format
Konvensi format untuk bbox tidak konsisten di seluruh sistem, dan ketidakkonsistenan inilah yang menjadi sumber sebagian besar bug bbox.
GeoJSON, standar OGC, dan sebagian besar API modern: [west, south, east, north], setara dengan [minLng, minLat, maxLng, maxLat]. Longitude lebih dulu, latitude kedua, keduanya dalam WGS84.
Beberapa web mapping library (objek bounds Leaflet, Mapbox GL): objek LatLngBounds dengan sudut _southWest dan _northEast. Lat lebih dulu, kemudian lng.
Banyak API lama dan ekspor CSV: [south, west, north, east] (lat lebih dulu). Baca spesifikasinya.
Layanan tile dan WMS: bbox dalam satuan proyeksi (meter Web Mercator, bukan lat/lng) saat tile dalam EPSG:3857.
Aturan defensif: jangan pernah menggunakan array 4-elemen kosong dalam kodemu sendiri. Bungkus dalam objek bertipe dengan field bernama ({ west, south, east, north }) agar urutannya eksplisit. Konversi di batas API.
Di Mana Bounding Box Membuktikan Kegunaannya
Bbox adalah filter spasial tercepat yang mungkin. Tiga penggunaan klasik:
Menyesuaikan peta ke fitur. Saat pengguna mendarat di hasil pencarian, kamu memanggil map.fitBounds(bbox) dan peta zoom serta panning untuk menampilkan fitur dengan padding yang tepat. Setiap map library modern memiliki primitif ini.
Memfilter query API berdasarkan area. Database engine dan search API mengindeks bbox dengan sangat efisien. Query seperti "tampilkan semua tempat di viewport ini" mengirimkan bbox yang terlihat ke server, yang menggunakan spatial index untuk mengembalikan hanya catatan yang cocok. Ini adalah fondasi pencarian berbasis viewport.
Membias autocomplete dan geocoding. Kirimkan bbox peta pengguna saat ini sebagai viewport bias. Geocoder memberi bobot lebih besar pada hasil di dalam bbox, sehingga mengetik "Liberty" di dalam viewport New York mengembalikan Patung Liberty sebelum Liberty lainnya di dunia.
Penggunaan keempat yang kurang jelas: bbox adalah unit pembukuan sistem vector tile. Setiap tile mencakup bbox yang diketahui pada zoom yang diketahui, dan renderer mengomposisikannya ke dalam peta yang terlihat.
Apa yang Dikembalikan API
Sebagian besar geocoding API mengembalikan bbox di samping setiap kecocokan, karena ia memberi tahu baik ukuran fitur yang cocok (bbox negara sangat besar, bbox bangunan sangat kecil) maupun cara menyesuaikan peta. Respons geocoding untuk "Prancis" mengembalikan bbox skala nasional; respons untuk "10 Downing Street" mengembalikan bbox skala bangunan.
Kamu dapat menggunakan ukuran bbox yang dikembalikan sebagai sanity check pada presisi. Query yang cocok pada presisi "negara" tetapi mengembalikan bbox berukuran bangunan adalah mencurigakan. Query yang cocok pada presisi "rooftop" tetapi mengembalikan bbox berukuran kota adalah rusak.
Bounding Box yang Melintasi Antimeridian
Gotcha yang halus: bbox yang melintasi antimeridian 180 derajat (misalnya untuk Rusia, Pasifik, Fiji) tidak dapat dideskripsikan sebagai west < east karena ia membungkus. Konvensi bervariasi:
- Beberapa sistem membagi bbox tersebut menjadi dua bagian, satu untuk setiap sisi antimeridian.
- Beberapa sistem mengizinkan
west > eastdan menginterpretasinya sebagai "membungkus". - GeoJSON mengizinkan wrap-around tetapi merekomendasikan pembagian untuk interoperabilitas.
Untuk sebagian besar kasus penggunaan Eropa atau satu negara, ini tidak pernah muncul. Jika kamu membangun produk global (rute penerbangan, pengiriman, perikanan), uji kasus antimeridian secara eksplisit.
Bounding Box vs Poligon
Bbox adalah persegi panjang. Fitur nyata jarang berbentuk persegi panjang. Bbox Prancis mencakup bagian Samudra Atlantik dan Spanyol. Bbox Manhattan mencakup bagian New Jersey dan Queens.
Ketika aproksimasi persegi panjang sudah cukup baik (menyesuaikan peta, pre-filtering cepat), bbox adalah alat yang tepat. Ketika kamu perlu mengetahui apakah suatu titik benar-benar berada di dalam fitur, kamu perlu matematika point-in-polygon terhadap geometri batas nyata. Pola production yang umum: filter dengan bbox lebih dulu (cepat, dapat diindeks, menghilangkan 99% catatan), kemudian jalankan point-in-polygon pada yang tersisa (lambat tapi akurat). Pendekatan dua tahap ini adalah cara sebagian besar database spasial bekerja di balik layar.
Bounding Box dalam Computer Vision
Kamu mungkin melihat "oriented bounding box" disebutkan dalam deteksi objek, robotika, atau rendering 3D. Itu adalah konsep yang berbeda: OBB diputar untuk lebih pas ke fitur daripada yang bisa dilakukan box axis-aligned. Dalam pekerjaan geospasial, bbox axis-aligned adalah standar karena diindeks dengan bersih, masuk ke dalam grid tile, dan sepele untuk diuji tumpang tindihnya. Oriented bbox muncul saat kamu membutuhkan matematika persegi panjang yang diputar, yang jarang terjadi dalam pemetaan tetapi umum dalam computer vision.
Cara MapAtlas Menggunakan Bounding Box
Setiap hasil dari Geocoding API dan Search API mengembalikan field bbox dengan cakupan fitur yang cocok dalam urutan longitude/latitude WGS84, persis format yang diharapkan GeoJSON dan map library modern. Kamu dapat melewatkan parameter boundary.rect.* untuk membias geocoding ke viewport, dan Isochrone API mengembalikan poligon waktu perjalanannya dengan bbox pembungkus sehingga kamu dapat menyesuaikan peta tanpa menghitungnya sendiri.
Untuk pengenalan langsung tentang GeoJSON dan cara bbox masuk ke dalam gambaran data spasial yang lebih besar, lihat Apa Itu GeoJSON dan Apa Itu Geocode.
Pertanyaan yang Sering Diajukan
Apa itu bounding box?
Bounding box (sering disingkat bbox) adalah persegi panjang axis-aligned terkecil yang memuat fitur geografis atau sekumpulan titik. Ini dideskripsikan dengan empat angka: longitude minimum dan maksimum, serta latitude minimum dan maksimum. Bounding box digunakan di mana saja dalam pemetaan: untuk menyesuaikan peta ke fitur, memfilter query database berdasarkan area, mendefinisikan cakupan tile, dan membias hasil geocoding ke suatu wilayah. Ini adalah primitif spasial paling sederhana dan tercepat dalam kode production.
Apa format standar untuk bounding box?
GeoJSON dan sebagian besar API modern menggunakan urutan [west, south, east, north], juga ditulis sebagai [minLng, minLat, maxLng, maxLat]. Ini adalah format yang harus kamu gunakan secara default. Beberapa API lama dan ekspor CSV menggunakan [south, west, north, east] (yaitu lat lebih dulu), dan beberapa menggunakan empat field terpisah. Selalu periksa dokumentasi API atau format spesifik. Kesalahan paling umum adalah mencampur urutan lat/lng, yang meletakkan box di sisi planet yang salah.
Apa perbedaan antara bounding box dan oriented bounding box?
Bounding box biasa adalah axis-aligned: sisinya berjalan sepanjang sumbu latitude dan longitude. Oriented bounding box (OBB, umum dalam computer vision dan game engine) diputar untuk lebih pas ke fitur, memberikan area yang lebih kecil tetapi matematika yang lebih kompleks. Dalam pekerjaan geospasial, bbox axis-aligned adalah standar karena diindeks dengan bersih ke dalam database spasial, masuk ke dalam grid tile, dan sangat mudah diuji untuk tumpang tindih. Oriented bounding box muncul dalam rendering 3D, deteksi objek, dan physics engine.
Bagaimana cara menggunakan bounding box untuk memfilter geocoding API?
Kirim bbox sebagai parameter viewport bias. Dalam MapAtlas Geocoding API kamu mengirimkan `boundary.rect.min_lon`, `boundary.rect.min_lat`, `boundary.rect.max_lon`, `boundary.rect.max_lat`, dan geocoder mengurutkan hasil di dalam area tersebut lebih tinggi dari hasil di luarnya. Ini sangat penting untuk autocomplete di dalam peta: saat pengguna panning, kamu memperbarui bbox agar saran cocok dengan apa yang mereka lihat. Tanpa bias bbox, autocomplete untuk 'Springfield' mengembalikan Springfield dengan popularitas global tertinggi, yang jarang sesuai dengan yang dimaksud pengguna.

