Bounding box, herhangi bir haritalama yığınındaki en basit ve en kullanışlı uzamsal primitiftir. Enlem ve boylam uzayındaki bir dikdörtgeni tanımlayan dört sayıdır; kullanacağın neredeyse her API çağrısında, GeoJSON dosyasında ve harita kütüphanesinde karşıma çıkar.
Bu rehber bounding box'ın ne olduğunu, bilmen gereken format kurallarını, değerini kanıtladığı üretim örüntülerini ve her geliştiricinin en az bir kez düştüğü tuzakları açıklıyor.
Tanım
Bounding box (bbox), bir özelliği veya nokta kümesini kapsayan en küçük eksen hizalı dikdörtgendir. "Eksen hizalı" demek kenarlarının enlem ve boylam eksenleri boyunca uzandığı, dikdörtgenin döndürülmediği anlamına gelir. Bbox dört sayıyla tanımlanır: batı boylamı, güney enlemi, doğu boylamı ve kuzey enlemi.
Paris için resmi belediye bbox'ı kabaca [2.224, 48.8156, 2.4699, 48.9022]'dir. Anakarası Fransa için kabaca [-5.142, 41.333, 9.560, 51.089]. Tüm gezegen için [-180, -90, 180, 90].
Bbox her zaman iki karşı köşedir. Dikdörtgen olmayan bir şekli tanımlayamaz; ancak herhangi bir şekli saran dikdörtgeni tanımlayabilir; bu da hızlı uzamsal filtreleme için yeterlidir.
Format Sorunu
Bbox için format kuralları sistemler arasında tutarsızdır ve bu tutarsızlık çoğu bbox hatasının kaynağıdır.
GeoJSON, OGC standartları ve çoğu modern API: [batı, güney, doğu, kuzey], eşdeğer olarak [minLng, minLat, maxLng, maxLat]. WGS84 cinsinden önce boylam, sonra enlem.
Bazı web haritalama kütüphaneleri (Leaflet, Mapbox GL bounds nesneleri): _southWest ve _northEast köşeli LatLngBounds nesnesi. Önce enlem, sonra boylam.
Pek çok eski API ve CSV dışa aktarımı: [güney, batı, kuzey, doğu] (enlem önce). Belgeleri oku.
Tile servisleri ve WMS: tile EPSG:3857'de olduğunda enlem/boylam yerine projeksiyonun birimleriyle (Web Mercator metresi) bbox.
Savunmacı kural: kendi kodunda asla düz dört elemanlı dizi kullanma. Sırayı açık kılan adlandırılmış alanlara sahip tiplendirilmiş bir nesneye sar ({ west, south, east, north }). API sınırlarında dönüştür.
Bounding Boxlar Nerede Değerini Kanıtlar?
Bbox mümkün olan en hızlı uzamsal filtredir. Üç klasik kullanım:
Haritayı bir özelliğe uydurma. Kullanıcı bir arama sonucuna gittiğinde map.fitBounds(bbox) çağırırsın; harita uygun dolgu ile özelliği gösterecek şekilde yakınlaşıp kaydırır. Her modern harita kütüphanesinde bu primitif mevcuttur.
API sorgularını alana göre filtreleme. Veri tabanı motorları ve arama API'leri bbox'ları çok verimli şekilde indeksler. "Bu görüntü alanındaki tüm yerleri göster" gibi bir sorgu, görünür bbox'ı sunucuya gönderir; sunucu yalnızca eşleşen kayıtları döndürmek için uzamsal indeksi kullanır. Bu, görüntü alanı tabanlı aramanın temelidir.
Otomatik tamamlama ve geocoding'i yönlendirme. Kullanıcının mevcut harita bbox'ını viewport bias olarak geç. Geocoder, bbox içindeki sonuçları daha ağırlıklı değerlendirir; böylece New York görüntü alanı içinde "Liberty" yazan kullanıcı, dünyadaki herhangi bir Liberty'den önce Özgürlük Heykeli'ni alır.
Daha az göze çarpan dördüncü bir kullanım: bbox'lar vektör tile sisteminin defter tutma birimidir. Her tile belirli bir yakınlaştırmada bilinen bir bbox'ı kapsar ve renderer bunları görünen haritaya birleştirir.
Bir API'nin Döndürdükleri
Çoğu geocoding API'si her eşleşme ile birlikte bir bbox döndürür çünkü hem eşleşen özelliğin boyutu hakkında bilgi verir (ülke bbox'ı büyük, bina bbox'ı küçüktür) hem de haritanın nasıl uyduracağını gösterir. "France" için bir geocoding yanıtı ulusal ölçekte bir bbox döndürür; "10 Downing Street" için yanıt bina ölçeğinde bir bbox döndürür.
Döndürülen bbox'ın boyutunu hassasiyet için bir akıl sağlığı kontrolü olarak kullanabilirsin. "Ülke" hassasiyetinde eşleşen ama bina boyutunda bir bbox döndüren sorgu şüphelidir. "Çatı" hassasiyetinde eşleşen ama şehir boyutunda bir bbox döndüren sorgu ise bozuktur.
Antimeridyeni Geçen Bounding Boxlar
İnce bir tuzak: 180 derece antimeridyeni geçen bir bbox (Rusya, Pasifik, Fiji gibi) sarmaladığı için west < east olarak tanımlanamaz. Kurallar değişir:
- Bazı sistemler bu tür bir bbox'ı, antimeridyenin her tarafı için birer tane olmak üzere iki parçaya böler.
- Bazı sistemler
west > east'e izin verir ve bunu "etrafını sar" olarak yorumlar. - GeoJSON sarma yapılmasına izin verir, ancak birlikte çalışabilirlik için bölünmesini tavsiye eder.
Çoğu Avrupalı veya tek ülkeli kullanım senaryosunda bu hiç gündeme gelmez. Küresel bir ürün inşa ediyorsan (havayolu rotaları, denizcilik, balıkçılık), antimeridyen durumunu açıkça test et.
Bounding Box ile Poligon Karşılaştırması
Bbox bir dikdörtgendir. Gerçek bir özellik nadiren dikdörtgendir. Fransa'nın bbox'ı Atlantik Okyanusu'nun ve İspanya'nın bazı bölgelerini içerir. Manhattan'ın bbox'ı New Jersey ve Queens'in bazı bölgelerini içerir.
Dikdörtgen yaklaşımı yeterli olduğunda (harita uydurma, hızlı ön filtreleme), bbox doğru araçtır. Bir noktanın gerçekte özelliğin içinde olup olmadığını bilmen gerektiğinde, gerçek sınır geometrisi üzerinde nokta-poligon matematicine ihtiyaç duyarsın. Yaygın bir üretim örüntüsü: önce bbox ile filtrele (hızlı, indekslenebilir, kayıtların %99'unu eler), ardından hayatta kalanlar üzerinde nokta-poligon çalıştır (yavaş ama doğru). Bu iki aşamalı yaklaşım, çoğu uzamsal veri tabanının arka planda çalışma biçimidir.
Bilgisayar Vizyonunda Bounding Boxlar
Nesne tespitinde, robotik bilimde veya 3D renderde "oriented bounding box" ifadesini görebilirsin. Bu farklı bir kavramdır: OBB, eksen hizalı kutudan daha sıkı oturmak için döndürülmüştür. Jeomekansal çalışmalarda eksen hizalı bbox standarttır çünkü temiz şekilde indekslenir, tile ızgarasına oturur ve üst üste gelme testi son derece kolaydır. Oriented bbox, haritacılıkta nadir, bilgisayar vizyonunda ise yaygın olan döndürülmüş dikdörtgen matematiği gerektiğinde ortaya çıkar.
MapAtlas Bounding Boxları Nasıl Kullanır?
Geocoding API ve Search API'den gelen her sonuç, eşleşen özelliğin uzantısını WGS84 boylam/enlem sıralamasıyla, yani tam GeoJSON ve modern harita kütüphanelerinin beklediği formatta döndüren bir bbox alanı içerir. Geocoding'i bir görüntü alanına yönlendirmek için boundary.rect.* parametresi geçilebilir; Isochrone API ise seyahat süresi poligonlarını kendin hesaplamak zorunda kalmadan haritayı uydurabilmen için sarmalayıcı bir bbox ile döndürür.
GeoJSON ve bbox'ların daha geniş uzamsal veri resmine nasıl uyduğuna dair uygulamalı bir giriş için GeoJSON Nedir ve Geocode Nedir yazılarına göz at.
Sıkça Sorulan Sorular
Bounding box nedir?
Bounding box (kısaca bbox), bir coğrafi özelliği veya nokta kümesini kapsayan en küçük eksen hizalı dikdörtgendir. Dört sayıyla tanımlanır: minimum ve maksimum boylam ile minimum ve maksimum enlem. Bounding boxlar haritacılıkta her yerde karşına çıkar: haritayı bir özelliğe uydurmak, veri tabanı sorgularını alana göre filtrelemek, bir tilenin uzantısını tanımlamak ve geocoding sonuçlarını bir bölgeye yönlendirmek için kullanılır. Üretim kodundaki en basit ve hızlı uzamsal primitiftir.
Bounding box için standart format nedir?
GeoJSON ve çoğu modern API [batı, güney, doğu, kuzey] sıralamasını kullanır; buna [minLng, minLat, maxLng, maxLat] da denir. Varsayılan olarak bu formatı kullanmalısın. Bazı eski API'ler ve CSV dışa aktarımları [güney, batı, kuzey, doğu] (enlem önce) sıralamasını kullanır; bazıları ise dört ayrı alan kullanır. İlgili API veya formatın belgelerini her zaman kontrol et. En yaygın hata enlem/boylam sırasını karıştırmaktır; bu kutunun gezegenin yanlış tarafına düşmesine neden olur.
Bounding box ile oriented bounding box arasındaki fark nedir?
Normal bounding box eksen hizalıdır: kenarları enlem ve boylam eksenleri boyunca uzanır. Oriented bounding box (OBB, bilgisayar vizyonunda ve oyun motorlarında yaygın) özelliğe daha sıkı oturmak için döndürülmüştür; bu daha küçük bir alan verir ancak daha karmaşık matematik gerektirir. Jeomekansal çalışmalarda eksen hizalı bbox standart kabul edilir çünkü uzamsal veri tabanlarına temiz şekilde indekslenir, tile ızgarasına oturur ve üst üste gelme testi son derece kolaydır. Oriented bounding boxlar 3D render, nesne tespiti ve fizik motorlarında görünür.
Bounding box ile geocoding API'sini nasıl filtrelerim?
Bbox'ı viewport bias parametresi olarak geç. MapAtlas Geocoding API'sinde `boundary.rect.min_lon`, `boundary.rect.min_lat`, `boundary.rect.max_lon`, `boundary.rect.max_lat` parametrelerini gönderirsin; geocoder bu alanın içindeki sonuçları dışındakilere kıyasla üste sıralar. Bu, harita içindeki otomatik tamamlama için elzemdir: kullanıcı haritayı kaydırdıkça bbox'ı güncellersen öneriler baktıkları şeyle eşleşir. Bbox bias olmadan 'Springfield' için otomatik tamamlama, kullanıcının nadiren kastettiği en yüksek küresel popülerliğe sahip Springfield'ı döndürür.

