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

9

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

지도를 100배 확대해도 글자는 안 깨진다

스마트폰 지도를 손가락으로 쭉 확대해보세요. 도로도, 지하철역 이름도, 아무리 키워도 칼처럼 선명합니다. 그런데 위성사진 모드로 바꾸고 똑같이 확대하면, 어느 순간 화면이 네모난 픽셀 뭉치로 뭉개지죠. 같은 앱, 같은 화면인데 왜 하나는 안 깨지고 하나는 깨질까요? 이 사소해 보이는 차이 속에, GIS 데이터가 태어날 때부터 갈리는 가장 근본적인 갈림길 — 벡터와 래스터 — 가 숨어 있습니다.

지난 좌표 변환 편까지, 우리는 줄곧 "지구의 한 점을 어떤 숫자로 찍을까"를 붙잡고 Phase 1~2를 돌았습니다. 좌표라는 '주소 체계'가 이제 준비됐죠. 그러면 진짜 질문이 남습니다. 그 주소 위에 얹히는 데이터 자체는 도대체 어떤 모습으로 저장돼 있을까요? 오늘부터 시작하는 Phase 3(데이터 포맷)의 첫 문을, 그 데이터의 두 얼굴로 엽니다.

두 가지 방식 — 좌표로 그리기 vs 격자로 찍기

세상을 지도에 담는 방법은 크게 둘뿐입니다.

벡터(Vector) 는 세상을 점·선·면으로 그립니다. 도형의 꼭짓점을 좌표로 콕콕 찍어 기록하는 방식이에요.

래스터(Raster) 는 정반대입니다. 세상을 균일한 격자로 잘게 나눈 뒤, 칸(셀·픽셀) 하나하나에 값을 딱 하나씩 채워 넣죠. 위성사진이라면 칸마다 색(RGB), 고도 지도라면 칸마다 높이(m), 기온 지도라면 칸마다 몇 ℃ — 이런 식으로요.

한 문장으로 비유하면, 벡터는 도형이고 래스터는 사진입니다. 벡터가 "무엇이 어디에 있다"를 선으로 그린다면, 래스터는 모눈종이 위에 "여기는 이 값"을 빼곡히 색칠하는 셈이죠.

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

확대해도 안 깨지는 이유

이제 도입부의 수수께끼를 풀 수 있습니다.

벡터는 좌표와 '그리는 규칙'을 저장합니다. "이 점에서 저 점까지 두께 2의 선을 그어라" 같은 지시문이죠. 그래서 화면을 100배 확대하면, 좌표에 배율만 곱해 그 자리에서 선을 다시 그립니다. 몇 배를 키우든 선은 여전히 1픽셀처럼 매끈해요. 도로도, 글자도, 아이콘도 무한히 선명한 건 이 때문입니다.

래스터는 이미 '그려진 결과'를 저장합니다. 칸의 개수가 애초에 정해져 있죠. 확대한다는 건 그 칸 하나하나를 크게 늘리는 것뿐이라, 어느 순간 네모난 칸이 계단처럼 도드라집니다. 우리가 '해상도'라 부르는 게 바로 이 칸의 촘촘함이에요. 원본에 없는 디테일은 아무리 확대해도 나타나지 않습니다. 없는 정보를 지어낼 수는 없으니까요.

💡 사실 이건 컴퓨터를 쓰면서 매일 겪는 일이에요. 벡터 폰트로 쓴 글자는 아무리 확대해도 또렷하지만, 글자를 찍은 스크린샷(비트맵) 을 확대하면 픽셀이 드러나 깨지죠. 지도 위 도로와 위성사진의 관계가 정확히 이 폰트와 스크린샷의 관계입니다.

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

각자 잘하는 일 — 세상은 두 종류다

그럼 언제 벡터를 쓰고 언제 래스터를 써야 할까요? 판단의 열쇠는 의외로 데이터 자체의 성격에 있습니다. 세상의 데이터는 두 종류로 나뉘거든요.

그래서 헷갈릴 때 스스로에게 던질 질문은 딱 하나입니다.

💡 "이건 셀 수 있는 것인가(→ 벡터), 아니면 어디에나 값이 있는 것인가(→ 래스터)?" 이 질문 하나면 대부분 갈립니다.

데이터성격어울리는 표현
도로·건물·행정구역이산 객체벡터
지하철 노선·정류장이산 객체벡터
위성·항공사진픽셀 이미지래스터
고도(DEM)·경사연속 필드래스터
기온·강수·미세먼지 분포연속 필드래스터

💡 주의할 함정 하나 — 위성사진은 래스터의 대표선수지만, 그 사진에서 건물 외곽선을 따서 만든 데이터는 벡터입니다. 즉 원천이 무엇이었느냐가 아니라 지금 어떤 방식으로 표현하느냐가 벡터와 래스터를 가릅니다.

트레이드오프 — 용량·분석·정밀도

성격만으로 딱 떨어지지 않을 때는, 세 가지 축에서 저울질하게 됩니다.

① 용량. 벡터는 좌표만 저장하니 단순한 대상엔 아주 가볍습니다. 점 하나는 숫자 두 개면 끝이죠. 하지만 해안선처럼 꼬불꼬불한 형상은 꼭짓점이 수만 개로 불어나 좌표가 폭발합니다. 래스터는 반대예요. 용량이 곧 가로 칸 × 세로 칸 이라, 해상도를 2배로 높이면 용량은 4배(제곱)로 뜁니다. 넓은 지역을 고해상도로 담으려는 순간 파일이 순식간에 거대해지죠.

② 분석. 벡터는 객체를 묻는 질문에 강합니다. 정확한 면적·길이, 위상(topology) 관계("이 도로가 이 구역을 지나가나?"), 최단경로 같은 것들요. 래스터는 장소마다의 값을 겹치는 질문에 강합니다. 칸 대 칸으로 계산하는 산수(map algebra)가 빠르거든요. 예를 들어 "고도 지도 + 경사 지도를 겹쳐 산사태 위험도 계산" 같은 오버레이는, 같은 자리의 칸끼리 더하면 그만입니다.

③ 속성과 정밀도. 벡터는 객체마다 풍부한 속성표를 붙일 수 있어요. 건물 하나에 이름·층수·용도·준공연도를 매다는 식이죠. 반면 래스터는 칸 하나당 값 하나뿐이고, 정밀도는 칸 크기(해상도)에 갇힙니다. 10m 격자라면 10m보다 작은 것은 보이지 않아요.

💡 한 줄로 — 벡터는 '객체를 묻는 질문', 래스터는 '장소마다의 값을 겹치는 질문'에 강합니다. 어떤 질문을 자주 던질지가 곧 선택의 기준이 되죠.

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

둘은 서로 오갈 수 있다

벡터와 래스터는 벽으로 막혀 있지 않습니다. 서로 변환할 수 있어요.

다만 변환은 공짜가 아닙니다. 벡터를 래스터로 구우면 매끈하던 선이 계단으로 변하고, 래스터를 벡터로 따면 픽셀 경계가 삐뚤빼뚤 남습니다. 정보가 조금씩 새어 나가죠.

💡 이 "래스터 → 벡터" 변환을 사람 대신 기계가 자동으로 해내는 게, 요즘 AI가 GIS에서 하는 대표적인 일입니다. 위성사진(래스터)을 넣으면 건물·도로·경작지(벡터)를 알아서 그려내죠. 이 이야기는 한참 뒤 AI + GIS 편에서 제대로 다룹니다.

실무에선 섞어 쓴다

그래서 실제 지도는 둘 중 하나를 고르는 게 아니라, 둘을 층층이 포갭니다.

웹지도 화면을 해부해보면 이렇습니다. 맨 아래에는 위성사진이나 배경 지도가 래스터 타일로 깔립니다. 그 위에 도로·건물 경계·라벨·마커가 벡터로 얹히죠. 배경은 사진처럼 넓게 깔고, 클릭·하이라이트·스타일 변경 같은 상호작용은 벡터가 담당하는 겁니다.

이제 도입부의 수수께끼가 완전히 풀립니다. 우리가 지도를 확대했을 때 글자는 선명한데 위성사진은 깨졌던 건, 사실 한 화면 안에 벡터 레이어와 래스터 레이어가 겹쳐 있었기 때문이에요. 각자의 성질이 같은 화면에서 동시에 드러났던 거죠.

정리 — 한 문장으로

벡터는 '무엇이 어디에 있는지'를 좌표로 그리고, 래스터는 '장소마다 어떤 값인지'를 격자로 채운다. 셀 수 있으면 벡터, 어디에나 값이 있으면 래스터.

벡터래스터
저장 방식점·선·면의 좌표격자 셀마다 값 하나
확대하면다시 그려서 늘 선명픽셀로 깨짐(해상도 한계)
어울리는 데이터이산 객체(도로·건물·경계)연속 필드·이미지(고도·기온·위성)
강한 분석면적·경로·위상격자 산수(오버레이·map algebra)
용량 약점복잡한 형상 = 좌표 폭발고해상도·넓은 지역 = 제곱 폭발

이렇게 '벡터냐 래스터냐'라는 큰 갈림길을 손에 쥐었으니, 다음은 그 벡터 데이터가 실제 파일로 어떻게 담기는지 볼 차례입니다. 30년이 지나도 좀처럼 죽지 않는 벡터 포맷의 터줏대감, Shapefile — 분명 파일 하나인 줄 알고 열었는데 서너 개가 한 묶음으로 딸려 나오더라는, 그 오래된 표준의 사연으로 이어집니다.

참고