Grid Systems

This module covers the Universal Transverse Mercator (UTM) and Military Grid Reference System (MGRS) to the level required by NATO STANAG 2211 and US Army FM 3-25.26. Master the mathematics of coordinate projection, scale factor computation, and 10-digit grid precision.

Why Grid Systems?

Geographic coordinates (latitude/longitude) have problems for field use:

Problem Impact

Curved coordinates

Distance calculation requires spherical trig

Variable scale

1° longitude = 111km at equator, 0km at poles

Hemispheres/signs

Easy to confuse N/S, E/W, positive/negative

Precision verbosity

"33°45'29.88"N, 117°52'06.00"W" is long to read/write

Grid systems project Earth onto a flat surface, giving:

  • Constant scale (1 grid unit = same meters everywhere in zone)

  • X/Y coordinates like a standard graph

  • No hemisphere confusion (all positive numbers)

  • Compact notation

Universal Transverse Mercator (UTM)

Overview

UTM divides Earth into 60 zones, each 6° wide in longitude.

UTM Zone Layout
Zone 1:  180°W - 174°W
Zone 2:  174°W - 168°W
...
Zone 10: 126°W - 120°W   ← Western US
Zone 11: 120°W - 114°W   ← California (mostly)
Zone 12: 114°W - 108°W   ← Arizona, New Mexico
...
Zone 30: 6°W - 0°        ← UK, Portugal
Zone 31: 0° - 6°E        ← France, Spain
...
Zone 60: 174°E - 180°E

Determining UTM Zone

Zone Calculation Formula
\[\text{Zone} = \lfloor \frac{\text{Longitude} + 180}{6} \rfloor + 1\]
Examples
# Los Angeles: 118.4°W = -118.4
Zone = floor((-118.4 + 180) / 6) + 1
Zone = floor(61.6 / 6) + 1
Zone = 10 + 1 = 11

# London: 0.1°W = -0.1
Zone = floor((-0.1 + 180) / 6) + 1
Zone = floor(179.9 / 6) + 1
Zone = 29 + 1 = 30

UTM Coordinates

Each zone has its own coordinate system:

Component Description

Easting

Distance in meters from zone’s central meridian + 500,000m (false easting)

Northing

Distance in meters from equator (Southern Hemisphere adds 10,000,000m)

Zone

The zone number (1-60)

Band

Latitude band letter (C-X, excluding I and O)

UTM Coordinate Example
Los Angeles International Airport:
Zone:     11S
Easting:  368,916 m E
Northing: 3,757,142 m N

Written as: 11S 368916mE 3757142mN

False Easting and Northing

To avoid negative numbers:

  • False Easting = 500,000m: Central meridian of each zone is assigned 500,000mE

  • False Northing = 10,000,000m: Added in Southern Hemisphere

Why 500,000m?
UTM zones are 6° wide ≈ 668km at equator
Half width ≈ 334km
500,000m buffer ensures all eastings are positive

UTM Zone Exceptions

Several areas have non-standard zone boundaries:

Location Modification Reason

Norway (Zone 32)

Extended west to 3°E (from 6°E)

Better coverage of Norwegian coastline

Svalbard

Zones 31, 33, 35, 37 only (32, 34, 36 omitted)

Minimize distortion in Arctic

Atlantic (Zone 31)

Narrowed to accommodate Zone 32 extension

Compensates for Norway change

UTM Projection Mathematics

The Transverse Mercator projection mathematics used for UTM:

Central Scale Factor

UTM uses a scale factor at the central meridian:

\[k_0 = 0.9996\]

This reduces maximum distortion at zone edges from ~2.5‰ to ~1‰.

Point Scale Factor

At any location, the scale factor is:

\[k = k_0 \left(1 + \frac{x^2}{2R^2} + \frac{x^4}{24R^4}\right)\]

Where: * \(k_0\) = 0.9996 (central meridian scale) * \(x\) = distance from central meridian (after removing false easting) * \(R\) = radius of curvature

More precisely using ellipsoidal mathematics:

\[k = k_0 \sqrt{1 + \eta^2 \cos^2\phi} \cdot \left(1 + \frac{t^2 k_0^2 x^2}{2N^2}\right)\]

Where: * \(\eta^2 = e'^2 \cos^2\phi\) * \(t = \tan\phi\) * \(N\) = radius of curvature in prime vertical

Lines of Zero Distortion

Scale factor equals exactly 1.0 along two lines parallel to the central meridian:

\[x \approx \pm 180,000 \text{ m}\]

Approximately 180 km east and west of the central meridian.

Practical Scale Factor Values

Location Scale Factor Distortion

Central meridian

0.9996

4 cm / 100 m (short by 4 cm)

180 km from CM

1.0000

No distortion

Zone edge (~333 km from CM)

1.0010

1 mm / meter (long by 1 mm)

Grid-to-Ground Distance Conversion

When measuring on the ground but working with grid coordinates:

\[D_{\text{ground}} = \frac{D_{\text{grid}}}{k}\]
Example: Surveying Correction

Grid distance measured: 1000.00 m

Scale factor at location: 1.0005

Ground distance: \(\frac{1000.00}{1.0005} = 999.50\) m

The ground distance is 50 cm shorter than the grid distance.

Transverse Mercator Formulas

Latitude/Longitude to Easting/Northing:

\[x = k_0 N \left[A + \frac{(1-T+C)A^3}{6} + \frac{(5-18T+T^2+72C-58e'^2)A^5}{120}\right]\]
\[y = k_0 \left[M - M_0 + N\tan\phi\left(\frac{A^2}{2} + \frac{(5-T+9C+4C^2)A^4}{24} + \frac{(61-58T+T^2+600C-330e'^2)A^6}{720}\right)\right]\]

Where: * \(N = \frac{a}{\sqrt{1-e^2\sin^2\phi}}\) (radius of curvature in prime vertical) * \(T = \tan^2\phi\) * \(C = e'^2\cos^2\phi\) * \(A = (\lambda - \lambda_0)\cos\phi\) * \(M\) = true distance along central meridian from equator to latitude \(\phi\) * \(e'^2 = \frac{e^2}{1-e^2}\) (second eccentricity squared)

Easting/Northing to Latitude/Longitude:

\[\phi = \phi_1 - \frac{N_1\tan\phi_1}{R_1}\left[\frac{D^2}{2} - \frac{(5+3T_1+10C_1-4C_1^2-9e'^2)D^4}{24} + ...\right]\]
\[\lambda = \lambda_0 + \frac{1}{\cos\phi_1}\left[D - \frac{(1+2T_1+C_1)D^3}{6} + \frac{(5-2C_1+28T_1-3C_1^2+8e'^2+24T_1^2)D^5}{120}\right]\]

Military Grid Reference System (MGRS)

MGRS is a geocoordinate standard used by NATO militaries. It’s based on UTM but adds a hierarchical grid square system for compact notation.

MGRS Structure

  11S  LA  12345  67890
  ───  ──  ─────  ─────
   │   │    │       │
   │   │    │       └── Northing (5 digits = 1m precision)
   │   │    │
   │   │    └── Easting (5 digits = 1m precision)
   │   │
   │   └── 100,000m Grid Square Identifier (GZD)
   │
   └── Grid Zone Designation (UTM Zone + Band)

Grid Zone Designation (GZD)

Combines UTM zone number with latitude band letter:

Latitude Bands
Band C: 80°S - 72°S
Band D: 72°S - 64°S
...
Band N: 0° - 8°N
Band P: 8°N - 16°N
...
Band S: 32°N - 40°N      ← Southern California
Band T: 40°N - 48°N      ← Northern US
...
Band X: 72°N - 84°N      (12° tall, exception)

Letters I and O are omitted (look like 1 and 0).

100km Grid Square Identifier

Each 100km × 100km square within a GZD has a two-letter identifier:

  • First letter: Column (easting) - cycles A-Z (excluding I and O)

  • Second letter: Row (northing) - cycles A-V (excluding I and O)

Column Letter Derivation (Easting)

The column (easting) letter depends on the UTM zone number:

\[\text{Set} = ((Z - 1) \mod 3) + 1\]
Set Zones Starting Letter

Set 1

1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34, 37, 40, 43, 46, 49, 52, 55, 58

A (column 1 = easting 100,000-199,999)

Set 2

2, 5, 8, 11, 14, 17, 20, 23, 26, 29, 32, 35, 38, 41, 44, 47, 50, 53, 56, 59

J (column 1 = easting 100,000-199,999)

Set 3

3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60

S (column 1 = easting 100,000-199,999)

Column letter calculation:

\[\text{Column Index} = \lfloor \frac{E}{100000} \rfloor\]

Where \(E\) is the easting (1-8, since valid range is 100,000-899,999).

# Python implementation
def get_column_letter(zone, easting):
    """Get MGRS column letter for given zone and easting."""
    set_num = ((zone - 1) % 3)  # 0, 1, or 2
    base_letters = ['A', 'J', 'S']  # Starting letter for each set
    base = ord(base_letters[set_num])

    col_index = int(easting / 100000) - 1  # 0-7 for eastings 100k-799k
    letter_num = base + col_index

    # Skip I and O
    if letter_num >= ord('I'):
        letter_num += 1
    if letter_num >= ord('O'):
        letter_num += 1

    return chr(letter_num)

Row Letter Derivation (Northing)

Row letters cycle through A-V (excluding I and O = 20 letters), repeating every 2,000,000 meters.

Odd zones use the sequence: A, B, C, D, E, F, G, H, J, K, L, M, N, P, Q, R, S, T, U, V

Even zones use the sequence: F, G, H, J, K, L, M, N, P, Q, R, S, T, U, V, A, B, C, D, E

\[\text{Row Index} = \lfloor \frac{N \mod 2000000}{100000} \rfloor\]

Where \(N\) is the northing.

def get_row_letter(zone, northing):
    """Get MGRS row letter for given zone and northing."""
    odd_letters = 'ABCDEFGHJKLMNPQRSTUV'   # 20 letters (no I, O)
    even_letters = 'FGHJKLMNPQRSTUVABCDE'  # Offset by 5

    row_index = int((northing % 2000000) / 100000)

    if zone % 2 == 1:  # Odd zone
        return odd_letters[row_index]
    else:  # Even zone
        return even_letters[row_index]
Grid Square Example for 11S (Southern California)
      A  B  C  D  E  F  G  H  J  K  L  M  N  P  Q  R  S  T  U  V  W  X  Y  Z
   ┌──────────────────────────────────────────────────────────────────────────┐
 V │                                                                          │
 U │                                                                          │
 T │                                              San Diego area              │
 S │                                                                          │
 R │                                                                          │
 Q │                                        LA ──▶ 11S LA ◀──                 │
 P │                                                                          │
 N │                                                                          │
 M │                                                                          │
 L │                                                                          │
   └──────────────────────────────────────────────────────────────────────────┘

Complete MGRS Algorithm

def latlon_to_mgrs(lat, lon, precision=5):
    """
    Convert latitude/longitude to MGRS.

    Args:
        lat: Latitude in decimal degrees
        lon: Longitude in decimal degrees
        precision: 1-5 (1=10km, 2=1km, 3=100m, 4=10m, 5=1m)

    Returns:
        MGRS string like "11SLA6891657142"
    """
    import math

    # Step 1: Calculate UTM zone
    zone = int((lon + 180) / 6) + 1

    # Step 2: Calculate UTM easting/northing
    # (Uses Transverse Mercator projection - simplified here)
    # In practice, use pyproj or utm library

    # Step 3: Determine latitude band
    bands = 'CDEFGHJKLMNPQRSTUVWX'
    band_idx = int((lat + 80) / 8)
    if band_idx > 19:
        band_idx = 19  # X band extends to 84°N
    band = bands[band_idx]

    # Step 4: Get column letter (easting)
    col_letter = get_column_letter(zone, easting)

    # Step 5: Get row letter (northing)
    row_letter = get_row_letter(zone, northing)

    # Step 6: Format numerical portion
    e_digits = str(int(easting % 100000)).zfill(5)[:precision]
    n_digits = str(int(northing % 100000)).zfill(5)[:precision]

    return f"{zone}{band}{col_letter}{row_letter}{e_digits}{n_digits}"

Precision Levels

Digits Example Area/Precision Use Case

0

11S LA

100 km × 100 km

Very rough

2

11S LA 1 6

10 km × 10 km

General area

4

11S LA 12 67

1 km × 1 km

Rough location

6

11S LA 123 678

100 m × 100 m

Good field accuracy

8

11S LA 1234 6789

10 m × 10 m

Precise

10

11S LA 12345 67890

1 m × 1 m

Maximum precision

Reading MGRS from a Map

8-Digit Grid (10m precision)
1. Find GZD (printed on map margin): 11S
2. Find 100km square letters: LA
3. Read EASTING (go RIGHT): 1234
4. Read NORTHING (go UP): 6789

Result: 11S LA 1234 6789

"Read RIGHT, then UP" - Easting first, then Northing.

Mnemonic: "In the door, up the stairs"

Using the Coordinate Scale (Protractor)

The military coordinate scale (GTA 5-2-12 or Lethalife Tactical Standard) is a transparent overlay with graduated scales for reading precise grid coordinates directly from the map.

Anatomy of the Coordinate Scale
┌─────────────────────────────────┐
│  Degrees around outer edge      │  ← Bearing measurement (0-360°)
│  ┌───────────────────────────┐  │
│  │  1:25,000 scale (inner)   │  │  ← Each division = 100m at 1:25,000
│  │  1:50,000 scale (outer)   │  │  ← Each division = 100m at 1:50,000
│  │                           │  │
│  │     10 subdivisions       │  │  ← Each sub = 100m (8-digit grid)
│  │     per grid square       │  │     Estimate 10ths = 10m (10-digit)
│  └───────────────────────────┘  │
└─────────────────────────────────┘
Reading an 8-Digit Grid (10m precision) with the Protractor
1. Place protractor on map with correct scale facing up (1:50,000)
2. Align the protractor's right-angle corner with the SOUTHWEST corner
   of the grid square containing your point
3. Slide protractor until the vertical edge passes through your point
4. Read EASTING: the number on the horizontal scale where
   the vertical edge crosses the bottom grid line → 4 digits
5. Now slide protractor until the horizontal edge passes through your point
6. Read NORTHING: the number on the vertical scale where
   the horizontal edge crosses the left grid line → 4 digits
7. Combine: GZD + 100km letters + 4-digit easting + 4-digit northing

Example: 11S MT 8345 5712  (10m precision)
Reading a 10-Digit Grid (1m precision)
Same process as 8-digit, but estimate one additional digit
by interpolating between the finest protractor divisions:

8-digit: 11S MT 8345 5712     (10m — read directly)
10-digit: 11S MT 83452 57128  (1m — estimated interpolation)

Match the scale! A 1:50,000 protractor scale placed on a 1:25,000 map reads distances at half their actual value. Always verify the map’s representative fraction before reading coordinates.

Grid Convergence

Grid north (GN) and true north (TN) differ except along the central meridian of each zone.

Grid Convergence Formula (approximate)
\[\gamma \approx \Delta\lambda \cdot \sin(\phi)\]

Where:

  • \(\gamma\) = grid convergence (degrees)

  • \(\Delta\lambda\) = difference from central meridian

  • \(\phi\) = latitude

Example: Los Angeles
Zone 11 central meridian: 117°W
LA longitude: 118.4°W
Δλ = 1.4° west of central meridian
LA latitude: 34°N

γ ≈ 1.4 × sin(34°) ≈ 0.78°

Grid North is ~0.78° WEST of True North

10-Digit Grid Reading

For precise navigation (1 meter), read a 10-digit grid:

Reading a 10-Digit Grid
Given: Target at UTM 11S 368916mE 3757142mN

Step 1: Identify GZD
        Zone 11, Band S → 11S

Step 2: Identify 100km square
        Easting starts with 3: Column letter based on zone
        Northing starts with 37: Row letter based on zone
        (Use lookup table or software) → LA

Step 3: Extract 5-digit easting
        368916 → last 5 digits → 68916

Step 4: Extract 5-digit northing
        3757142 → last 5 digits → 57142

Result: 11S LA 68916 57142 (1-meter precision)

CLI Tools

Using Python MGRS Library

pip install mgrs utm
#!/usr/bin/env python3
"""
MGRS/UTM Coordinate Conversion Examples
========================================

Convert between Geographic (lat/lon), UTM, and MGRS coordinate systems.

Dependencies:
    pip install mgrs utm pyproj

Usage:
    python mgrs-convert.py
"""

# =============================================================================
# Using mgrs library (simple)
# =============================================================================

def mgrs_examples():
    """MGRS library examples"""
    import mgrs

    m = mgrs.MGRS()

    # Geographic to MGRS
    lat, lon = 33.9425, -118.4081  # LAX
    mgrs_coord = m.toMGRS(lat, lon)
    print(f"LAX: {lat}, {lon}")
    print(f"  MGRS (1m): {mgrs_coord}")

    # Different precision levels
    print(f"  MGRS (10m):  {m.toMGRS(lat, lon, MGRSPrecision=4)}")
    print(f"  MGRS (100m): {m.toMGRS(lat, lon, MGRSPrecision=3)}")
    print(f"  MGRS (1km):  {m.toMGRS(lat, lon, MGRSPrecision=2)}")
    print(f"  MGRS (10km): {m.toMGRS(lat, lon, MGRSPrecision=1)}")

    # MGRS to Geographic
    lat2, lon2 = m.toLatLon(mgrs_coord)
    print(f"\n  Back to lat/lon: {lat2:.6f}, {lon2:.6f}")

    return mgrs_coord


# =============================================================================
# Using utm library
# =============================================================================

def utm_examples():
    """UTM library examples"""
    import utm

    # Geographic to UTM
    lat, lon = 33.9425, -118.4081  # LAX
    easting, northing, zone_num, zone_letter = utm.from_latlon(lat, lon)

    print(f"\nUTM Conversion:")
    print(f"  Lat/Lon: {lat}, {lon}")
    print(f"  UTM: {zone_num}{zone_letter} {easting:.2f}mE {northing:.2f}mN")

    # UTM to Geographic
    lat2, lon2 = utm.to_latlon(easting, northing, zone_num, zone_letter)
    print(f"  Back: {lat2:.6f}, {lon2:.6f}")

    return easting, northing, zone_num, zone_letter


# =============================================================================
# Using pyproj (most flexible)
# =============================================================================

def pyproj_examples():
    """PyProj examples for coordinate transformations"""
    from pyproj import CRS, Transformer

    # Define coordinate systems
    wgs84 = CRS.from_epsg(4326)  # WGS84 Geographic
    utm11n = CRS.from_epsg(32611)  # UTM Zone 11N

    # Create transformer
    to_utm = Transformer.from_crs(wgs84, utm11n, always_xy=True)
    to_geo = Transformer.from_crs(utm11n, wgs84, always_xy=True)

    # Transform
    lon, lat = -118.4081, 33.9425  # Note: lon, lat order for pyproj
    easting, northing = to_utm.transform(lon, lat)

    print(f"\nPyProj Transformation:")
    print(f"  WGS84: {lat}, {lon}")
    print(f"  UTM 11N: {easting:.2f}mE {northing:.2f}mN")

    # Reverse
    lon2, lat2 = to_geo.transform(easting, northing)
    print(f"  Back: {lat2:.6f}, {lon2:.6f}")


# =============================================================================
# Batch conversion
# =============================================================================

def batch_convert():
    """Convert multiple coordinates"""
    import mgrs

    m = mgrs.MGRS()

    locations = [
        ("LAX", 33.9425, -118.4081),
        ("JFK", 40.6413, -73.7781),
        ("ORD", 41.9742, -87.9073),
        ("DFW", 32.8998, -97.0403),
        ("McAllen", 26.2034, -98.2300),
    ]

    print("\nBatch Conversion (6-digit MGRS):")
    print("-" * 50)

    for name, lat, lon in locations:
        mgrs_6 = m.toMGRS(lat, lon, MGRSPrecision=3)
        print(f"  {name:10s}: {mgrs_6}")


# =============================================================================
# Interactive converter
# =============================================================================

def interactive_converter():
    """Simple interactive converter"""
    import mgrs

    m = mgrs.MGRS()

    print("\n" + "=" * 50)
    print("Interactive Coordinate Converter")
    print("=" * 50)

    while True:
        print("\nOptions:")
        print("  1. Lat/Lon to MGRS")
        print("  2. MGRS to Lat/Lon")
        print("  3. Exit")

        choice = input("\nChoice: ").strip()

        if choice == "1":
            try:
                lat = float(input("Latitude: "))
                lon = float(input("Longitude: "))
                precision = int(input("Precision (1-5, default 5): ") or "5")
                result = m.toMGRS(lat, lon, MGRSPrecision=precision)
                print(f"\nMGRS: {result}")
            except Exception as e:
                print(f"Error: {e}")

        elif choice == "2":
            try:
                mgrs_str = input("MGRS: ").strip().upper()
                lat, lon = m.toLatLon(mgrs_str)
                print(f"\nLat/Lon: {lat:.6f}, {lon:.6f}")
            except Exception as e:
                print(f"Error: {e}")

        elif choice == "3":
            break


# =============================================================================
# Zone calculation
# =============================================================================

def calculate_utm_zone(lon):
    """
    Calculate UTM zone from longitude

    Zone = floor((lon + 180) / 6) + 1
    """
    import math
    return math.floor((lon + 180) / 6) + 1


def latitude_band(lat):
    """
    Determine MGRS latitude band letter

    Bands are 8° tall, starting at 80°S
    Letters C-X (excluding I and O)
    """
    if lat < -80:
        return None  # South of UTM coverage
    if lat > 84:
        return None  # North of UTM coverage

    bands = "CDEFGHJKLMNPQRSTUVWX"
    index = int((lat + 80) / 8)
    if index >= len(bands):
        index = len(bands) - 1
    return bands[index]


def zone_info_demo():
    """Demonstrate zone calculations"""
    locations = [
        ("Los Angeles", 34.05, -118.24),
        ("New York", 40.71, -74.01),
        ("London", 51.51, -0.13),
        ("Tokyo", 35.68, 139.65),
        ("Sydney", -33.87, 151.21),
        ("McAllen", 26.20, -98.23),
    ]

    print("\nUTM Zone Information:")
    print("-" * 60)
    print(f"{'Location':<15} {'Lat':>8} {'Lon':>9} {'Zone':>6} {'Band':>6}")
    print("-" * 60)

    for name, lat, lon in locations:
        zone = calculate_utm_zone(lon)
        band = latitude_band(lat)
        print(f"{name:<15} {lat:>8.2f} {lon:>9.2f} {zone:>6} {band:>6}")


# =============================================================================
# Main
# =============================================================================

if __name__ == "__main__":
    print("=" * 60)
    print("MGRS/UTM COORDINATE CONVERSION EXAMPLES")
    print("=" * 60)

    try:
        mgrs_examples()
        utm_examples()
        pyproj_examples()
        batch_convert()
        zone_info_demo()
    except ImportError as e:
        print(f"\nMissing dependency: {e}")
        print("Install with: pip install mgrs utm pyproj")

    # Uncomment for interactive mode:
    # interactive_converter()

Bash Quick Conversion

# Using proj library
echo "-118.4081 33.9425" | cs2cs +proj=longlat +datum=WGS84 +to +proj=utm +zone=11 +datum=WGS84
# Output: 368916.xx  3757142.xx

Practice Exercises

Drill 1: Zone Identification

Determine the UTM zone for: 1. New York City (74°W) 2. Tokyo (139.7°E) 3. Sydney (151.2°E) 4. London (0.1°W) 5. McAllen, TX (98.2°W)

Drill 2: MGRS Reading

Given map coordinates, construct MGRS reference: 1. 11S 368916mE 3757142mN 2. 18T 586897mE 4511340mN 3. 32U 500000mE 5500000mN

Drill 3: Precision Practice

What area does each represent? 1. 11S LA 2. 11S LA 6 5 3. 11S LA 68 57 4. 11S LA 689 571 5. 11S LA 6891 5714

Quick Reference

Table 1. Coordinate System Comparison
System Example Precision Best For

Geographic

33.9425°N, 118.4081°W

Varies

Global reference

UTM

11S 368916mE 3757142mN

1 meter

Surveying, GIS

MGRS 6-digit

11S LA 689 571

100m

Field navigation

MGRS 8-digit

11S LA 6891 5714

10m

Precise field work

MGRS 10-digit

11S LA 68916 57142

1m

Maximum precision

Universal Polar Stereographic (UPS)

UTM is not used above 84°N or below 80°S. These polar regions use the Universal Polar Stereographic (UPS) projection.

UPS Zones

Zone Region Coordinates

Y (North)

84°N to 90°N, 180°W to 0°

West half of Arctic

Z (North)

84°N to 90°N, 0° to 180°E

East half of Arctic

A (South)

80°S to 90°S, 180°W to 0°

West half of Antarctic

B (South)

80°S to 90°S, 0° to 180°E

East half of Antarctic

UPS Parameters

Parameter Value

Scale factor at pole

0.994

False Easting

2,000,000 m

False Northing

2,000,000 m

Central point

Pole (90°N or 90°S)

MGRS in UPS Zones

MGRS notation in polar regions uses different 100km grid identifiers but maintains the same precision levels.

Arctic Example
Z YE 12345 67890   (1m precision in Arctic)

NATO STANAG 2211 Reference

NATO STANAG 2211 (Standard NATO Agreement) defines geodetic datum and grid reference systems for military operations.

Key Requirements

Requirement Specification

Primary Datum

WGS 84 (World Geodetic System 1984)

Grid System

MGRS (Military Grid Reference System)

Precision

Minimum 10-digit (1-meter) capability required

Polar Regions

UPS with MGRS notation

Map Series

1:50,000 and 1:250,000 minimum

Reporting Format

UTM zone + latitude band + 100km square + numerical location

Coordinate Exchange Format

When exchanging coordinates between NATO forces:

Standard Format
Grid Reference: 11S LA 68916 57142
Zone:           11S
100km Square:   LA
Easting:        68916
Northing:       57142
Precision:      1 meter
Datum:          WGS 84

Interoperability Notes

Datum Mismatch: Pre-WGS84 maps use different datums (NAD27, ED50, etc.). Failure to convert can result in position errors of 200+ meters.

Always verify datum before combining coordinates from different sources.

Old Datum Region Typical WGS84 Shift

NAD27

North America

30-100 m

ED50

Western Europe

100-200 m

Tokyo

Japan/Korea

100-150 m

Pulkovo 1942

Russia/Eastern Europe

100-200 m

State Plane Coordinate System (SPCS)

Used in the United States for surveying and local applications. Higher accuracy than UTM due to smaller zones.

Projection Types

Projection Used When Example States

Lambert Conformal Conic

State is wider (E-W) than tall

Texas, California, Florida

Transverse Mercator

State is taller (N-S) than wide

Illinois, Vermont, New Hampshire

Oblique Mercator

Diagonal extent (Alaska Panhandle)

Alaska Zone 1

Scale Factor

SPCS uses different scale factors depending on projection:

  • Lambert Conic: Typically 1/10,000,000 to 1/30,000,000

  • Transverse Mercator: Similar to UTM but optimized for zone

Maximum distortion: ~1:10,000 (1 cm per 100 m)

Next

Continue to Magnetic Navigation to learn about compass declination and the agonic line.