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

SystemUnitEllipsoidMain UseEPSG
WGS84Lat·Lng (degrees)WGS84GPS, Google Maps, global standard4326
TM (Central Origin)X·Y (meters)Bessel 1841 (old) / GRS80 (new)Korean cadastral surveys5174 / 5186
KATECX·Y (meters)Bessel 1841LBS legacy, some Kakao SDKTM variant
UTM-KX·Y (meters)GRS80Naver Maps, NGII standard5179

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

SystemX (or lon)Y (or lat)
WGS84 (GPS)126.97827537.566535
TM Central (EPSG:5174)198,236451,544
UTM-K (EPSG:5179)953,9501,952,500
KATEC313,041552,007

Gangnam Station

SystemX (or lon)Y (or lat)
WGS84 (GPS)127.02761937.497952
TM Central202,608443,902
UTM-K958,2221,944,887
KATEC317,393544,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

🗺 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=True to 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 towgs84 datum 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