지도 API와 공공 데이터는 좌표계가 제각각입니다. 같은 지점인데 숫자가 달라 보이는 대부분의 경우는 좌표계가 다른 것이지 데이터가 틀린 게 아닙니다.
아래 변환기는 세 가지를 합니다.
- WGS84 ↔ DMS —
37.5665↔37° 33' 59.4". GPS 기기와 논문은 60진법을, API는 십진수를 씁니다. - WGS84 → UTM — 투영 좌표(Easting/Northing)와 존 판정. 한국은 51N·52N에 걸칩니다.
- WGS84 → EPSG:5179 / EPSG:5186 — 국내 공공데이터가 실제로 쓰는 좌표계입니다.
- 두 지점 직선거리 — Haversine 공식. 도보·차량 이동 시간도 함께 냅니다.
어느 좌표계를 쓸 것인가
| 상황 | 쓸 것 | 이유 |
|---|---|---|
| 지도에 점 찍기, API 주고받기 | WGS84 십진수 | 대부분의 지도 API 기본값 |
| 면적·거리를 미터로 계산 | UTM | 투영 좌표라 미터 단위 연산이 그대로 성립 |
| GPS 기기 입력, 논문 인용 | DMS | 관행이 그렇습니다 |
| 국내 공공 데이터 | 원본 명세 확인 필수 | EPSG:5179(UTM-K), 5186(중부원점) 등이 섞여 있습니다 |
EPSG:5179와 5186이 헷갈리는 이유
둘 다 GRS80 타원체에 횡단 메르카토르인데 원점이 다릅니다.
| 중앙자오선 | 축척계수 | 가산값(X, Y) | |
|---|---|---|---|
| EPSG:5179 (UTM-K) | 127.5° | 0.9996 | 1,000,000 / 2,000,000 |
| EPSG:5186 (중부원점) | 127° | 1.0 | 200,000 / 600,000 |
서울시청(37.5665, 126.9780)을 넣으면 5179는 약 953,901 / 1,952,032, 5186은 약 198,056 / 551,885가 나옵니다. 자릿수만 봐도 구분됩니다 — 받은 좌표가 백만 단위면 5179, 십만 단위면 5186 쪽입니다. 둘을 바꿔 쓰면 점이 수백 km 떨어진 곳에 찍힙니다.
V-World, 도로명주소 API, 지자체 공간정보가 주로 이 둘로 나옵니다.
UTM 존 경계를 넘는 계산은 하지 마세요. 한국은 동경 126도를 기준으로 51N과 52N이 갈립니다. 서울(52N)과 목포(51N)의 Easting을 그냥 빼면 수백 km가 틀립니다. 존이 다르면 WGS84로 되돌린 뒤 Haversine으로 재세요.
Haversine 거리의 한계
- 지구를 완전한 구로 가정합니다. 실제는 타원체라 장거리에서 0.3~0.5% 오차가 납니다. 정밀도가 필요하면 Vincenty나 GeographicLib를 쓰세요.
- 직선거리입니다. 도로 경로가 아닙니다. 이동 시간은 어림값으로만 보세요.
- 고도 차이를 반영하지 않습니다. 산악 지형에서는 실제 이동 거리가 더 깁니다.
이어서 볼 것
- 공간정보 API 연결 전 점검할 5가지 — 좌표계·키·쿼터·품질·라이선스
- 지도 타일 캐싱 설계 — 키·버전·무효화·측정 기준
좌표계 코드는 EPSG Geodetic Parameter Registry에서 확인할 수 있습니다.