My first job out of college involved writing OpenGL applications with C++. A lot of the projects revolved around high performance computing where TONS of data was stored on massive supercomputers. The customers would rent time on these machines where they would have a set amount of hard drive space to store all their data. They would also have access to a few developers who had the talent to turn this data into something beautiful and full of 3-D goodness, that would help them in their research. This is what I was hired to do.
Usually, we just had room enough to take slices of a whole data set, considering that the data consisted of not only space but time and some data sets were petabytes in size. Each time slice could hold many variables to visualize across a wide area and each variable had their own updates through time so it was a massive task to manage all of these components.
Examples of data sets included things like wind shear, water currents, water temperatures out in the ocean at multiple depths, movements of buoys over a period of years, salinity, plankton and coral data… you name it. Beyond just water and land, we had data sets from jet and rocket propulsion tests and molecular data with time steps in nanoseconds. It was really interesting work.
Since a lot of our work did revolve around climatology, we often had to place the data that we received, on the world somehow to make the data more meaningful. This, of course, means that you have to visualize the earth somehow. Naturally, you can view the earth as flat or as a globe, which require lat, lon data.
I ended up writing a set of classes to set all this up to prevent starting from scratch every single project. The only thing that would be left to do would be to place the data at the appropriate places (usually each data set did contain lat, lon information).
You can head over to the OpenGL page to check out some screenshots!