한국은 왜 EPSG:5179를 쓸까 — 좌표계의 주민등록번호, EPSG

7

한국은 왜 EPSG:5179를 쓸까 — 좌표계의 주민등록번호, EPSG 이미지

좌표값만으로는 아무 데도 못 간다

127, 37.5. 이게 어디냐고 물으면, 정답은 "그것만으론 알 수 없다" 입니다. 어느 좌표계의 127, 37.5냐에 따라 서울일 수도, 엉뚱한 바다일 수도 있거든요. 그래서 좌표에는 늘 "어느 기준이냐"라는 꼬리표가 따라붙고, 그 꼬리표를 숫자 하나로 줄인 게 바로 EPSG 코드입니다.

지난 세 편에서 우리는 좌표가 생각보다 미끄러운 물건이라는 걸 봤습니다.

공통점이 보이나요? 좌표값 (x, y)혼자서는 반쪽짜리 정보입니다. "어느 기준 위에서 잰 숫자냐"를 모르면 해석할 수가 없죠. 그 기준 전체를 매번 줄줄 읊는 대신, 사람들은 영리한 약속을 만들었습니다.

EPSG가 대체 뭔데

EPSG 코드는 전 세계의 좌표계마다 하나씩 붙여 둔 고유 번호입니다. EPSG:4326, EPSG:5179처럼요. 이 번호 하나만 대면 "그 좌표계가 정확히 무엇인지"가 전 세계 어디서나 똑같이 통합니다.

이름이 좀 뜬금없죠? EPSG는 European Petroleum Survey Group(유럽 석유 탐사 그룹) 의 약자입니다. 석유를 찾아 전 세계를 돌아다니던 사람들이, 나라마다 좌표계가 제각각이라 데이터가 안 맞아 죽을 고생을 하다가 "좌표계마다 번호를 매겨 목록으로 만들자"며 시작한 거예요. 지금은 IOGP라는 기구가 이어받아 관리하고, 누구나 epsg.io에서 아무 코드나 검색해볼 수 있습니다.

💡 핵심은 이 한 줄입니다. EPSG 코드 = 측지계 + 투영 + 단위를 통째로 가리키는 약어. 복잡한 좌표계 설명을 숫자 하나로 압축한 '단축키'인 셈이죠.

코드 하나에 뭐가 들었나 — 좌표계의 주민등록번호

EPSG:5179라는 번호 하나를 풀어서 길게 써 보면 이렇습니다.

세계측지계(GRS80 타원체) + 횡축 메르카토르(TM) 투영 + 중앙자오선 127.5° + 축척 0.9996 + 미터 단위 …

이걸 매번 말할 수는 없잖아요. 그래서 그냥 "5179" 한 마디로 끝냅니다. 사람을 "키 175에 1990년생, 서울 사는…"이라고 묘사하는 대신 주민등록번호 하나로 특정하는 것과 똑같아요. EPSG 코드는 좌표계의 주민등록번호입니다.

한국은 왜 EPSG:5179를 쓸까 — 좌표계의 주민등록번호, EPSG 이미지

여기서 멋진 건, 앞 두 편이 이 코드 하나에 그대로 압축된다는 점입니다. 지구의 진짜 모양 편의 측지계지도 투영법 편의 투영이 합쳐져 EPSG 코드 하나가 되는 거죠. 그래서 "이 데이터 EPSG 몇이야?"라는 질문 한 번이면, 측지계도 투영도 단위도 전부 한꺼번에 답이 나옵니다.

꼭 아는 코드 여섯 개

수만 개의 EPSG 코드가 있지만, 실무에서 매일 만나는 건 사실 몇 개뿐입니다.

EPSG정체좌표 모양측지계누가 쓰나
4326WGS84 위경도위도·경도(도)세계측지계GPS·GeoJSON·전 세계
3857웹 메르카토르평면(m)세계측지계구글·OSM 등 웹 타일
5179UTM-K평면(m)세계측지계(GRS80)네이버·국토정보플랫폼
5181중부원점(카카오식)평면(m)세계측지계카카오맵
5186중부원점(국가표준)평면(m)세계측지계공공·지적
5174옛 중부원점평면(m)동경측지계(Bessel)옛 지적도(레거시)

크게 둘로 나뉩니다. 4326은 위경도(도 단위) — 우리가 흔히 아는 "북위 37.5도, 동경 127도". 나머지는 전부 평면 좌표(미터 단위) — 투영을 거쳐 종이에 펼친 X·Y 미터값이죠.

💡 그래서 좌표 숫자만 봐도 대충 정체가 보입니다. 37.5처럼 두 자리 소수면 십중팔구 위경도(4326), 198…, 451…처럼 여섯 자리 미터면 평면 좌표(5179·5186 계열)예요.

한국 좌표계는 왜 이렇게 많을까 — 3대 카오스

표만 봐도 한국 코드가 유난히 많죠? 5174, 5179, 5181, 5186… 여기엔 세 가지 이유가 겹쳐 있습니다.

① 측지계의 흉터. 지구의 진짜 모양 편에서 한국이 옛 동경측지계(Bessel) 를 버리고 세계측지계(GRS80) 로 갈아탔다고 했죠. 문제는 옛 지적도·자료에 그 시절 좌표계(5174 등)가 아직 그대로 남아 있다는 겁니다. 이걸 모르고 GPS·구글지도에 그냥 올리면 약 300m 어긋나 건물이 도로 위에 얹힙니다.

② TM 띠가 셋이라서. 지도 투영법 편에서 본 것처럼, 띠는 좁을수록 왜곡이 작습니다. 그래서 한국은 정밀 측량용으로 전국을 아예 셋으로 쪼갰어요. 서부(5185·125°)·중부(5186·127°)·동부(5187·129°), 각 지역마다 중앙자오선이 다른 원점을 씁니다.

그런데 이렇게 셋으로 쪼개면 전국이 하나로 안 이어진다는 불편이 생깁니다. 띠 경계(예: 중부↔동부)를 넘는 순간 좌표가 뚝 끊기거든요. 그래서 "전국을 통째로 한 좌표계에" 담고 싶을 땐, 정밀도를 살짝 양보하고 중앙자오선 하나(127.5°)로 전국을 덮는 5179(UTM-K, 이름의 K는 Korea·전국 통합) 를 씁니다. 즉 정밀 지적이면 3-belt, 전국 통짜면 5179 — 용도가 갈리는 거죠.

한국은 왜 EPSG:5179를 쓸까 — 좌표계의 주민등록번호, EPSG 이미지

③ 업체·기관이 제각각이라서. 같은 한국 땅인데, 네이버는 5179, 카카오는 5181, 공공·지적 기관은 5186을 씁니다. 민간 지도엔 "이걸 써라"는 강제 표준이 없다 보니, 각자 서비스를 시작하던 시점에 편한 걸 골랐어요. 게다가 한번 정하면 이미 쌓인 수억 장의 타일과 데이터를 전부 다시 만들어야 해서 못 바꿉니다. 그렇게 각자의 선택이 그대로 굳어버린 거죠.

💡 잠깐, false northing이 뭐죠? 투영으로 만든 X·Y 좌표는 기준선 근처에서 음수가 튀어나올 수 있어요. 그게 불편해서, 모든 좌표가 양수가 되도록 X·Y에 큰 숫자를 미리 더해 둡니다. 그 더하는 값(=눈금의 "0점"을 어디에 둘지)이 바로 false easting·northing이에요. 앞서 나온 51815186이 딱 이 경우 — 투영은 (127° TM으로) 똑같은데 더해둔 세로값만 50만 vs 60만이라, 같은 자리인데 Y좌표가 10만 m 차이나게 찍힙니다. 같은 자인데 눈금 0을 다른 데 그어놓은 셈이죠.

그래서 한국에서 공간 데이터를 받으면, 열어보기 전에 던지는 첫 질문이 늘 똑같습니다. "이거 EPSG 몇이에요?"

그래서 실무에서는

결론은 단순합니다. 좌표값과 EPSG 코드는 항상 한 쌍으로 다녀야 합니다. 코드를 모르는 좌표는 해석 불가능한 암호일 뿐이에요.

돌이켜보면 이 시리즈가 겪은 사고들 — 좌표 순서가 바뀌어 바다로 가고, 측지계가 어긋나 300m 밀린 일 — 은 전부 "이 좌표의 꼬리표가 무엇인지"를 안 맞춰서 생긴 일이었습니다. EPSG 코드는 그 꼬리표에 붙인 이름표예요.

정리 — 한 문장으로

EPSG 코드는 좌표계의 주민등록번호다. 좌표값은 EPSG 코드와 짝을 이룰 때만 비로소 '어디'를 가리킨다.

기억할 것한 줄
EPSG 코드측지계+투영+단위를 묶은 좌표계의 고유 번호
4326WGS84 위경도(도) — GPS·GeoJSON의 기본
3857웹 메르카토르(m) — 글로벌 웹 타일
5179 / 5186한국 평면(m) — 네이버 / 공공·지적
한국이 많은 이유측지계 전환 + TM 띠 셋 + 업체 제각각

이제 좌표계마다 번호가 있다는 걸 알았으니, 자연스러운 다음 질문은 이것입니다. 그러면 5179로 받은 데이터를 4326으로 어떻게 바꾸지? 다음 글에서는 그 좌표 변환 — proj4ST_Transform의 세계, 그리고 거기서 사람들이 가장 자주 빠지는 변환의 함정을 다룹니다.

참고