WGS84 vs KATEC 좌표 변환 가이드 — 한국 평면좌표계의 모든 것
한국 측량·부동산·카카오 지도에서 자주 등장하는 KATEC, TM, UTM-K 좌표를 WGS84(GPS) 위경도로 변환하는 방법. Bessel 1841/GRS80 타원체, EPSG 코드, proj4 변환 코드, 실제 좌표 예시까지.
🗺️ "측량 도면에 X 200000, Y 500000이라고 적혀 있는데 이게 어디지?"
"카카오 지도 SDK가 KATEC 좌표를 주는데 GPS 좌표로 어떻게 바꾸지?"
"부동산 등기부 좌표가 WGS84랑 70m나 차이 나는데 정상인가?"
한국에서 좌표를 다루다 보면 GPS(WGS84) 위경도 외에도 TM, KATEC, UTM-K 같은 평면좌표를 마주칩니다. 이 글은 한국에서 쓰이는 평면좌표계의 종류, WGS84와의 차이, 변환 공식, 그리고 실제 변환 코드까지 한 번에 정리합니다. 위경도 변환 도구에서도 영문 주소 검색 시 좌표계 보정이 일어납니다.
🌐 한국에서 마주치는 좌표계 4가지
| 좌표계 | 단위 | 타원체 | 주 사용처 | EPSG |
|---|---|---|---|---|
| WGS84 | 위도·경도 (도) | WGS84 | GPS, 구글 지도, 글로벌 표준 | 4326 |
| TM (중부원점) | X·Y (미터) | Bessel 1841 (구) / GRS80 (신) | 한국 측량 도면, 지적도 | 5174 / 5186 |
| KATEC | X·Y (미터) | Bessel 1841 | LBS, 일부 카카오 SDK legacy | 변형 TM |
| UTM-K | X·Y (미터) | GRS80 | 국토지리정보원 표준, 네이버 지도 | 5179 |
핵심: WGS84는 "지구상 어디인가"를 도(degrees) 단위로 표시. TM/KATEC/UTM-K는 "한국 평면지도 위에서 어디인가"를 미터(m) 단위로 표시. 둘은 단위도, 타원체도, 원점도 다릅니다.
📐 KATEC 좌표계란?
정의
KATEC (KATEC TM)은 1990년대 한국 LBS(Location-Based Service) 산업에서 표준화된 평면좌표계입니다. SK텔레콤이 시작했고, 한때 카카오 지도 SDK도 내부적으로 사용했습니다.
핵심 파라미터
- 타원체: Bessel 1841 (한국 지적측량의 전통 타원체)
- 투영법: Transverse Mercator (TM, 횡축 메르카토르)
- 중부원점: 위도 38° N, 경도 128° E
- False Easting / Northing: 400,000 / 600,000 m
- Scale Factor: 0.9999
다른 TM 계열과 차이
- TM 중부원점 (EPSG:5174): 한국 지적도 표준. 원점 위도 38°, 경도 127°
- UTM-K (EPSG:5179): 국토지리정보원 권장. 원점 위도 38°, 경도 127.5°, GRS80 타원체
- KATEC: 원점 경도 128° (서쪽으로 1°)
→ KATEC, TM, UTM-K는 각각 원점 경도와 타원체가 달라서 같은 위치라도 좌표값이 다릅니다.
🔢 변환 공식 — 왜 단순 곱셈으로 안 되나
변환 단계 (KATEC → WGS84)
1. KATEC X, Y (Bessel 1841 평면)
↓ TM 역투영 (역삼각함수 + 급수 전개)
2. Bessel 1841 타원체 위 위도·경도
↓ Datum 변환 (Bessel → WGS84)
3. WGS84 타원체 위 위도·경도
핵심은 2단계: Bessel 1841과 WGS84는 지구를 다른 모양으로 모델링하므로 단순 좌표 이동(translation)뿐 아니라 회전·스케일 보정이 필요합니다. 이걸 7-parameter Helmert 변환이라고 합니다.
Bessel 1841 ↔ WGS84 (한국 표준 7-parameter)
ΔX = -145.907 m
ΔY = 505.034 m
ΔZ = 685.756 m
Rx = -1.162" (회전)
Ry = 2.347"
Rz = 1.592"
Scale = 6.342 ppm
이 파라미터는 국토지리정보원이 공식 공표한 값입니다. 라이브러리에 모두 내장되어 있으니 직접 계산할 일은 거의 없습니다.
🛠 실제 좌표 변환 예시
서울시청 본관
| 좌표계 | X (또는 경도) | Y (또는 위도) |
|---|---|---|
| WGS84 (GPS) | 126.978275 | 37.566535 |
| TM 중부원점 (EPSG:5174) | 198,236 | 451,544 |
| UTM-K (EPSG:5179) | 953,950 | 1,952,500 |
| KATEC | 313,041 | 552,007 |
강남역 2호선
| 좌표계 | X (또는 경도) | Y (또는 위도) |
|---|---|---|
| WGS84 (GPS) | 127.027619 | 37.497952 |
| TM 중부원점 | 202,608 | 443,902 |
| UTM-K | 958,222 | 1,944,887 |
| KATEC | 317,393 | 544,381 |
같은 위치 = 같은 GPS 좌표지만, 평면좌표는 좌표계마다 다릅니다. 등기부 좌표를 WGS84와 비교할 때 좌표계 표시를 반드시 확인하세요.
💻 코드로 변환하기
Python (pyproj 라이브러리)
from pyproj import Transformer
# KATEC → WGS84
katec_to_wgs84 = Transformer.from_crs(
"+proj=tmerc +lat_0=38 +lon_0=128 +k=0.9999 "
"+x_0=400000 +y_0=600000 +ellps=bessel "
"+towgs84=-145.907,505.034,685.756,-1.162,2.347,1.592,6.342",
"EPSG:4326", # WGS84
always_xy=True
)
lon, lat = katec_to_wgs84.transform(313041, 552007)
# → 126.978275, 37.566535 (서울시청)
# UTM-K → WGS84
utmk_to_wgs84 = Transformer.from_crs("EPSG:5179", "EPSG:4326", always_xy=True)
lon, lat = utmk_to_wgs84.transform(953950, 1952500)
JavaScript (proj4js)
import proj4 from 'proj4';
// KATEC 정의 (한 번만)
proj4.defs('KATEC',
'+proj=tmerc +lat_0=38 +lon_0=128 +k=0.9999 ' +
'+x_0=400000 +y_0=600000 +ellps=bessel ' +
'+towgs84=-145.907,505.034,685.756,-1.162,2.347,1.592,6.342'
);
// KATEC → WGS84
const [lon, lat] = proj4('KATEC', 'WGS84', [313041, 552007]);
// → [126.978275, 37.566535]
온라인 도구
- 국토지리정보원 좌표변환 서비스 — 공식
- EPSG.io — EPSG 코드별 변환
🗺 카카오 지도와 KATEC
카카오 지도 JS SDK는 기본적으로 WGS84 (위·경도) 를 사용합니다:
const map = new kakao.maps.Map(container, {
center: new kakao.maps.LatLng(37.566535, 126.978275), // WGS84
level: 3
});
다만 일부 legacy API와 부동산·측량 데이터는 KATEC/TM 좌표를 반환할 수 있습니다. 이때 위 변환 코드를 활용합니다. 카카오 ↔ 구글 지도 좌표 차이의 상세한 비교는 카카오 지도 vs 구글 지도 좌표 차이 글을 참고하세요.
⚠ 변환 시 주의사항
1. Datum 정보 누락 = 70m 오차
KATEC/TM 좌표만 받고 datum(towgs84 파라미터)을 명시 안 하면 변환 결과가 약 70m 어긋납니다. Bessel↔WGS84 타원체 차이 때문.
2. 옛 자료의 KATEC vs 현재 TM
2000년대 이전 자료의 KATEC은 Bessel 기반, 2010년 이후 측량은 GRS80 기반 UTM-K로 표준화. 출처 연도를 반드시 확인하세요.
3. 좌표 순서 (X, Y) ↔ (경도, 위도)
- TM/KATEC/UTM-K: 보통
X, Y순서 (X=동, Y=북) - WGS84:
(경도, 위도)또는(위도, 경도)— 라이브러리마다 다름 - pyproj
always_xy=True옵션으로 통일 권장
💬 자주 묻는 질문
Q. KATEC과 TM의 차이가 뭐예요?
A. 둘 다 Bessel 1841 + TM 투영법이지만 원점 경도가 다릅니다. TM 중부원점은 127° E, KATEC은 128° E. 같은 위치라도 X 좌표가 약 89km 차이.
Q. 부동산 등기부 좌표는 어떤 좌표계인가요?
A. 대부분 TM 중부원점 (EPSG:5174), Bessel 1841 기반. 2010년 이후 신규 측량은 EPSG:5186 (GRS80 기반)로 갱신 중.
Q. 카카오 지도 SDK에서 KATEC 좌표를 받았을 때 어떻게 표시하나요?
A. proj4js로 WGS84로 변환 후 kakao.maps.LatLng(lat, lon) 으로 생성. 직접 KATEC을 마커로 표시할 수는 없습니다.
Q. 변환 정확도는 얼마나 되나요?
A. 한국 표준 7-parameter Helmert 변환 기준 수평 ±1m 이내. GPS 측위 정확도(±3~5m)보다 정밀하므로 실용 목적은 충분합니다.
Q. UTM과 UTM-K는 같은가요?
A. 다릅니다. UTM은 글로벌 표준(60개 zone), UTM-K는 한국 전용 단일 zone(EPSG:5179). 한국 데이터에서는 UTM-K를 사용해야 정확.
Q. EPSG 코드를 모르면 변환 못하나요?
A. +proj=tmerc ... 같은 proj4 문자열을 직접 입력하면 변환 가능. EPSG는 자주 쓰이는 좌표계의 표준 번호일 뿐입니다.
📝 정리
- WGS84 = GPS 표준 (위경도, 도 단위, 글로벌)
- TM/KATEC/UTM-K = 한국 평면좌표 (X·Y, 미터, TM 투영법)
- 세 평면좌표는 원점과 타원체가 달라 좌표값이 모두 다름
- 변환은
pyproj(Python) /proj4js(JS) 라이브러리로 한 줄 - Datum(
towgs84파라미터) 누락 시 70m 오차 — 반드시 명시
FindLatLng 메인에서는 한국 주소를 WGS84로 즉시 변환합니다. 한국 평면좌표가 필요하면 위 코드로 한 단계 더 변환하세요.
📚 참고 자료
- 국토지리정보원 좌표 변환 서비스
- EPSG.io — 좌표계 코드 데이터베이스
- proj4js — JS 좌표 변환 라이브러리
- pyproj 문서 — Python 변환
- 위경도 완벽 이해 — WGS84 더 알아보기
- 카카오 지도 vs 구글 지도 좌표 차이 — 실제 차이 사례