바운딩 박스는 어떤 매핑 스택에서든 가장 단순하고 유용한 공간 기본 도구입니다. 위도/경도 공간에서 직사각형을 표현하는 네 개의 숫자로, 사용하게 될 거의 모든 API 호출, GeoJSON 파일, 지도 라이브러리에 등장합니다.
이 가이드는 바운딩 박스가 무엇인지, 알아야 할 형식 규칙, 실무에서 빛을 발하는 패턴, 그리고 모든 개발자가 최소 한 번은 겪는 함정을 설명합니다.
정의
바운딩 박스(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 버그 원인입니다.
GeoJSON, OGC 표준, 대부분의 현대 API: [west, south, east, north], 즉 [minLng, minLat, maxLng, maxLat]. 경도 먼저, 위도 다음, 모두 WGS84.
일부 웹 매핑 라이브러리(Leaflet, Mapbox GL bounds 객체): _southWest와 _northEast 모서리를 가진 LatLngBounds 객체. 위도 먼저, 그 다음 경도.
많은 구형 API와 CSV 내보내기: [south, west, north, east] (위도 먼저). 스펙을 읽으세요.
타일 서비스와 WMS: 타일이 EPSG:3857일 때 위도/경도가 아닌 투영 단위(Web Mercator 미터)의 bbox.
방어적인 규칙: 코드에서 절대 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는 작음)와 지도 피팅 방법을 알 수 있기 때문이에요. "France"에 대한 지오코딩 응답은 국가 규모의 bbox를 반환하고, "10 Downing Street"에 대한 응답은 건물 규모의 bbox를 반환합니다.
반환된 bbox의 크기를 정밀도 확인에 활용할 수 있습니다. "국가" 정밀도로 매칭됐지만 건물 크기의 bbox를 반환하는 쿼리는 의심스럽습니다. "지붕" 정밀도로 매칭됐지만 도시 크기의 bbox를 반환하는 쿼리는 깨진 것입니다.
반경선을 넘는 바운딩 박스
미묘한 함정: 180도 반경선(예: 러시아, 태평양, 피지)을 넘는 bbox는 감싸기 때문에 west < east로 표현할 수 없습니다. 규칙이 다양합니다:
- 일부 시스템은 반경선의 양쪽에 하나씩 두 개로 분할합니다.
- 일부 시스템은
west > east를 허용하고 "감싸기"로 해석합니다. - GeoJSON은 감싸기를 허용하지만 상호운용성을 위해 분할을 권장합니다.
대부분의 유럽 또는 단일 국가 사용 사례에서는 이 문제가 절대 생기지 않습니다. 항공 노선, 해운, 어업 같은 글로벌 제품을 만든다면 반경선 케이스를 명시적으로 테스트하세요.
바운딩 박스 vs 폴리곤
bbox는 직사각형입니다. 실제 피처는 거의 직사각형이 아닙니다. 프랑스의 bbox는 대서양과 스페인의 일부를 포함하고, 맨해튼의 bbox는 뉴저지와 퀸즈의 일부를 포함합니다.
직사각형 근사가 충분할 때(지도 피팅, 빠른 사전 필터링)는 bbox가 적합한 도구입니다. 포인트가 실제로 피처 안에 있는지 알아야 할 때는 실제 경계 지오메트리에 대한 폴리곤 내 포인트 수학이 필요합니다. 흔한 프로덕션 패턴: 먼저 bbox로 필터링(빠르고, 인덱싱 가능, 레코드의 99%를 제거), 그런 다음 남은 것에 폴리곤 내 포인트를 실행(느리지만 정확). 이 두 단계 접근이 대부분의 공간 데이터베이스가 내부적으로 작동하는 방식입니다.
컴퓨터 비전의 바운딩 박스
객체 감지, 로보틱스, 3D 렌더링에서 "방향성 바운딩 박스"를 볼 수 있습니다. 이것은 다른 개념으로, OBB는 축-정렬 박스보다 피처에 더 꽉 맞게 회전된 것입니다. 지오스패셜 작업에서는 깔끔하게 인덱싱되고, 타일 그리드에 맞으며, 겹침 테스트가 쉽기 때문에 축-정렬 bbox가 표준입니다. 방향성 박스는 지도에서는 드물지만 컴퓨터 비전에서는 흔합니다.
MapAtlas의 바운딩 박스 활용
Geocoding API와 Search API의 모든 결과는 GeoJSON과 현대 지도 라이브러리가 기대하는 정확한 형식인 WGS84 경도/위도 순서로 매칭된 피처의 범위를 나타내는 bbox 필드를 반환합니다. 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가 표준입니다.
바운딩 박스로 지오코딩 API를 필터링하려면 어떻게 하나요?
bbox를 뷰포트 편향 파라미터로 전달하세요. MapAtlas Geocoding API에서는 `boundary.rect.min_lon`, `boundary.rect.min_lat`, `boundary.rect.max_lon`, `boundary.rect.max_lat`를 보내면, 지오코더가 해당 영역 안의 결과를 외부 결과보다 높게 순위를 매깁니다. 이것은 지도 내 자동완성에 필수적입니다. 사용자가 패닝할 때 bbox를 업데이트하면 제안이 보고 있는 것과 일치합니다. bbox 편향이 없으면 'Springfield' 자동완성이 전 세계에서 가장 인기 있는 Springfield를 반환하는데, 이는 사용자가 원하는 것이 아닌 경우가 많습니다.

