WGS84 vs KATEC Coordinate Conversion Guide — Korean Plane Coordinate Systems
Convert KATEC, TM, UTM-K — Korean plane coordinate systems used in cadastral surveys, real estate, and Kakao Maps — to WGS84 (GPS) latitude/longitude. Bessel 1841/GRS80 ellipsoid, EPSG codes, proj4 code, real coordinate examples.
🗺️ "The survey drawing shows X 200000, Y 500000 — where is that?"
"The Kakao Maps SDK returns KATEC coordinates — how do I convert to GPS?"
"Korean real estate registry coordinates differ from WGS84 by 70m — is that normal?"
When working with Korean coordinates, you'll inevitably meet TM, KATEC, UTM-K plane coordinates alongside GPS (WGS84) latitude/longitude. This guide covers the Korean plane coordinate systems, their differences from WGS84, conversion formulas, and working code. The main converter also performs coordinate-system correction when searching with English addresses.
🌐 Four Coordinate Systems You'll Meet in Korea
| System | Unit | Ellipsoid | Main Use | EPSG |
|---|---|---|---|---|
| WGS84 | Lat·Lng (degrees) | WGS84 | GPS, Google Maps, global standard | 4326 |
| TM (Central Origin) | X·Y (meters) | Bessel 1841 (old) / GRS80 (new) | Korean cadastral surveys | 5174 / 5186 |
| KATEC | X·Y (meters) | Bessel 1841 | LBS legacy, some Kakao SDK | TM variant |
| UTM-K | X·Y (meters) | GRS80 | Naver Maps, NGII standard | 5179 |
Key: WGS84 says "where on Earth" in degrees. TM/KATEC/UTM-K say "where on Korea's flat map" in meters. Different units, ellipsoids, and origins.
📐 What is KATEC?
Definition
KATEC (KATEC TM) was a Korean LBS (Location-Based Service) coordinate system standardized in the 1990s. SK Telecom started it, and the Kakao Maps SDK once used it internally.
Core parameters
- Ellipsoid: Bessel 1841 (Korea's traditional cadastral ellipsoid)
- Projection: Transverse Mercator (TM)
- Central origin: 38° N, 128° E
- False Easting / Northing: 400,000 / 600,000 m
- Scale Factor: 0.9999
Difference from other TM systems
- TM Central Origin (EPSG:5174): Korean cadastral standard, origin lon 127°
- UTM-K (EPSG:5179): NGII recommended, origin lon 127.5°, GRS80 ellipsoid
- KATEC: origin lon 128° (1° east of TM)
→ KATEC, TM, UTM-K have different origin longitudes and ellipsoids — same location, different coordinate values.
🔢 Why Simple Multiplication Doesn't Work
Conversion steps (KATEC → WGS84)
1. KATEC X, Y (Bessel 1841 plane)
↓ TM inverse projection (inverse trig + series expansion)
2. Lat·Lng on Bessel 1841 ellipsoid
↓ Datum transformation (Bessel → WGS84)
3. Lat·Lng on WGS84 ellipsoid
The key is step 2: Bessel 1841 and WGS84 model the Earth differently, so we need rotation, scale, and translation — known as the 7-parameter Helmert transformation.
Bessel 1841 ↔ WGS84 (Korean official 7-parameter)
ΔX = -145.907 m
ΔY = 505.034 m
ΔZ = 685.756 m
Rx = -1.162" (rotation)
Ry = 2.347"
Rz = 1.592"
Scale = 6.342 ppm
These values are published by NGII (National Geographic Information Institute of Korea). Libraries have them built-in — you'll rarely compute manually.
🛠 Real Coordinate Conversion Examples
Seoul City Hall
| System | X (or lon) | Y (or lat) |
|---|---|---|
| WGS84 (GPS) | 126.978275 | 37.566535 |
| TM Central (EPSG:5174) | 198,236 | 451,544 |
| UTM-K (EPSG:5179) | 953,950 | 1,952,500 |
| KATEC | 313,041 | 552,007 |
Gangnam Station
| System | X (or lon) | Y (or lat) |
|---|---|---|
| WGS84 (GPS) | 127.027619 | 37.497952 |
| TM Central | 202,608 | 443,902 |
| UTM-K | 958,222 | 1,944,887 |
| KATEC | 317,393 | 544,381 |
Same location = same GPS, but plane coordinates differ across systems. Always check the coordinate-system label before comparing.
💻 Conversion Code
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",
always_xy=True
)
lon, lat = katec_to_wgs84.transform(313041, 552007)
# → 126.978275, 37.566535 (Seoul City Hall)
# 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';
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'
);
const [lon, lat] = proj4('KATEC', 'WGS84', [313041, 552007]);
// → [126.978275, 37.566535]
Online tools
- NGII Coordinate Conversion — Official Korean
- EPSG.io — Any EPSG code
🗺 Kakao Maps and KATEC
The Kakao Maps JS SDK defaults to WGS84 (lat/lng):
const map = new kakao.maps.Map(container, {
center: new kakao.maps.LatLng(37.566535, 126.978275), // WGS84
level: 3
});
Some legacy APIs and real estate/survey data may return KATEC/TM. Use the conversion code above. For a detailed comparison of Kakao vs Google coordinate differences, see Kakao vs Google Maps coordinate differences.
⚠ Conversion Pitfalls
1. Missing datum = 70m error
If you only have KATEC/TM coordinates and skip the towgs84 parameter, the result is off by ~70m due to the Bessel↔WGS84 ellipsoid difference.
2. Old KATEC vs current TM
Pre-2000s KATEC uses Bessel, post-2010 surveys are standardizing on GRS80-based UTM-K. Always check the source year.
3. Coordinate order (X, Y) vs (lon, lat)
- TM/KATEC/UTM-K:
X, Y(X=east, Y=north) - WGS84:
(lon, lat)or(lat, lon)— varies by library - Use pyproj's
always_xy=Trueto unify
💬 Frequently Asked Questions
Q. What's the difference between KATEC and TM?
A. Both use Bessel 1841 + TM projection, but origin longitudes differ. TM Central origin is 127° E, KATEC is 128° E. Same location → X coordinate differs by ~89km.
Q. What coordinate system do Korean real estate registries use?
A. Mostly TM Central Origin (EPSG:5174), Bessel 1841 based. Post-2010 new surveys are migrating to EPSG:5186 (GRS80 based).
Q. How do I display KATEC coordinates received from Kakao Maps SDK?
A. Convert to WGS84 with proj4js, then use kakao.maps.LatLng(lat, lon). You can't display KATEC directly as a marker.
Q. How accurate is the conversion?
A. Korean official 7-parameter Helmert transformation: horizontal ±1m. More precise than GPS positioning (±3-5m), sufficient for practical use.
Q. UTM and UTM-K — are they the same?
A. Different. UTM is a global standard (60 zones), UTM-K is Korea-specific single-zone (EPSG:5179). For Korean data, always use UTM-K.
Q. Can I convert without knowing the EPSG code?
A. Yes. Supply the proj4 string directly (+proj=tmerc ...). EPSG codes are just shortcuts for common systems.
📝 Summary
- WGS84 = GPS standard (lat/lng, degrees, global)
- TM/KATEC/UTM-K = Korean plane (X·Y, meters, TM projection)
- All three plane systems have different origins and ellipsoids — coordinate values differ
- Conversion is one-liner with
pyproj(Python) /proj4js(JS) - Missing the
towgs84datum parameter causes 70m error — always specify
FindLatLng main converts Korean addresses directly to WGS84. For Korean plane coordinates, use the code above for one extra step.
📚 References
- NGII Coordinate Conversion — Official
- EPSG.io — Coordinate system database
- proj4js — JS conversion library
- pyproj docs — Python conversion
- WGS84 Complete Guide — Learn more about WGS84
- Kakao vs Google Maps coordinate differences