We sometimes need datum-conversion due to having out-of-date topographic-maps. Many North-American topo-maps are in NAD27, and so we need to convert between that and what our GPSs use. Some people working mainly with NAD27 maps set their GPSs to display in that datum, but then when communicating with others working in NAD83 the need to convert arises. Other parts of the world have datums with different names but with essentially the same problem.
In 2002 needing a computer-program to do file-at-a-time conversion of a list of points from UTM to Latitude-Longitude, I found a C++ program that with minor changes became what was needed, used it for the job at hand, and moved on to other things. However it left me with the idea that adding a datum-conversion feature to that program would make it a nicer more useful program.
Almost 8 years later I needed the program again, made further improvements including a web-interface. And again I considered adding datum-conversion. First I finished the by-formula method, using the formulae published by Peter Dana, that I'd begun in 2002. However the results are not accurate enough for my taste; my test-case in Manitoba was not sufficiently accurate with the Canada-wide corrections, nor with the Manitoba+Ontario corrections, ergo more-localized corrections are needed, and indeed to get acceptable accuracy appears to require a large table of corrections.
It turns out that Canada has made such a table of corrections for all of Canada, the USA has done likewise, and so have most other countries - to convert between whatever datum their old topo-maps are in and the modern WGS84 datum used by GPSs. The Canadians use their own NTv2 format for that table-of-datum-conversion-corrections or "grid-shift" file; the USA uses their NADCON format incompatible with NTv2; the Canadian NTv2 format is also used by Australia, NewZealand, Germany, Switzerland, Spain, and unofficially Great Britain, France, Portugal.
Both Canada and the USA are providing NAD27-to-NAD83 conversions, however one of them would have to be converted to the other file-format before they could be combined to make a North-American converter. Because the NTv2 format includes an extension to the sort of format used by NADCON, converting NADCON data to NTv2 is feasible, the other way isn't. Incidentally, the USA calls theirs the "North-American" NAD27-to-NAD83 Converter, but it isn't. The USA could very easily make good on their "North American" claim by converting their data to to the NTv2 format, however that's not likely to happen. One reason it won't happen involves licencing terms: the USA releases their programs and data as "open-source", Canada does not.
NRCAN (Natural Resources Canada) policy amounts to their NTv2 software (programs & data) being proprietary freeware; it is available as freeware but only for proprietary operating-systems; the source-code is available for free (actually at a price considerably less than that) but only to developers of proprietary software -- it's not available at any price to developers of open-source software. I only reached this conclusion after reading the relevant material on their website, inquiring about the terms for redistribution & for obtaining the source, and corresponding by email with Patrice Lascelles of NRCAN. Discussing NRCAN's policy with Patrice has made it clear that NRCAN did not arrive at their policy by accident but by design; their policy reflects their philosophy about software which can only be characterized as strongly prejudiced against open-source software, making it wrongheaded in my opinion.
To understand how a proprietary software company pays less than nothing, you need to see the NRCAN's "Commercial Development License" agreement which is free and which includes three hours of consultation services, as well as the cost of producing and shipping a CD.
NRCAN has used Canadian taxpayer dollars to develop this software, and continues to use taxpayer dollars to subsidize proprietary software companies who are integrating NTv2 support into their software, and yet they refuse to make this software available to developers of open-source software. As a Canadian I'm ashamed; as a Canadian-taxpayer I'm appalled; as an open-source software developer I'm angry.
There is good reason to believe that NRCAN policy regarding redistribution and other aspects of "freeness" of their NTv2 software has undergone changes over the years. At some point the NTv2 Developer's Guide has been available on their website, as you can see from all the links (now broken) to it. Presumably the data and Fortran source-code have been also. And NRCAN still has a webpage that mentions an FTP site where Fortran source-code, "Complete Grid Shift File structure specifications and access algorithms", and the Developer's Guide are available. Ergo, they're trying to close the barn-door after the horse has bolted. At present, to obtain the source-code or developer-documentation from NRCAN you'll need to sign an agreement promising not to redistribute them. You can use the Fortran source-code in the development of a "value-added" program, but you must still direct your customers to NRCAN for them to obtain the data. However, if you obtain the data, documentation, programs from other sources who obtained them legally back when the barn-door was open then you'll be free to use them under the terms that were in effect when those sources obtained that material.
Here's where you can obtain the data without signing any agreement: www.killetsoft.de/p_gdln_e.htm.
The NTv2 Developer's Guide is available as Appendix-B of this Government of Ontario publication -- Appendix-B "NTv2 Developer’s Guide" starts at pg25 but then its pages are numbered 1..27 of 27; then comes pg53, then comes Appendix-C "NTv2 User's Guide" whose pages are numbered 1..57 of 57.
I didn't find an alternate source for the NRCAN Fortran programs, however there are open-source programs with NTv2-support including: jGridShift, SHPTRANS, OGDI, PROJ. Frank Warmerdam (of the Proj project) provides Python plus C++ tools for NADCON-to-NTv2 data-conversion. Also of interest may be this webpage of testcases which includes testcases for the region where NADCON and NTv2_0 (data for Canada) overlap.
Send your comments to ereimer@shaw.ca.