Coordinate Conversion – How to Convert Between WGS84 and NAD83

coordinate systemcoordinatesnad83wgs84

This is a newbie question that is about converting between wgs84 and nad83. I have aerial photos that I am trying to compute lat long coordinates for as closely as possible. There are several factors that make the usual types of corrections tricky, e.g. questionable parameters, … so there is some trial and error involved.

Thus I need a way to check my progress as I make corrections. At first just checking against google earth was fine, but at this point the 2.5 foot or so difference between my data (nad83) and google earth(wgs84) has become a limiting factor. So I need to transform nad83 to wgs84.

I have been using rgdal in R and dotspatial in C# to do projections, but I think changing between nad83 and wgs84 isn't considered a "projection" (am I right?). Attempting to call project with "+proj=NAD83 ellps=WGS84" just throws an error.

I am fine with writing a 7 parameter coordinate change myself, except I am not sure how to convert either one to (X,Y,Z) coordinates (which I assume means converting from lat long to the surface of the ellipsoids they are based on). The existing questions on nad83 and wgs84 seem to be about which method to use, rather than answering a very basic question like mine, i.e. how does one do it at all?

Best Answer

Typically, NAD83 and WGS84 are within one meter of each other. Your concerns about differences of 2.5 feet, which are less than a meter, indicate you do need to perform this datum transformation.

Briefly, this calculation requires knowledge of when the coordinates were collected so that their movement over time can be accounted for (primarily due to the movements of underlying tectonic plates and partly due to "episodic motion associated with earthquakes"). You first convert the raw data to equivalent coordinates referenced to specific standard dates, such as 1997.0 or 2002.0. Then you look up 14 parameters describing (a) the offset, rotation, and rescaling (i.e., a seven-parameter transformation) needed to change datums at a given date together with (b) the first derivatives of those parameters with respect to time. Multiplying (b) by the elapsed time and adding to (a) gives a first-order approximation to the needed seven-parameter transformation, which you then apply.

Although the procedure is not mathematically difficult, it is rather involved and contingent on details of how your data were originally collected and processed. An NOAA paper, Transformations Between NAD83 and WGS84, provides a clear, readable explanation. It recommends you use interactive "Horizontal Time-Dependent Position" software, HTDP, available on the NOAA Website at http://www.ngs.noaa.gov/TOOLS/Htdp/Htdp.shtml. The Fortran source code consists primarily of the coefficients of the plate tectonic model plus some interface code, but I estimate around 3,000 lines actually do calculations. It could be a significant pain to port.