Data source: EPSG
Information source: "Map Projections - A Working Manual" by John P. Snyder, USGS Professional Paper 1395.
Revision date: 2023-06-29
Remarks: Modified form of Oblique Azimuthal Equidistant projection method developed for Polynesian islands. For the distances over which these projections are used (under 800km) this modification introduces no significant error.
Note: These formulas have been transcribed from EPSG Guidance Note #7-2. Users are encouraged to use that document rather than the text which follows as reference because limitations in the transcription will be avoided.
First calculate a constant for the projection:
nu_O = a /(1 – e^2 sin^2(latO))^0.5
Then the forward conversion from latitude and longitude is given by:
nu = a /(1 – e^2 sin^2(lat))^0.5
psi = atan [(1 – e^2) tan(lat) + e^2 * nu_O * sin(latO) / (nu * cos(lat))]
alpha = atan2{sin (lon – lonO) , [cos(latO) * tan(psi) – sin(latO) * cos (lon – lonO)]} (see implementation notes in GN7-2 preface for atan2 convention)
G = e sin(latO) / (1 – e^2)^0.5
H = e cos(latO) * cos(alpha) / (1 – e^2)^0.5
Then
if sin(alpha)) = 0, s = asin (cos(latO) * sin(psi) – sin(latO) * cos(psi)) * SIGN(cos(alpha))
else s = asin [sin (lon – lonO) * cos(psi) / sin(alpha))
and in either case
c = nu_O * s {[1 – s^2 * H^2 (1 – H^2) /6] + [(s^3/8)GH(1-2H^2)] + (s^4/120)[H^2(4-7H^2) – 3G^2(1-7H^2)] – [(s^5/48)GH]}
Then
E = FE + * sin(alpha)
N = FN + * cos(alpha)
For the reverse conversion from easting and northing to latitude and longitude:
c' = [(E FE)^2 + (N – FN)^2]^0.5
alpha' = atan2 [(E – FE) , (N – FN)]
A = e^2 * cos^2(latO) * cos^2(alpha') / (1 – e^2)
B 3e^2 * (1-A) * sin(latO) * cos(latO) * cos(alpha') / (1 – e^2)
D = c'nu_O
J = D – [A (1 + AD^3 / 6] – [B (1 + 3A) D^4 / 24]
K = 1 – (* J^2 / 2) – (B *J^3 / 6)
psi' = asin (sin(latO) cos(J) + cos(latO) sin(J) cos(alpha'))
Then
lat = atan [(1 – e^2 * K sin(latO) / sin(psi')) * tan(psi') / (1 – e^2)]
lon = lonO + asin (sin(alpha') * sin(J) / cos(psi'))