EPSG Code Reference
Free reference guide: EPSG Code Reference
About EPSG Code Reference
The EPSG Code Reference is a comprehensive, searchable guide to coordinate reference systems (CRS) used in GIS, surveying, and web mapping. It covers global CRS including EPSG:4326 (WGS 84 for GPS and GeoJSON), EPSG:3857 (Web Mercator for Google Maps, OpenStreetMap, Mapbox), and EPSG:4269 (NAD83 for North America), with complete Proj4 definition strings, unit specifications, and practical usage notes for each system.
The reference includes detailed coverage of UTM zones with the calculation formula (Zone = floor((longitude + 180) / 6) + 1), Korean coordinate systems from the legacy Bessel-based EPSG:2097 to the modern Korea 2000 series (EPSG:5179 unified, EPSG:5185 west belt, EPSG:5186 central belt, EPSG:5187 east belt, EPSG:5188 East Sea belt) with Bessel-to-GRS80 transformation parameters, and national CRS for France (Lambert-93), Germany (ETRS89/UTM), UK (British National Grid), Japan (JGD2011), and China (CGCS2000 with GCJ-02 offset notes).
Practical conversion examples demonstrate coordinate transformation using JavaScript proj4js (WGS84 to Korean TM and reverse), Python pyproj with the Transformer class, QGIS CRS setup with on-the-fly reprojection, GeoJSON coordinate rules (RFC 7946 requiring EPSG:4326 with [longitude, latitude] order), and web mapping library patterns for Leaflet and OpenLayers including custom CRS registration. This makes the reference valuable for GIS analysts, web developers building map applications, and surveyors working with Korean national coordinate systems.
Key Features
- Global CRS reference: EPSG:4326 (WGS84), EPSG:3857 (Web Mercator), EPSG:4269 (NAD83) with Proj4 strings
- UTM zone lookup with calculation formula and EPSG code mapping for zones 1N-60N
- Complete Korean CRS coverage: EPSG:5179 unified, 5185-5188 belt systems, and 2097 legacy with Bessel parameters
- National CRS for France (Lambert-93), Germany (ETRS89), UK (BNG), Japan (JGD2011), and China (CGCS2000)
- JavaScript proj4js code examples for WGS84-to-TM and TM-to-WGS84 coordinate conversion
- Python pyproj Transformer examples for forward and inverse coordinate transformation
- QGIS CRS setup guide with on-the-fly reprojection and custom CRS configuration
- GeoJSON RFC 7946 rules and Leaflet/OpenLayers CRS integration patterns
Frequently Asked Questions
What is the difference between EPSG:4326 and EPSG:3857?
EPSG:4326 (WGS 84) is a geographic coordinate system using latitude and longitude in degrees, used by GPS devices and as the required CRS for GeoJSON (RFC 7946). EPSG:3857 (Web Mercator) is a projected coordinate system in meters, used by web mapping services like Google Maps, OpenStreetMap, and Mapbox. Web maps typically accept coordinates in 4326 but internally project them to 3857 for display. The Web Mercator projection cannot represent areas beyond approximately 85.06 degrees latitude.
Which EPSG code should I use for Korean coordinates?
For modern projects, use the Korea 2000 series based on GRS80: EPSG:5179 (unified, single CRS for all of Korea), EPSG:5185 (west belt, Jeolla/Incheon), EPSG:5186 (central belt, Seoul/Gyeonggi/Chungcheong), EPSG:5187 (east belt, Gyeongsang/eastern Gangwon), or EPSG:5188 (East Sea belt, Ulleungdo/Dokdo). Avoid the legacy EPSG:2097 (Bessel 1841 ellipsoid) for new work and migrate existing data using the Bessel-to-GRS80 parameters: dx=+115.80, dy=-474.99, dz=-674.11.
How do I calculate the UTM zone number from longitude?
Use the formula: Zone = floor((longitude + 180) / 6) + 1. For example, Seoul at 126.98 degrees east gives (126.98 + 180) / 6 + 1 = Zone 52. For the hemisphere, latitude >= 0 is N (North), < 0 is S (South). EPSG codes follow the pattern 326xx for northern hemisphere (e.g., EPSG:32652 for UTM Zone 52N) and 327xx for southern hemisphere.
How do I convert WGS84 coordinates to Korean TM using JavaScript?
Use proj4js: import proj4 and define the target CRS with proj4.defs("EPSG:5186", "+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=600000 +ellps=GRS80 +units=m +no_defs"). Then convert with const [x, y] = proj4("EPSG:4326", "EPSG:5186", [126.978, 37.5665]) where input is [longitude, latitude]. For reverse conversion, swap the source and target CRS arguments.
What are the GeoJSON coordinate rules?
Per RFC 7946, GeoJSON must use EPSG:4326 (WGS 84) with coordinate order [longitude, latitude], not [latitude, longitude]. Altitude can optionally be included as a third value: [longitude, latitude, altitude]. The CRS is fixed and cannot be specified differently, unlike older GeoJSON versions. This is a common source of bugs when converting from systems that use latitude-first ordering.
How do I set up custom CRS in Leaflet or OpenLayers?
Leaflet defaults to EPSG:3857 and accepts setView coordinates as [latitude, longitude]. For OpenLayers, use fromLonLat([longitude, latitude]) to convert from WGS84 to Web Mercator. For custom CRS like Korean TM, both libraries integrate with proj4js: define the CRS with proj4.defs(), register it (OpenLayers: register(proj4)), then reference it in your map configuration.
What is the Bessel-to-GRS80 transformation for Korean legacy coordinates?
To convert from the legacy Korean 1985 system (EPSG:2097, Bessel 1841 ellipsoid) to Korea 2000 (GRS80), apply the 7-parameter Helmert transformation: dx=+115.80, dy=-474.99, dz=-674.11, rx=+1.16, ry=-2.31, rz=-1.63, scale=-6.43. Note that the false northing also changes from 500,000m (2097) to 600,000m (5186). Migration to the modern coordinate system is recommended for all new projects.
Does this EPSG reference include Proj4 strings for all coordinate systems?
Yes, every coordinate system entry includes the complete Proj4 definition string that can be directly used with proj4js (JavaScript), pyproj (Python), GDAL, PostGIS, and other geospatial tools. The reference covers 26+ coordinate systems across five categories (global, UTM, Korean, national, and conversion examples) with full Proj4 parameters, ellipsoid specifications, and false origin values.