국내 공간데이터를 받으면 .prj가 없거나 명세에 “TM 좌표”라고만 적혀 있는 경우가 많습니다. X=198056, Y=551885 같은 숫자만 남습니다.
이때 좌표계를 잘못 잡으면 오류가 나지 않습니다. 점이 조용히 엉뚱한 곳에 찍힙니다. 100km 떨어진 곳일 수도, 정확히 100m 어긋난 곳일 수도 있습니다. 후자가 더 위험합니다.
자릿수로 먼저 좁힌다
국내에서 실제로 쓰이는 좌표계는 몇 개 안 됩니다. Y값의 자릿수만 봐도 후보가 하나둘로 줄어듭니다.
| Y값 범위 | 후보 | X값 참고 |
|---|---|---|
| 380만 ~ 460만 | UTM 51N/52N (EPSG:32651/32652) | 20만 ~ 60만 |
| 190만 ~ 210만 | UTM-K (EPSG:5179) | 90만 ~ 120만 |
| 40만 ~ 60만 | 중부·서부·동부 원점 계열 | 0 ~ 60만 |
Y가 백만 단위인데 200만 근처면 5179, 400만 근처면 UTM입니다. 십만 단위면 원점 계열입니다.
5174와 5186을 가르는 10만
원점 계열 안에서 가장 자주 헷갈리는 둘입니다. X는 거의 같고 Y만 정확히 100,000 다릅니다.
| 지점 | EPSG:5174 (구 중부) | EPSG:5186 (중부 2010) |
|---|---|---|
| 서울시청 | 197,801 / 451,890 | 198,056 / 551,885 |
| 부산시청 | 388,791 / 189,021 | 389,077 / 288,994 |
| 목포시청 | 144,130 / 146,424 | 144,388 / 246,385 |
가산 북거(false northing)가 500,000과 600,000으로 다르기 때문입니다. X 차이 200~300m는 타원체가 다른 데서 옵니다 — 5174는 Bessel 1841, 5186은 GRS80입니다.
- Y가 X보다 크고 40만~60만대 → 5186 계열(2010)
- Y가 X와 비슷하거나 작고 10만~45만대 → 5174 계열(구)
- 서울 부근인데 Y가 45만 근처면 5174, 55만 근처면 5186
띠를 잘못 잡았는지 보는 법
중부·서부·동부는 중앙자오선만 다릅니다(125°·127°·129°). 가산 동거가 전부 200,000이므로 X가 200,000에서 너무 멀면 그 띠가 아닙니다.
| 중앙자오선 | 서울시청 X | |
|---|---|---|
| 서부 (EPSG:5185) | 125° | 374,759 |
| 중부 (EPSG:5186) | 127° | 198,056 |
| 동부 (EPSG:5187) | 129° | 21,353 |
X가 음수이거나 40만을 넘으면 거의 확실히 띠를 잘못 잡은 것입니다. 국내 어느 지점도 자기 띠 안에서는 대략 5만~35만 사이에 들어옵니다.
역변환으로 확정하는 점검 절차
자릿수는 후보를 좁힐 뿐입니다. 확정은 역변환해서 한반도 안에 떨어지는지 보면 됩니다.
- 후보 좌표계로 X, Y를 위경도로 역변환한다
- 위도 33
39, 경도 124132 밖으로 나가면 그 후보는 탈락 - 남은 후보가 하나면 확정. 둘 이상이면 알고 있는 지점을 하나 넣어 본다
from pyproj import Transformer
CANDIDATES = {5179: "UTM-K", 5186: "중부 2010", 5174: "구 중부", 32652: "UTM 52N"}
x, y = 198056, 551885 # 좌표계를 모르는 값
for epsg, label in CANDIDATES.items():
lon, lat = Transformer.from_crs(epsg, 4326, always_xy=True).transform(x, y)
inside = 33 <= lat <= 39 and 124 <= lon <= 132
print(f"{epsg:>5} {label:<8} {lat:8.4f}, {lon:9.4f} {'← 한반도' if inside else ''}")always_xy=True를 빼면 축 순서가 뒤집혀 결과가 달라집니다. EPSG 정의의 축 순서와 우리가 쓰는 (x, y) 순서가 다른 좌표계가 있기 때문입니다.
위경도 좌표 변환기에서 위경도를 5179·5186으로 바꿔 볼 수 있습니다. 데이터에 시청·역 같은 아는 지점이 하나라도 있으면, 그 지점의 위경도를 각 좌표계로 변환해 받은 값과 맞춰 보는 것이 가장 빠릅니다.
판정 기준은 이렇습니다.
- 역변환 결과가 바다나 중국에 찍히면 좌표계가 틀린 것입니다
- 100~400m 정도만 어긋나면 좌표계 계열은 맞고 측지계(datum)가 다른 것입니다. 5174 ↔ 5186을 의심하세요
- 정확히 100,000 차이나면 가산값만 다른 것입니다
- X와 Y를 바꿔 넣었는지도 확인하세요. 원점 계열은 둘 다 십만 단위라 뒤집혀도 그럴듯해 보입니다
5174를 다룰 때 주의할 것
5174는 Bessel 1841 타원체에 Tokyo 측지계입니다. GRS80 기반인 5186 계열로 바꾸려면 측지계 변환이 필요하고, 그 차이가 지역에 따라 300~400m입니다.
가산값 100,000만 더하거나 빼서 맞추면 숫자는 그럴듯해지지만 수백 미터가 틀린 채로 남습니다. 지적도나 도로 중심선처럼 정밀도가 필요한 데이터에서는 이 차이가 실무 오류가 됩니다. 변환 라이브러리에 EPSG 코드를 그대로 넘겨 처리하세요.
이 방법이 통하지 않는 경우
- 국외 데이터에는 적용되지 않습니다. 위 표는 전부 한반도 범위를 전제합니다
- 좌표가 **미터가 아니라 도(degree)**일 수 있습니다. 값이 124
132, 3339 범위면 이미 위경도입니다 - 지자체가 자체 원점을 쓰는 경우가 드물게 있습니다. 위 후보 전부가 탈락하면 데이터 제공처에 물어야 합니다
- 자릿수 판별은 한반도 안에서만 성립합니다. 제주 남단이나 독도처럼 가장자리는 범위를 다시 확인하세요
좌표계 정의 원문은 EPSG Geodetic Parameter Registry에서 코드로 조회할 수 있습니다. 투영 파라미터의 의미는 PROJ 문서의 Transverse Mercator 항목에 정리돼 있습니다.