왜 지도는 아무리 확대해도 글자가 안 깨질까 — 벡터와 래스터, GIS 데이터의 두 얼굴

지도를 100배 확대해도 글자는 안 깨진다
스마트폰 지도를 손가락으로 쭉 확대해보세요. 도로도, 지하철역 이름도, 아무리 키워도 칼처럼 선명합니다. 그런데 위성사진 모드로 바꾸고 똑같이 확대하면, 어느 순간 화면이 네모난 픽셀 뭉치로 뭉개지죠. 같은 앱, 같은 화면인데 왜 하나는 안 깨지고 하나는 깨질까요? 이 사소해 보이는 차이 속에, GIS 데이터가 태어날 때부터 갈리는 가장 근본적인 갈림길 — 벡터와 래스터 — 가 숨어 있습니다.
지난 좌표 변환 편까지, 우리는 줄곧 "지구의 한 점을 어떤 숫자로 찍을까"를 붙잡고 Phase 1~2를 돌았습니다. 좌표라는 '주소 체계'가 이제 준비됐죠. 그러면 진짜 질문이 남습니다. 그 주소 위에 얹히는 데이터 자체는 도대체 어떤 모습으로 저장돼 있을까요? 오늘부터 시작하는 Phase 3(데이터 포맷)의 첫 문을, 그 데이터의 두 얼굴로 엽니다.
두 가지 방식 — 좌표로 그리기 vs 격자로 찍기
세상을 지도에 담는 방법은 크게 둘뿐입니다.
벡터(Vector) 는 세상을 점·선·면으로 그립니다. 도형의 꼭짓점을 좌표로 콕콕 찍어 기록하는 방식이에요.
- 점(Point) — 위치 하나. 편의점, 지하철역, 소화전.
- 선(Line) — 점들을 이은 것. 도로, 강, 지하철 노선.
- 면(Polygon) — 점들로 빙 둘러 닫은 것. 건물, 행정구역, 호수.
래스터(Raster) 는 정반대입니다. 세상을 균일한 격자로 잘게 나눈 뒤, 칸(셀·픽셀) 하나하나에 값을 딱 하나씩 채워 넣죠. 위성사진이라면 칸마다 색(RGB), 고도 지도라면 칸마다 높이(m), 기온 지도라면 칸마다 몇 ℃ — 이런 식으로요.
한 문장으로 비유하면, 벡터는 도형이고 래스터는 사진입니다. 벡터가 "무엇이 어디에 있다"를 선으로 그린다면, 래스터는 모눈종이 위에 "여기는 이 값"을 빼곡히 색칠하는 셈이죠.
확대해도 안 깨지는 이유
이제 도입부의 수수께끼를 풀 수 있습니다.
벡터는 좌표와 '그리는 규칙'을 저장합니다. "이 점에서 저 점까지 두께 2의 선을 그어라" 같은 지시문이죠. 그래서 화면을 100배 확대하면, 좌표에 배율만 곱해 그 자리에서 선을 다시 그립니다. 몇 배를 키우든 선은 여전히 1픽셀처럼 매끈해요. 도로도, 글자도, 아이콘도 무한히 선명한 건 이 때문입니다.
래스터는 이미 '그려진 결과'를 저장합니다. 칸의 개수가 애초에 정해져 있죠. 확대한다는 건 그 칸 하나하나를 크게 늘리는 것뿐이라, 어느 순간 네모난 칸이 계단처럼 도드라집니다. 우리가 '해상도'라 부르는 게 바로 이 칸의 촘촘함이에요. 원본에 없는 디테일은 아무리 확대해도 나타나지 않습니다. 없는 정보를 지어낼 수는 없으니까요.
💡 사실 이건 컴퓨터를 쓰면서 매일 겪는 일이에요. 벡터 폰트로 쓴 글자는 아무리 확대해도 또렷하지만, 글자를 찍은 스크린샷(비트맵) 을 확대하면 픽셀이 드러나 깨지죠. 지도 위 도로와 위성사진의 관계가 정확히 이 폰트와 스크린샷의 관계입니다.
각자 잘하는 일 — 세상은 두 종류다
그럼 언제 벡터를 쓰고 언제 래스터를 써야 할까요? 판단의 열쇠는 의외로 데이터 자체의 성격에 있습니다. 세상의 데이터는 두 종류로 나뉘거든요.
- 이산(discrete) 객체 — 경계가 뚜렷하고 개수를 셀 수 있는 것. 건물 3동, 도로 5개, 편의점 12곳. 하나하나가 독립된 '물건'이죠. → 벡터가 어울립니다.
- 연속(continuous) 필드 — 어디서나 값이 존재하고 부드럽게 변하는 것. 고도, 기온, 강수량, 경사. "여기 기온이 몇 개?"라고 물으면 말이 안 되죠. 기온은 세는 게 아니라 모든 지점에 값이 있는 것이니까요. → 래스터가 어울립니다.
그래서 헷갈릴 때 스스로에게 던질 질문은 딱 하나입니다.
💡 "이건 셀 수 있는 것인가(→ 벡터), 아니면 어디에나 값이 있는 것인가(→ 래스터)?" 이 질문 하나면 대부분 갈립니다.
| 데이터 | 성격 | 어울리는 표현 |
|---|---|---|
| 도로·건물·행정구역 | 이산 객체 | 벡터 |
| 지하철 노선·정류장 | 이산 객체 | 벡터 |
| 위성·항공사진 | 픽셀 이미지 | 래스터 |
| 고도(DEM)·경사 | 연속 필드 | 래스터 |
| 기온·강수·미세먼지 분포 | 연속 필드 | 래스터 |
💡 주의할 함정 하나 — 위성사진은 래스터의 대표선수지만, 그 사진에서 건물 외곽선을 따서 만든 데이터는 벡터입니다. 즉 원천이 무엇이었느냐가 아니라 지금 어떤 방식으로 표현하느냐가 벡터와 래스터를 가릅니다.
트레이드오프 — 용량·분석·정밀도
성격만으로 딱 떨어지지 않을 때는, 세 가지 축에서 저울질하게 됩니다.
① 용량. 벡터는 좌표만 저장하니 단순한 대상엔 아주 가볍습니다. 점 하나는 숫자 두 개면 끝이죠. 하지만 해안선처럼 꼬불꼬불한 형상은 꼭짓점이 수만 개로 불어나 좌표가 폭발합니다. 래스터는 반대예요. 용량이 곧 가로 칸 × 세로 칸 이라, 해상도를 2배로 높이면 용량은 4배(제곱)로 뜁니다. 넓은 지역을 고해상도로 담으려는 순간 파일이 순식간에 거대해지죠.
② 분석. 벡터는 객체를 묻는 질문에 강합니다. 정확한 면적·길이, 위상(topology) 관계("이 도로가 이 구역을 지나가나?"), 최단경로 같은 것들요. 래스터는 장소마다의 값을 겹치는 질문에 강합니다. 칸 대 칸으로 계산하는 산수(map algebra)가 빠르거든요. 예를 들어 "고도 지도 + 경사 지도를 겹쳐 산사태 위험도 계산" 같은 오버레이는, 같은 자리의 칸끼리 더하면 그만입니다.
③ 속성과 정밀도. 벡터는 객체마다 풍부한 속성표를 붙일 수 있어요. 건물 하나에 이름·층수·용도·준공연도를 매다는 식이죠. 반면 래스터는 칸 하나당 값 하나뿐이고, 정밀도는 칸 크기(해상도)에 갇힙니다. 10m 격자라면 10m보다 작은 것은 보이지 않아요.
💡 한 줄로 — 벡터는 '객체를 묻는 질문', 래스터는 '장소마다의 값을 겹치는 질문'에 강합니다. 어떤 질문을 자주 던질지가 곧 선택의 기준이 되죠.
둘은 서로 오갈 수 있다
벡터와 래스터는 벽으로 막혀 있지 않습니다. 서로 변환할 수 있어요.
- 벡터 → 래스터(rasterize) — 도형을 격자에 '구워' 넣습니다. 행정구역 폴리곤을 격자로 구운 뒤 인구밀도 래스터와 겹쳐 분석하는 식이죠.
- 래스터 → 벡터(vectorize) — 격자에서 경계를 뽑아냅니다. 위성사진에서 도로·건물의 외곽선을 따내는 게 대표적입니다.
다만 변환은 공짜가 아닙니다. 벡터를 래스터로 구우면 매끈하던 선이 계단으로 변하고, 래스터를 벡터로 따면 픽셀 경계가 삐뚤빼뚤 남습니다. 정보가 조금씩 새어 나가죠.
💡 이 "래스터 → 벡터" 변환을 사람 대신 기계가 자동으로 해내는 게, 요즘 AI가 GIS에서 하는 대표적인 일입니다. 위성사진(래스터)을 넣으면 건물·도로·경작지(벡터)를 알아서 그려내죠. 이 이야기는 한참 뒤 AI + GIS 편에서 제대로 다룹니다.
실무에선 섞어 쓴다
그래서 실제 지도는 둘 중 하나를 고르는 게 아니라, 둘을 층층이 포갭니다.
웹지도 화면을 해부해보면 이렇습니다. 맨 아래에는 위성사진이나 배경 지도가 래스터 타일로 깔립니다. 그 위에 도로·건물 경계·라벨·마커가 벡터로 얹히죠. 배경은 사진처럼 넓게 깔고, 클릭·하이라이트·스타일 변경 같은 상호작용은 벡터가 담당하는 겁니다.
이제 도입부의 수수께끼가 완전히 풀립니다. 우리가 지도를 확대했을 때 글자는 선명한데 위성사진은 깨졌던 건, 사실 한 화면 안에 벡터 레이어와 래스터 레이어가 겹쳐 있었기 때문이에요. 각자의 성질이 같은 화면에서 동시에 드러났던 거죠.
정리 — 한 문장으로
벡터는 '무엇이 어디에 있는지'를 좌표로 그리고, 래스터는 '장소마다 어떤 값인지'를 격자로 채운다. 셀 수 있으면 벡터, 어디에나 값이 있으면 래스터.
| 벡터 | 래스터 | |
|---|---|---|
| 저장 방식 | 점·선·면의 좌표 | 격자 셀마다 값 하나 |
| 확대하면 | 다시 그려서 늘 선명 | 픽셀로 깨짐(해상도 한계) |
| 어울리는 데이터 | 이산 객체(도로·건물·경계) | 연속 필드·이미지(고도·기온·위성) |
| 강한 분석 | 면적·경로·위상 | 격자 산수(오버레이·map algebra) |
| 용량 약점 | 복잡한 형상 = 좌표 폭발 | 고해상도·넓은 지역 = 제곱 폭발 |
이렇게 '벡터냐 래스터냐'라는 큰 갈림길을 손에 쥐었으니, 다음은 그 벡터 데이터가 실제 파일로 어떻게 담기는지 볼 차례입니다. 30년이 지나도 좀처럼 죽지 않는 벡터 포맷의 터줏대감, Shapefile — 분명 파일 하나인 줄 알고 열었는데 서너 개가 한 묶음으로 딸려 나오더라는, 그 오래된 표준의 사연으로 이어집니다.
참고
- https://docs.qgis.org/latest/en/docs/gentle_gis_introduction/vector_data.html
- https://docs.qgis.org/latest/en/docs/gentle_gis_introduction/raster_data.html
- https://gisgeography.com/spatial-data-types-vector-raster/
- https://en.wikipedia.org/wiki/Vector_data
- https://en.wikipedia.org/wiki/Raster_data
- https://datacarpentry.org/organization-geospatial/02-intro-vector-data.html