For a program I have to calculate the height according to EGM96. I found http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/egm96.html - this site delivers files with parameters and a fortran-program. But I feel unable to understand what is going on in this Fortran-program and have no idea how to use the parameters to generate the correct height. Can someone explain the algorithm to me?
-
Which Fortran program? The one that interpolates values on a grid (intpt.f) or the one that sums spherical harmonics (f477.f)?– whuberCommented Oct 14, 2011 at 16:56
-
I don't even get, which one calculate the heights for me.– MnementhCommented Oct 18, 2011 at 7:53
-
They both do, but they do it in (completely) different ways.– whuberCommented Oct 18, 2011 at 13:48
4 Answers
GeographicLib includes classes to compute the geoid height via interpolation on a grid of values (the Geoid class) and via summing the spherical harmonic sum (the GravityModel class). The interpolation method is pretty straightforward; see the associated documentation, Geoid height. I agree that the NGA programs for computing the geoid height via spherical harmonics are poorly documented. I've tried to explain the method on the documentation page, Gravity models. More to the point, I'm happy to answer questions. (I've had no luck getting NGA to answer questions about its programs!)
Pardon if I'm cross-posting a link from Stack Overflow. I asked a similar question on Stack Overflow with regards how to do the calculations for an IOS application. I actually ended up answering my own question but I've posted a link here which gives you both C and Objective C code to complete this task.
Code is here:
https://stackoverflow.com/questions/22196714/wgs84-geoid-height-altitude-offset-for-external-gps-data-on-ios
Somebody ported a Fortran program to do these calculations into C and I then ported it over to Objective C
Here is a C# library for calculating geoid EGM96 undulations: https://github.com/MatejFranceskin/GeoidHeightsDotNet
Available also as Nuget packet: GeoidHeightsDotNet
There is a JavaScript conversion library here: https://www.npmjs.com/package/egm96-universal