EPSG
"Map Projections - A Working Manual" by John P. Snyder, USGS Professional Paper 1395.
2023-06-29
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'))