바운딩 박스는 지도 개발에서 가장 단순하면서도 가장 쓸모 있는 공간 연산 단위입니다. 위도와 경도로 직사각형 하나를 나타내는 숫자 네 개이며, 거의 모든 API 호출, GeoJSON 파일, 지도 라이브러리에 등장합니다.
이 가이드에서는 바운딩 박스의 정의, 알아야 할 형식 규칙, 실무에서 bbox가 제 몫을 하는 패턴, 그리고 개발자라면 한 번은 겪는 함정을 설명합니다.
정의
바운딩 박스(bbox)는 피처나 점 집합을 감싸는 가장 작은 축 정렬 직사각형입니다. "축 정렬"은 네 변이 위도선과 경도선을 따라 놓인다는 뜻입니다. 즉 직사각형이 회전하지 않습니다. bbox는 서쪽 경도, 남쪽 위도, 동쪽 경도, 북쪽 위도, 이렇게 네 숫자로 표현합니다.
파리의 공식 시 bbox는 대략 [2.224, 48.8156, 2.4699, 48.9022]입니다. 코르시카를 포함한 프랑스 본토(메트로폴)는 대략 [-5.142, 41.333, 9.560, 51.089]이고, 지구 전체는 [-180, -90, 180, 90]입니다.
bbox는 언제나 마주 보는 두 모서리로 정해집니다. 직사각형이 아닌 형태는 표현할 수 없지만, 어떤 형태든 그것을 감싸는 직사각형은 표현할 수 있습니다. 빠른 공간 필터링에는 그것으로 충분합니다.
bbox 형식 규칙
bbox 형식 규칙은 시스템마다 다르고, 이 차이가 대부분의 bbox 버그를 만듭니다.
GeoJSON, OGC 표준, 대부분의 최신 API: [west, south, east, north], 즉 [minLng, minLat, maxLng, maxLat]입니다. 경도가 먼저, 위도가 다음이고, 둘 다 WGS84 기준입니다.
Leaflet: _southWest와 _northEast 모서리를 가진 LatLngBounds 객체를 쓰며, 위도가 먼저이고 경도가 다음입니다. Mapbox GL과 MapLibre는 경도가 먼저 오는 LngLatBounds를 사용합니다.
많은 오래된 API와 CSV 내보내기: [south, west, north, east](위도 먼저)입니다. 명세를 꼭 읽으세요.
타일 서비스와 WMS: 타일이 EPSG:3857이면 bbox도 위도와 경도가 아니라 투영 단위(Web Mercator 미터)로 표현합니다.
안전한 규칙은 이렇습니다. 직접 작성하는 코드에서는 이름 없는 4요소 배열을 쓰지 마세요. { west, south, east, north }처럼 필드 이름이 있는 타입 객체로 감싸서 순서를 분명히 하세요. 변환은 API와 주고받는 경계에서만 하세요.
바운딩 박스가 쓰이는 곳
bbox는 가장 빠른 공간 필터입니다. 대표적인 활용은 세 가지입니다.
지도를 피처에 맞추기. 사용자가 검색 결과를 열면 map.fitBounds(bbox)를 호출합니다. 지도가 확대와 이동을 거쳐 적당한 여백과 함께 피처를 보여줍니다. 최신 지도 라이브러리라면 모두 이 기능을 갖추고 있습니다.
영역으로 API 쿼리 거르기. 데이터베이스 엔진과 검색 API는 bbox를 매우 효율적으로 인덱싱합니다. "이 화면 안의 장소를 모두 보여줘" 같은 쿼리는 현재 보이는 bbox를 서버에 보내고, 서버는 공간 인덱스로 해당하는 레코드만 돌려줍니다. 뷰포트 기반 검색은 이 방식 위에서 동작합니다.
자동완성과 지오코딩 결과 우선 지정. 사용자가 보고 있는 지도의 bbox를 뷰포트 우선 지정 값으로 전달하세요. 지오코더가 bbox 안의 결과에 더 큰 가중치를 두므로, 뉴욕 뷰포트 안에서 "Liberty"를 입력하면 세계의 다른 Liberty보다 자유의 여신상이 먼저 나옵니다.
눈에 덜 띄는 네 번째 활용도 있습니다. 벡터 타일 시스템은 bbox를 기준 단위로 타일을 관리합니다. 각 타일은 정해진 줌 레벨에서 정해진 bbox를 담당하고, 렌더러가 타일을 합쳐 화면의 지도를 만듭니다.
API가 반환하는 것
대부분의 지오코딩 API는 결과마다 bbox를 함께 반환합니다. bbox를 보면 찾은 피처의 크기(국가 bbox는 크고, 건물 bbox는 작습니다)와 지도를 어떻게 맞출지를 함께 알 수 있기 때문입니다. "France"에 대한 지오코딩 응답은 국가 규모의 bbox를 반환하고, "10 Downing Street"에 대한 응답은 건물 규모의 bbox를 반환합니다.
반환된 bbox의 크기로 정밀도를 점검할 수 있습니다. "국가" 정밀도로 매칭됐는데 bbox가 건물 크기라면 의심해야 합니다. "건물(rooftop)" 정밀도로 매칭됐는데 bbox가 도시 크기라면 결과가 잘못된 것입니다.
날짜 변경선을 넘는 바운딩 박스
놓치기 쉬운 함정이 하나 있습니다. 경도 180도 선, 즉 날짜 변경선을 넘는 bbox(러시아, 태평양, 피지 등)는 지구를 한 바퀴 돌아 이어지므로 west < east로 표현할 수 없습니다. 처리 방식은 시스템마다 다릅니다.
- 일부 시스템은 이런 bbox를 날짜 변경선 양쪽에 하나씩, 두 개로 나눕니다.
- 일부 시스템은
west > east를 허용하고 "한 바퀴 돌아 이어짐"으로 해석합니다. - GeoJSON(RFC 7946)은 west가 east보다 큰 bbox를 허용합니다. 다만 날짜 변경선을 넘는 지오메트리 자체는 둘로 나누어야 합니다.
유럽이나 한 나라 안에서만 쓰는 서비스라면 이 문제를 만날 일이 없습니다. 항공 노선, 해운, 어업처럼 전 세계를 다루는 제품을 만든다면 날짜 변경선 케이스를 따로 테스트하세요.
바운딩 박스와 폴리곤의 차이
bbox는 직사각형이지만, 실제 피처가 직사각형인 경우는 드뭅니다. 프랑스의 bbox는 대서양과 스페인의 일부를 포함하고, 맨해튼의 bbox는 뉴저지와 퀸즈의 일부를 포함합니다.
직사각형 근사로 충분할 때(지도 맞추기, 빠른 1차 필터링)는 bbox가 맞는 도구입니다. 어떤 점이 실제로 피처 안에 있는지 알아야 한다면 실제 경계 지오메트리로 점 포함(point-in-polygon) 판정을 해야 합니다. 실무에서 흔한 패턴은 이렇습니다. 먼저 bbox로 거릅니다. 빠르고 인덱스를 쓸 수 있으며 레코드 대부분을 걸러냅니다. 그다음 남은 레코드에만 점 포함 판정을 실행합니다. 느리지만 정확합니다. 대부분의 공간 데이터베이스도 내부적으로 이 두 단계 방식으로 동작합니다.
컴퓨터 비전의 바운딩 박스
객체 감지, 로보틱스, 3D 렌더링 분야에서는 "방향성 바운딩 박스(OBB)"라는 말을 볼 수 있습니다. 다른 개념입니다. OBB는 축 정렬 박스보다 피처에 더 꼭 맞도록 회전한 박스입니다. 지리공간 작업에서는 축 정렬 bbox가 표준입니다. 인덱싱이 깔끔하고, 타일 그리드와 맞아떨어지며, 겹침 여부를 쉽게 확인할 수 있기 때문입니다. 회전한 직사각형 계산이 필요할 때 OBB를 쓰는데, 지도에서는 드물고 컴퓨터 비전에서는 흔합니다.
MapAtlas의 바운딩 박스 활용
Geocoding API와 Search API는 모든 결과에 bbox 필드를 담아 반환합니다. 찾은 피처의 범위를 WGS84 경도, 위도 순서로 나타내며, GeoJSON과 최신 지도 라이브러리가 기대하는 형식 그대로입니다. boundary.rect.* 파라미터를 쓰면 지오코딩 결과를 현재 뷰포트 쪽으로 우선할 수 있습니다. Isochrone API는 이동 시간 폴리곤과 함께 이를 감싸는 bbox도 반환하므로, 직접 계산하지 않고도 지도를 맞출 수 있습니다.
GeoJSON을 직접 다뤄 보고 bbox가 공간 데이터 전체에서 어떤 역할을 하는지 알고 싶다면 GeoJSON이란 무엇인가와 지오코드란 무엇인가를 참고하세요.
자주 묻는 질문
바운딩 박스란 무엇인가요?
바운딩 박스(줄여서 bbox)는 지리 피처나 점 집합을 감싸는 가장 작은 축 정렬 직사각형입니다. 최소 경도와 최대 경도, 최소 위도와 최대 위도, 이렇게 네 개의 숫자로 표현합니다. 지도를 피처에 맞출 때, 데이터베이스 쿼리를 영역으로 거를 때, 타일의 범위를 정할 때, 지오코딩 결과를 특정 지역 쪽으로 우선할 때 등 지도 개발 곳곳에서 쓰입니다. 실무 코드에서 가장 단순하고 빠른 공간 연산 단위입니다.
바운딩 박스의 표준 형식은 무엇인가요?
GeoJSON과 대부분의 최신 API는 [west, south, east, north], 즉 [minLng, minLat, maxLng, maxLat] 순서를 사용합니다. 기본적으로 이 형식을 사용하세요. 일부 오래된 API와 CSV 내보내기는 [south, west, north, east](위도 먼저) 순서를 쓰고, 네 값을 별도 필드로 나누는 경우도 있습니다. 사용하는 API나 형식의 문서를 반드시 확인하세요. 가장 흔한 실수는 위도와 경도 순서를 뒤섞는 것입니다. 그러면 박스가 지구 반대편에 놓입니다.
바운딩 박스와 방향성 바운딩 박스의 차이는 무엇인가요?
일반 바운딩 박스는 축에 정렬되어 있습니다. 네 변이 위도선과 경도선을 따라 놓입니다. 방향성 바운딩 박스(OBB)는 컴퓨터 비전과 게임 엔진에서 흔히 쓰며, 피처에 더 꼭 맞도록 회전한 박스입니다. 면적은 더 작지만 계산이 더 복잡합니다. 지리공간 작업에서는 축 정렬 bbox가 표준입니다. 공간 데이터베이스에 깔끔하게 인덱싱되고, 타일 그리드와 맞아떨어지며, 겹침 여부를 쉽게 확인할 수 있기 때문입니다. 방향성 바운딩 박스는 3D 렌더링, 객체 감지, 물리 엔진에서 등장합니다.
바운딩 박스로 지오코딩 API를 필터링하려면 어떻게 하나요?
bbox를 뷰포트 우선 지정(viewport bias) 파라미터로 전달하세요. MapAtlas Geocoding API에서는 `boundary.rect.min_lon`, `boundary.rect.min_lat`, `boundary.rect.max_lon`, `boundary.rect.max_lat`를 보내면, 지오코더가 그 영역 안의 결과를 바깥 결과보다 위에 올립니다. 지도 안의 자동완성에는 꼭 필요한 기능입니다. 사용자가 지도를 움직일 때마다 bbox를 갱신하면, 추천 결과가 사용자가 보고 있는 지역과 맞습니다. bbox 우선 지정이 없으면 'Springfield' 자동완성은 전 세계에서 가장 유명한 Springfield를 돌려주는데, 사용자가 찾는 곳은 대개 그곳이 아닙니다.

