This is a cross-post of a first blog entry from Rob's new earth science blog http://blogs.msdn.com/b/earthscience.

 

Hello, my name is Rob Fatland and this is the first in an occasional blog primarily about earth system science.  That is: The task of understanding our habitat using interwoven system models. 'Our habitat' now extends from -35,576 feet (10843 meters) thanks to James Cameron to +29,029 feet (8,848 meters) thanks to Tenzing Norgay and Edmund Hillary. And that's the last time I'll use English units, by the way; if Americans can follow the British into the intricacies of this bizarre language we can certainly follow them in the adoption of the metric system. Which brings me to today's topic, the interpolation of trajectories.

Do you write code? Do you crawl under the hood of a computer or go behind the curtain and direct activity like some Great and Powerful Oz? I would consider it a "YES" if you work with formulas in Excel or if you use hypertext markup, or if you write programs in JavaScript or Python or C or C# or MATLAB for example. If so you may have noticed that not everything works the way we want the first try, and so we have a culture of wants (why we write the code) and bugs (the mistakes that get in the way). I have one such science want -- predicting the future of the northeast Pacific Ocean -- that brings me back under the hood just about every day; and this produced an amusing bug the other day. So my very first Hello World earth system science blog is about to turn into a bug report... so I better come up with a nice way of tying this up in the next couple paragraphs. Wish me luck.  

I use a virtual globe application called Worldwide Telescope (WWT) to draw and explore earth science data in geospatial context. This has advantages and disadvantages. The main disadvantage is a big learning curve and a very Wild West programming environment. The advantage is that WWT is much more powerful than Google Earth. I can draw a millions of data points and geometric objects and animate them in time.  For example visualizing current flow in coastal oceans is quite feasible on a moderately powerful PC laptop; see for example the video embedded here.  There are two key ideas in creating visualizations of this sort: First, do the processing in advance on a super computer, and second, interpolate between solutions (times and locations) for the flow of a marker dropped into the model ocean.  Parker MacCready, the scientist I work with, creates trajecotories as discrete locations sequential in time separated by a kilometer or so, and while the water moves about on the map sometimes it also goes up or down in the vertical direction. With Nels Oscar, a graduate student at OSU, I built Narwhal, a software library for visualization that (among other things) does trajectory interpolation.  This is just like filling in the gaps in a coarsely rendered animation, commonly known as key frames. Provide intermediate marker locations and the apparent motion becomes smooth and easy to understand.

To the goofy bug, then, I was calculating how many intermediate points to interpolate between successive coarse points of a trajectory, a calculation using distance based on depth, longitude and latitude. You would think that I would scale those three types of units to the same thing, so that 50 meters change in depth would not correspond to 50 degrees of latitude (or about 5,550,000 meters) but alas... well, it's fixed now. It points up a danger of powerfulness in a programming language: Just because I can do something in one line of code doesn't mean it does what I think. Anyway one fixed bug is one step closer to that extrapolation of the northeast Pacific, which coincidentally all comes down to the microbes that form the base of the marine food web. Or in colloquial language: Bugs.  

So hello world, welcome to the earthscience blog. My game plan: Let's use technology to explore and better understand the earth; let's see where we're all headed, and if there is trouble ahead as we now suspect then let's see if we can't figure out how to change course for the better. More on what's possible is at Layerscape, and more nitty-gritty at my informal supporting wiki.