GEOM-340 · Lesson 10 of 12 · 22 min

NAD83 and the modernized NSRS

Grant's crew observed pillar CR1 with GNSS for 24 hours in October 2026 and processed the data with NGS's OPUS service. OPUS reported NAD83(2011) coordinates at epoch 2010.00 that agreed with the published values to 3 mm in easting and 2 mm in northing. Behind that agreement lay a step that is easy to overlook: the GNSS solution itself was computed in the global frame at the epoch of observation and moved to 2010.00 with modeled velocities. At the observation epoch, the same coordinates would have been 10 mm east, 12 mm south and 6 mm lower. And in a few years the whole of NAD83 will be replaced by a new frame whose coordinates differ by more than a meter. This lesson explains NAD83's realizations, epochs and the modernized National Spatial Reference System (NSRS).

NAD83 and its realizations

The original NAD83 of 1986 was a continental adjustment of terrestrial and Doppler observations, accurate at the meter level and distorted at the decimeter level. GPS soon exposed those distortions, and in the 1990s each state was resurveyed with a High Accuracy Reference Network (HARN, also called HPGN), each published as a separate realization. The national Continuously Operating Reference Station network then became the foundation: NAD83(CORS96), the National Readjustment of 2007, NAD83(NSRS2007), and finally NAD83(2011), computed in the Multi-Year CORS Solution with a reference epoch of 2010.00. NAD83(2011) is defined from ITRF by a fourteen-parameter transformation that keeps NAD83's 1986 origin, orientation and scale and attaches it to the stable interior of the North American plate. The differences between realizations at a point range from meters (1986 versus 2011 in some places) to a few centimeters (2007 versus 2011).

Why coordinates have epochs

The North American plate moves relative to ITRF at about 2 cm per year, rotating about a pole near the equator off South America. NAD83 removes that rotation, so points in the plate's interior have nearly constant NAD83 coordinates. 'Nearly' is important. The western United States is deforming: the Pacific Northwest moves with the subduction of the Juan de Fuca plate, the Basin and Range is stretching, coastal California moves with the Pacific plate, and points across the Intermountain West creep by millimeters per year. Glacial isostatic adjustment, the slow rebound after the ice sheets melted, raises parts of the northern states and lowers others, and earthquakes cause sudden shifts. NGS's Horizontal Time-Dependent Positioning (HTDP) software models these velocities so that coordinates can be moved between epochs, and OPUS uses such modeling to report coordinates at 2010.00.

A timeline from 1986 to 2030 with labeled events: NAD83(1986), the HARN readjustments of the 1990s, NAD83(CORS96), NAD83(2007), NAD83(2011) at epoch 2010.00, and NATRF2022 with reference epoch 2020.00 in beta testing from 2026. Below the timeline, a small map arrow shows CR1 moving a few millimeters per year in NAD83 and about 17 mm per year in ITRF.
NAD83 realizations and NATRF2022, and the motion of CR1 in NAD83 and in ITRF.
Plate motion at CR1 in ITRF from an Euler vector, and moving an observed result to the reference epoch with intra-frame velocities (exercise values).
import math
a = 6378137.0; f = 1 / 298.257222101; e2 = f * (2 - f)
MAS = math.radians(1 / 3.6e6)                      # one milliarcsecond in radians

def to_xyz(lat, lon, h):
    p, l = math.radians(lat), math.radians(lon); N = a / math.sqrt(1 - e2 * math.sin(p)**2)
    return [(N + h) * math.cos(p) * math.cos(l), (N + h) * math.cos(p) * math.sin(l), (N * (1 - e2) + h) * math.sin(p)]
def enu(lat, lon, v):
    p, l = math.radians(lat), math.radians(lon)
    e = -math.sin(l) * v[0] + math.cos(l) * v[1]
    n = -math.sin(p) * math.cos(l) * v[0] - math.sin(p) * math.sin(l) * v[1] + math.cos(p) * v[2]
    u = math.cos(p) * math.cos(l) * v[0] + math.cos(p) * math.sin(l) * v[1] + math.sin(p) * v[2]
    return e, n, u

lat, lon, h = 47.50600422, -111.29779092, 1004.826     # CR1 in NAD83(2011) at epoch 2010.00
X = to_xyz(lat, lon, h)

# 1. Why ITRF coordinates of CR1 keep changing: rotation of the North American plate.
#    Euler vector of approximately the published size (mas per year).
w = [0.03 * MAS, -0.69 * MAS, -0.02 * MAS]
v = [w[1] * X[2] - w[2] * X[1], w[2] * X[0] - w[0] * X[2], w[0] * X[1] - w[1] * X[0]]
ve, vn, vu = enu(lat, lon, v)
print(f"plate motion at CR1 in ITRF: east {ve*1000:+.1f} mm/yr, north {vn*1000:+.1f} mm/yr, "
      f"speed {math.hypot(ve, vn)*1000:.1f} mm/yr toward azimuth {math.degrees(math.atan2(ve, vn)) % 360:.0f} deg")
print(f"  over 2010.0 -> 2026.8 that is {math.hypot(ve, vn)*16.8:.3f} m")

# 2. Inside a plate-fixed frame (NAD83, and NATRF2022 with its intra-frame velocity
#    model) the plate motion is removed; what is left is small. Exercise values, mm/yr:
vg_e, vg_n, vg_u = 0.4, -0.6, -0.5
t_obs, t_ref = 2026.8, 2010.0
# An OPUS result for CR1 observed at epoch 2026.8 (exercise: equal to the 2010.0 value
# moved forward by the grid velocities, plus 4 mm of noise)
M = a * (1 - e2) / (1 - e2 * math.sin(math.radians(lat))**2) ** 1.5
Nr = a / math.sqrt(1 - e2 * math.sin(math.radians(lat))**2)
def move(lat, lon, h, de, dn, du):
    return (lat + math.degrees(dn / (M + h)), lon + math.degrees(de / ((Nr + h) * math.cos(math.radians(lat)))), h + du)
obs = move(lat, lon, h, vg_e/1000*(t_obs-t_ref) + 0.003, vg_n/1000*(t_obs-t_ref) - 0.002, vg_u/1000*(t_obs-t_ref) + 0.002)
back = move(*obs, -vg_e/1000*(t_obs-t_ref), -vg_n/1000*(t_obs-t_ref), -vg_u/1000*(t_obs-t_ref))
for name, p in (("published, epoch 2010.0", (lat, lon, h)), ("OPUS, epoch 2026.8", obs), ("OPUS moved to 2010.0", back)):
    de = math.radians(p[1] - lon) * (Nr + h) * math.cos(math.radians(lat)) * 1000
    dn = math.radians(p[0] - lat) * (M + h) * 1000
    print(f"  {name:24s} {p[0]:.9f} {p[1]:.9f} {p[2]:9.4f}   dE {de:+6.1f} mm  dN {dn:+6.1f} mm  dU {(p[2]-h)*1000:+6.1f} mm")
Output
plate motion at CR1 in ITRF: east -14.8 mm/yr, north -8.6 mm/yr, speed 17.1 mm/yr toward azimuth 240 deg
  over 2010.0 -> 2026.8 that is 0.287 m
  published, epoch 2010.0  47.506004220 -111.297790920 1004.8260   dE   +0.0 mm  dN   +0.0 mm  dU   +0.0 mm
  OPUS, epoch 2026.8       47.506004111 -111.297790791 1004.8196   dE   +9.7 mm  dN  -12.1 mm  dU   -6.4 mm
  OPUS moved to 2010.0     47.506004202 -111.297790880 1004.8280   dE   +3.0 mm  dN   -2.0 mm  dU   +2.0 mm

The first part of the code computes the motion of CR1 in ITRF from an Euler vector of approximately the published size for the North American plate: about 15 mm per year west and 9 mm per year south, 17.1 mm per year toward an azimuth of 240°, or 0.29 m between 2010.0 and 2026.8. That is the motion NAD83 removes. The second part uses exercise velocities of a few tenths of a millimeter per year, the size modeled for central Montana, to move a simulated result at epoch 2026.8 back to 2010.0. At the observation epoch the coordinates differ from the published ones by 10 mm, −12 mm and −6 mm; moved to 2010.00 they agree to 3 mm, −2 mm and +2 mm, the noise added in the simulation. In Montana these corrections are small; in coastal California or the Pacific Northwest they reach centimeters per decade.

The modernized NSRS

NGS is replacing NAD83 and the North American Vertical Datum of 1988 with a modernized NSRS. Its geometric part consists of four plate-fixed terrestrial reference frames: NATRF2022 for the North American plate, PATRF2022 for the Pacific plate, CATRF2022 for the Caribbean plate and MATRF2022 for the Mariana plate. Each is defined from ITRF2020 by a rotation that removes its plate's motion, and each is aligned with ITRF2020's origin and scale rather than with NAD83's 1986 definition. Removing the origin offset that NAD83 inherited from the 1980s is the main reason why coordinates change: in the conterminous states the change from NAD83(2011) to NATRF2022 is of the order of a meter or more horizontally and in ellipsoidal height, varying smoothly across the country. The vertical part, the North American-Pacific Geopotential Datum of 2022 (NAPGD2022) with its GEOID2022 model, was introduced in Geodesy I.

Two new ideas come with the frames. First, the remaining motion within each plate is described by an Intra-Frame Velocity Model (IFVM), so that every coordinate can be tied to a time. Second, NGS will publish two kinds of coordinates: survey epoch coordinates, which describe a mark at the time it was observed, and reference epoch coordinates, which are moved to a common reference epoch, 2020.00, for use together. SPCS2022, described in lesson 7, is the plane coordinate system on these frames. NGS released beta versions of the new tools, including coordinate transformation, in 2026 for public testing, and the frames become official when NGS completes that process. Surveyors in Montana will therefore spend several years converting records between NAD83 and NATRF2022, and the conversions must use NGS's published models, not ad hoc shifts.

Transformation tools

NGS provides several tools for moving between realizations and epochs. NADCON5, described in lesson 9, handles NAD27 and each NAD83 realization. HTDP moves coordinates between epochs and between ITRF and NAD83 realizations. The NGS Coordinate Conversion and Transformation Tool (NCAT) combines these with conversions to state plane, UTM and the US National Grid in one web service and programming interface, and it is the expected route to NATRF2022 and SPCS2022. GIS software accesses the same grids and models through the PROJ library, discussed in lesson 11. Whatever the tool, the practitioner should record the source and target frames, realizations, epochs and the tool and version used.

Writing a complete coordinate statement

The district's data standard requires every coordinate set delivered by a surveyor or contractor to carry a statement of its reference system. Leah's template had six lines, and she explained each to the district's staff with CR1 as the example. The statement looks pedantic until the first time two surveys of the same marks disagree by 2 cm and nobody can tell whether the marks moved, the epochs differ or one survey is wrong. With the statement, the question is settled in minutes, and during the transition to NATRF2022 it will be indispensable.

A complete coordinate statement, as required by the district's data standard.
ItemExample for CR1Why it matters
Frame and realizationNAD83(2011)Realizations differ by centimeters to meters
Coordinate epoch2010.00Coordinates at other epochs differ by millimeters per year
ProjectionSPCS 83 Montana (2500), international feet (or UTM zone 12, or the district LDP)Different projections give completely different numbers
Height systemEllipsoidal h, or NAVD 88 with GEOID18h and H differ by about 15 m here
UnitsInternational feet, or metersThe wrong foot moves points by feet
Source and methodOPUS, 24 h, October 2026, reported at 2010.00Shows how the epoch was handled

Heights deserve special mention. The change from NAD83(2011) to NATRF2022 alters ellipsoidal heights by about as much as positions, and the change from NAVD 88 to NAPGD2022 alters orthometric heights by decimeters to more than a meter, as Geodesy I described. Both changes are systematic and smooth, so they cancel in height differences over short distances, which is why leveling for drainage design is largely unaffected; but any mixing of old and new heights for the same structure, such as a canal check designed on NAVD 88 and built from NAPGD2022 control, produces errors of the full size of the datum change. The district's standard therefore records the height system with every elevation, not just with the project.

Worked problem

Moving a coordinate between epochs

A control point's published ellipsoidal height is 1,004.826 m at epoch 2010.00. The modeled up velocity is −0.5 mm/yr. What height should be expected from a survey at epoch 2026.8?

Show solution
  1. \[h(2026.8) = 1{,}004.826 + (-0.0005)(2026.8 - 2010.0) = 1{,}004.826 - 0.008 = 1{,}004.818 \text{ m}\]

Answer: The expected height at the survey epoch is 1,004.818 m. A survey result of 1,004.820 m agrees within 2 mm once the epochs are reconciled.

Worked problem

How much does plate motion move CR1 in ITRF?

CR1 moves at 17.1 mm/yr in ITRF2020. A data set of ITRF2020 coordinates at epoch 2015.0 is combined with ITRF2020 coordinates of the same points at epoch 2026.8 without epoch correction. How large is the inconsistency?

Show solution
  1. \[e = 17.1 \times (2026.8 - 2015.0) = 17.1 \times 11.8 = 202 \text{ mm}\]

Answer: About 0.20 m. In a global frame, coordinates without epochs are inconsistent at the decimeter level after a few years; in a plate-fixed frame the same mistake costs millimeters in Montana.

Common mistakes

  • MistakeWriting 'NAD83' without the realization.

    InsteadState NAD83(2011) epoch 2010.00, or the realization actually used.

  • MistakeComparing a GNSS result at the observation epoch with control at 2010.00.

    InsteadMove the result to the control's epoch first, as OPUS does.

  • MistakeTreating NATRF2022 coordinates as NAD83 coordinates with a small correction.

    InsteadThe change is of the order of a meter; use NGS tools and models.

  • MistakeTreating ITRF or WGS 84 and NAD83(2011) as interchangeable.

    InsteadThey differ by 1 to 2 m and the difference changes by about 2 cm per year.

  • MistakeMixing HARN, 2007 and 2011 control in one adjustment.

    InsteadTransform all control to one realization and epoch.

Summary and key terms

  • NAD83 has several realizations, from 1986 through the HARNs, CORS96 and 2007 to NAD83(2011) at epoch 2010.00.
  • NAD83 is plate-fixed; points still move by millimeters per year from deformation and glacial isostatic adjustment.
  • HTDP and OPUS move coordinates between epochs; plate motion in ITRF at the district is about 17 mm per year.
  • NATRF2022 and the other 2022 frames replace NAD83, aligned with ITRF2020's origin and scale; coordinates change by about a meter.
  • The IFVM, survey epoch coordinates and reference epoch coordinates (2020.00) tie every coordinate to a time.
  • NADCON5, HTDP and NCAT are NGS's transformation tools; record frames, epochs and tools used.
NAD83(2011)
The NAD83 realization from the 2011 Multi-Year CORS Solution, reference epoch 2010.00.
HARN
High Accuracy Reference Network, the statewide GPS readjustments of the 1990s.
NATRF2022
The North American Terrestrial Reference Frame of 2022, replacing NAD83.
IFVM
Intra-Frame Velocity Model, describing motion within a plate-fixed frame.
Reference epoch coordinates
Coordinates moved to a common epoch, 2020.00 for NATRF2022.
HTDP
Horizontal Time-Dependent Positioning, NGS's software for epoch and frame changes.
NCAT
NGS's Coordinate Conversion and Transformation Tool.

Practice problems

Work each problem on paper first, then reveal the answer to check.

  1. What is the reference epoch of NAD83(2011)?

    Show answer

    2010.00.

  2. Why will NATRF2022 coordinates differ from NAD83(2011) by about a meter?

    Show answer

    NATRF2022 is aligned with ITRF2020's origin and scale; NAD83 kept its 1986 definition.

  3. A point moves 1.0 mm/yr east. How far between epochs 2010.0 and 2020.0?

    Show answer

    10 mm.

  4. What are survey epoch coordinates?

    Show answer

    Coordinates of a mark at the time it was observed, before moving to the reference epoch.

  5. Which NGS tool combines transformations and conversions to state plane and UTM?

    Show answer

    NCAT.

Lesson quiz · 5 questions

Score 60% or more to complete this lesson.

Take the quiz