How to transform data from NAD83 to WGS84

From OpenStreetMap Wiki
Jump to navigation Jump to search

Many US Government sources including the Census Bureau (TIGER), USGS (GNIS and NHD), and USDA publish GIS data files using the NAD83 coordinate system. OSM uses the WGS84 coordinate system, so if you have ever tried to open one of these files in JOSM, you've seen this message:

JOSM was unable to find a strict mathematical transformation between 'GCS_North_American_1983' and WGS84.

Do you want to try a lenient method, which will perform a non-precise transformation (with location errors up to 1 km)?

If so, do NOT upload such data to OSM!

In this case, the "lenient" method that JOSM uses is not to transform the data at all, which typically results in errors of a couple of meters. That might not seem like much, but it can be the difference between being on one side of a street or the other. With the release of NADCON 5.0 by NOAA and the availability of NADCON transformation files, it is now possible to do precise transformations of NAD83 data to WGS84 for almost all of the US and eliminate these errors.

NOTE: The methods on this page work only for 2D data sets. If you have a 3D data set and want to transform elevation, you need to use the VDatum software from NOAA instead.

Do I need to transform data from NAD83 to WGS84?

Whether you need to transform data from NAD83 to WGS84 before using it in OSM depends on the source data and what you intend to do with it. The National Hydrography Dataset (NHD), for example, generally has errors of more than a few meters. If you're working with NHD, you probably need to edit the data by hand to align it with current aerial imagery and other reliable sources that use the same WGS84 coordinate system as OSM. Transforming the NHD data from NAD83 to WGS84 is not necessarily going to make the job of editing the data easier.

On the other hand, if you're working with official boundaries that cannot be verified against features on the ground, it is absolutely necessary to transform this data from NAD83 to WGS84 before importing it into OSM. Official boundaries are often drawn to align with land parcels, roads, or natural features. An error of a couple of meters is noticeable when the boundary doesn't match up with a road centerline or a lot boundary. Official boundaries are not verifiable on the ground, so these errors often cannot be corrected using other sources. Unfortunately, many previous imports of boundary data into OSM did not perform these transformations, so many of the existing US boundaries are off by a couple of meters.

Transforming data from NAD83 to WGS84 using QGIS

Transforming data from NAD83 to WGS84 takes a few steps, and you have to be careful to get everything right.

  1. If you don't already have the QGIS software, download and install it.
  2. Go to the PROJ.org Datumgrid CDN, download all the us_noaa_nadcon5_* files, and move them to the /share/proj/ directory in the QGIS installation directory.
  3. In QGIS, use Layer > Add Layer > Add Vector Layer to open the source data file that uses NAD83.
  4. Then use Vector > Data Management Tools > Reproject Layer to start the process of transforming the coordinates. Be careful to get all the settings right at each step.
    1. Select the correct input layer. For the first pass, start with the layer containing the source data. For subsequent passes, use the last layer created by the previous step. You can confirm that you have the correct input layer by checking the Authority ID (EPSG:NNNN) against the transformation steps in the tables below.
    2. Select the correct target coordinate reference system (Target CRS). The drop down menu only has recently used CRSs, so click the small globe button to get the full list. You can use the filter to list coordinate reference systems by name, but you may need to manually expand the Geographic (2D) category to see the results.
    3. If it's not already open, flip the toggle to open the Advanced Parameters. This provides a list of coordinate operations for the transformation. Select the correct coordinate operation identified in the tables below.
    4. Verify that the transformation will use a NADCON 5 projection. The transformation command is displayed in monospaced font below the Identifiers label in the Advanced Parameters section. One of the command parameters should be +grids=us_noaa_nadcon5_.... If that's not present in the command, double check the settings above.
    5. Run the transformation. Pay attention to any warning messages that may appear at the top of the Map View (behind the Reproject Layer window). If you get a warning that QGIS used a "ballpark" transformation, you may have messed something up. (Sometimes QGIS displays these warnings when it renders a layer in the Map View, which is separate from the layer transformation.) If it doesn't look like the transformation worked, delete the layer you just created and try again.
    6. Click the Change Parameters button or the Parameters tab, then repeat these steps for all the transformations in the tables below until you complete the transformation to WGS84.
  5. After the final transformation, close the Reproject Layer window and click on the small "chip" button on the top layer in the Layers list. This button allows you to save the layer to a file. Save the layer as an ESRI Shapefile.

You really do need to go through all the individual transformation steps to get accurate results. If you try to transform the data directly to WGS84, the transformation in QGIS does nothing but increase the error bounds on the coordinates.

Transformations for US States, Puerto Rico, and the US Virgin Islands

Transformations for the Conterminous US (Lower 48 States)
Sequence From To Coordinate Operation
Coordinate System Authority ID Coordinate System Authority ID Transformation Description
1 NAD83(1986) EPSG:4269 NAD83(HARN) EPSG:4152 NAD83 to NAD83(HARN) (47) - DERIVED_FROM(EPSG):8556 United States (USA) - CONUS onshore
2 NAD83(HARN) EPSG:4152 NAD83(FBN) EPSG:8860 NAD83(HARN) to NAD83(FBN) (1) - DERIVED_FROM(EPSG):8861 United States (USA) - CONUS onshore
3 NAD83(FBN) EPSG:8860 NAD83(NSRS2007) EPSG:4759 NAD83(FBN) to NAD83(NSRS2007) (1) - DERIVED_FROM(EPSG):8862 United States (USA) - CONUS onshore
4 NAD83(NSRS2007) EPSG:4759 NAD83(2011) EPSG:6318 NAD83(NSRS2007) to NAD83(2011) (1) - DERIVED_FROM(EPSG):8559 United States (USA) - CONUS onshore
5 NAD83(2011) EPSG:6318 WGS 84 (G2139) EPSG:9755 (Only one option here - use the default)
Transformations for Alaska
Sequence From To Coordinate Operation
Coordinate System Authority ID Coordinate System Authority ID Transformation Description
1 NAD83(1986) EPSG:4269 NAD83(HARN) EPSG:4152 NAD83 to NAD83(HARN) (48) - DERIVED_FROM(EPSG):8550 United States (USA) - Alaska including EEZ
2 NAD83(HARN) EPSG:4152 NAD83(NSRS2007) EPSG:4759 NAD83(HARN) to NAD83(NSRS2007) (2) - DERIVED_FROM(EPSG):8551 United States (USA) - Alaska including EEZ
3 NAD83(NSRS2007) EPSG:4759 NAD83(2011) EPSG:6318 NAD83(NSRS2007) to NAD83(2011) (2) - DERIVED_FROM(EPSG):8552 United States (USA) - Alaska
4 NAD83(2011) EPSG:6318 WGS 84 (G2139) EPSG:9755 (Only one option here - use the default)
Transformations for Hawaii
Sequence From To Coordinate Operation
Coordinate System Authority ID Coordinate System Authority ID Transformation Description
1 NAD83(1986) EPSG:4269 NAD83(HARN) EPSG:4152 NAD83 to NAD83(HARN) (49) - DERIVED_FROM(EPSG):8660 United States (USA) - Hawaii - main islands onshore
2 NAD83(HARN) EPSG:4152 NAD83(PA11) EPSG:6322 NAD83(HARN) to NAD83(PA11) (1) - DERIVED_FROM(EPSG):8661 United States (USA) - Hawaii - main islands onshore
3 NAD83(PA11) EPSG:6322 WGS 84 (G2139) EPSG:9755 (Only one option here - use the default)
Transformations for Puerto Rico and the US Virgin Islands
Sequence From To Coordinate Operation
Coordinate System Authority ID Coordinate System Authority ID Transformation Description
1 NAD83(1986) EPSG:4269 NAD83(HARN) EPSG:4152 NAD83 to NAD83(HARN) (22) - DERIVED_FROM(EPSG):1495 Puerto Rico and US Virgin Islands - onshore
2 NAD83(HARN) EPSG:4152 NAD83(HARN corrected) EPSG:8545 NAD83(HARN) to NAD83(HARN Corrected) (1) - DERIVED_FROM(EPSG):9181 Puerto Rico and US Virgin Islands - onshore
3 NAD83(HARN corrected) EPSG:8545 NAD83(FBN) EPSG:8860 NAD83(HARN Corrected) to NAD83(FBN) (1) - DERIVED_FROM(EPSG):8867 Puerto Rico and US Virgin Islands - onshore
4 NAD83(FBN) EPSG:8860 NAD83(NSRS2007) EPSG:4759 NAD83(FBN) to NAD83(NSRS2007) (2) - DERIVED_FROM(EPSG):8868 Puerto Rico and US Virgin Islands - onshore
5 NAD83(NSRS2007) EPSG:4759 NAD83(2011) EPSG:6318 NAD83(NSRS2007) to NAD83(2011) (3) - DERIVED_FROM(EPSG):8673 Puerto Rico and US Virgin Islands - onshore
6 NAD83(2011) EPSG:6318 WGS 84 (G2139) EPSG:9755 (Only one option here - use the default)

Transformations for Guam, the Northern Mariana Islands, and American Samoa

Many of the US government data files for these regions claim to use the NAD83(1986) coordinate system, but NAD83(1986) was never available in these regions. So, there is no precise transformation available for NAD83(1986) to WGS84 available for these regions. If you're starting with a data file for one of these regions that claims to use the NAD83(1986) coordinate system (We're looking at you TIGER), for now, you're out of luck. If you open one of these files in JOSM, you can easily see where there are misalignments of more than a few meters from obvious physical features. There is no automated way to correct this misalignment, so you can either use the misaligned data as is (which is apparently what happened with the previous TIGER imports for these regions) or attempt to fix the alignment by hand (which is likely not verifiable).

If you do happen to have a data file using one of the proper coordinate systems for these regions, NOAA does provide valid transformations. Depending on which coordinate system the source file uses, you may need to start the sequence of transformations at an intermediate step.

Transformations for Guam and the Northern Mariana Islands
Sequence From To Coordinate Operation
Coordinate System Authority ID Coordinate System Authority ID Transformation Description
1 Guam 1963 EPSG:4675 NAD83(HARN) EPSG:4152 Guam 1963 to NAD83(HARN) (2) - DERIVED_FROM(EPSG):8665 Guam - onshore. Northern Mariana Islands - onshore.
2 NAD83(HARN) EPSG:4152 NAD83(FBN) EPSG:8542 NAD83(HARN) to NAD83(FBN) (3) - DERIVED_FROM(EPSG):8865 Guam - onshore. Northern Mariana Islands - onshore.
3 NAD83(FBN) EPSG:8542 NAD83(MA11) EPSG:6325 NAD83(FBN) to NAD83(MA11) (1) - DERIVED_FROM(EPSG):8866 Guam - onshore. Northern Mariana Islands - onshore.
4 NAD83(MA11) EPSG:6325 WGS 84 (G2139) EPSG:9755 (Only one option here - use the default)
Transformations for American Samoa
Sequence From To Coordinate Operation
Coordinate System Authority ID Coordinate System Authority ID Transformation Description
1 American Samoa 1962 EPSG:4169 NAD83(HARN) EPSG:4152 American Samoa 1962 to NAD83(HARN) (3) - DERIVED_FROM(EPSG):8662 American Samoa - Tutuila, Anu'u, Ofu, Olesega and Ta'u islands.
2 NAD83(HARN) EPSG:4152 NAD83(FBN) EPSG:8542 NAD83(HARN) to NAD83(FBN) (2) - DERIVED_FROM(EPSG):8863 American Samoa - Tutuila, Anu'u, Ofu, Olesega, Ta'u and Rose islands.
3 NAD83(FBN) EPSG:8542 NAD83(PA11) EPSG:6322 NAD83(FBN) to NAD83(PA11) (1) - DERIVED_FROM(EPSG):8864 American Samoa - Tutuila, Anu'u, Ofu, Olesega, Ta'u and Rose islands.
4 NAD83(PA11) EPSG:6322 WGS 84 (G2139) EPSG:9755 (Only one option here - use the default)

Transformations for state and local GIS data

State and local GIS data files often use older local coordinate systems. These data files can often be transformed to WGS84 using the same process as above with an additional step to first transform the data to EPSG:4269 - NAD83(1986). In QGIS, select EPSG:4269 - NAD83(1986) as the Target CRS and look through the available coordinate operations in the Advanced Parameters to try find one with good accuracy and an appropriate applicable region in the description. The accuracy of these transformations may not be good but performing them is often better than using the data without transforming it.

Use caution where state and local GIS data reaches international or state borders. The coordinate systems in use by the adjacent authorities likely differ, and this can result in discrepancies or discontinuities in the data.

Shortcut transformation method (for experienced users only!)

If you're comfortable working with QGIS, it is often possible to get it to perform all the transformations from NAD83(1986) to NAD83(2011)/NAD83(PA11)/NAD83(MA11) in a single step. To do this, start with a source layer that uses EPSG:4629 - NAD83(1986) and select EPSG:6318 - NAD83(2011), EPSG:6322 - NAD83(PA11), or EPSG:6325 - NAD83(MA11) (as appropriate) as the Target CRS. Then, select the correct coordinate operation in the Advanced Parameters and carefully check the command line to make sure that it lists all of the intermediate NADCON transformations and doesn't use anything else. If it all looks good, you can do this single-step transformation, and then follow it with the transformation to EPSG:9755 - WGS 84 (G2139).

Use caution with this method! QGIS will happily lie to you and tell you that it is performing a transformation when it is doing nothing but changing the label for the layer. If you get the setup wrong, you'll end up with data that has not been transformed at all.

Do not attempt to transform data directly from NAD83(1986) to WGS 84 (G2139)! QGIS will lie to you and tell you it can do this transformation, but the data will be unchanged.