How to transform data from NAD83 to WGS84
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.
- If you don't already have the QGIS software, download and install it.
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.(As of QGIS 3.38, all the NADCON5 files should be included in the software installation.)- In QGIS, use Layer > Add Layer > Add Vector Layer to open the source data file that uses NAD83.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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
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) |
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) |
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) |
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.
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) |
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.