You are on page 1of 7

NASA World Wind Open Source

Caylyne A. Shelton
Embry-Riddle Aeronautical University
600 S. Clyde Morris Blvd.
Daytona Beach, FL 32114 USA

This paper covers the NASA World galaxies. More than 10 million users
Wind Open Source project as a soft from over 100 nations have used World
real-time system. Modifications in Wind since NASA first released it in
design and implementation are done 2005 and more than 100,000 new users
daily to improve upon both the download it each week. The high-level
performance capabilities as well as concept of how World Wind Works is
feature and cache pack additions. fairly simple to understand. NASA
This paper will also address how the receives satellite imagery on the ground,
World Wind project faces numerous formats it into files, and distributes it via
challenges forward. This paper the internet out to end users requesting it
addresses some of the issues World via World Wind which is running on
Wind faces and proposes solutions, their local computers. See figure 1 for
based on the author’s research, for an illustration. World Wind is used to
improvements that any end user can display satellite imagery of the Earth,
implement on their own, as well as Moon, Venus, Mars, Jupiter, and Stars
provides information on what NASA and Galaxies far away from our own. [5]
and the NSF are doing to resolve
issues with the image database server
on that side of the spectrum. This
paper will then cover more plans for
feature additions to World Wind. [5]

Figure 1
NASA World Wind is an open
source project funded by the National
Aeronautics and Space Administration Using World Wind and How it
(NASA) and the National Science Works
Foundation (NSF) that allows visually
rich, interactive exploratory movement As mentioned in the introduction
around the Earth and its surface, Moon, of this paper, NASA database imagery
and other planets, as well as other servers receive sattelite imagery from
sattelites currently in orbit (Moderate online, and the World Wind Wiki
Resolution Imaging Spectrometer data is website is a good information repository
receieved from NASA’s Aqua sattelite, for someone just starting to work with
for example), as well as by previous World Wind. Both the C++ and Java
space exploration projects dating back as implemented World Wind projects’
far as 1989 (data from the Magellan source code can be downloaded from the
spacecraft that orbited Venus from 1989 SourceForge website. [1] The World
through 1994, for example). The fastest Wind program portion that comprises the
retrieval time for real-time imagery from basic World Wind functionality is only
orbiting sattelites is about one hour. [5] five megabytes in size total, and the
basic imagery that accompanies it totals
The recommended system 50 megabytes in size. [3]
requirements for a computer to run
World Wind are as follows: A set of Earth imagery files is
 3D Graphics Card- nvidia, ATI, provided with the World Wind
Intel, SIS, S3, and Matrox have download, called Blue Marble. This
all been tested with World Wind could be considered the “foundation” for
and work well. Earth surface images in World Wind.
 1.4 GHz CPU Cache packs are collections files that
 256 MB RAM display various sets of imagery data.
 Windows 2000, Windows 2003, Add-on packs, which can be downloaded
Windows XP, or Windows Vista from the WorldWindData website, do
operating system not include all of the imagery files in
 DSL or Cable internet connection cache packs. Add-on packs are the
 For World Wind Java: software plug-ins that enable the user to
o Eclipse 3.3 M7 view numerous other features in World
o Java 1.6.0 Wind, and they use cache packs specific
 For World Wind in C++: to their functionality. For example,
o .Net Framework 2.0 Earthquake is an add-on pack that
o Managed DirectX 9.0c provides displays of earthquakes that
have occurred and is updated once per
End users may choose from the week with RSS feeds from United States
original World Wind open source project Geological Survey Data Topography
that is coded in C++ with the Microsoft Maps with earthquake data for quakes of
Visual Studio development environment, magnitudes greater than 2.5. Figure 2
or the recently released World Wind shows a screen shot of World Wind
Java, which runs on Macintosh and running the Earthquake plug-in. The
Linux computers. Both of which offer following provides more add-on packs
many benefits and cache packs. World available to use with World Wind (please
Wind in C++, however, offers something note that there are still many more than
very beneficial to end users- that is these): NLT Landsat 7, Earthsat
thorough documentation available Geocover 2000, Clementine 40xx, and
online. Documentation for World Wind Blue Marble Next Generation
Java is currently limited in volume Topography plus Bathymetry. [3]
online, as it is fairly new.[3] Both
projects have numerous forums available
Wind must access the proper data image
server in real-time to retrieve the cache
data needed. Many users change the
cache size to a larger number, permitting
more cache to be stored at a time, and
preventing the lag that can be
experienced when World Wind retrieves
cache data on the fly from imagery
servers. Changing the cache size to hold
more cache can also have repercussions-
users may experience lag as World Wind
searches through the loaded cache pack
Figure 2 if the cache size is too large. [3]

Code analysis was done on

When a user loads World Wind, World Wind Java to determine how the
the Blue Marble cache pack is loaded. multi-threaded system handles numerous
Before any cache pack is loaded, World tasks in real-time. A task queue contains
Wind checks with NASA servers for the all tasks that are currently waiting to run.
most recent imagery files for the cache If the queue becomes full and tasks get
pack. If more recent files exist on the rejected, each rejected task is logged.
server, world wind will replace local Each task has a primary and a secondary
copies with more recent copies from the priority assigned to it. Tasks waiting to
respective remote server. The file run are categorized by the time frame
structure for storing cache pack files stamp which they requested to run. All
locally is handled by the end-user’s tasks waiting to run within the same time
operating system. A configuration frame are ordered to run from those with
setting can also be changed to prevent the highest priorities first, and then down
World Wind from updating cache packs from there. If a task’s wait time exceeds
on load. Cache packs are loaded in the maximum wait time allowable and
layers, with Blue Marble being the first still has not run, it will simply be deleted
layer. Image display in done in what is and will not ever run. The maximum
referred to as a “tile” format. Each wait time for a task is two seconds.
image data file is a “tile” that loads in Lower priority tasks must relinquish a
World Wind. All tiles for any given resource if a higher priority task with
cache pack load to construct a “layer of same time frame stamp requests it.
tiles”. The result is what appears to a Duplicate tasks are not allowed to enter
user as a single image of a large physical the wait queue. World Wind Java
range, when it is actually millions of utilizes the java.util.concurrent class for
images. Images are typically around thread handling. [3]
20KB in size a piece. [3]
Imagery databases each hold
The term “cache size” in World billions of images, or in some cases
Wind is used to describe the amount of references to billions of images.
cache data that can be loaded into World Demand on image-serving databases is
Wind at one time. When a user needs very intense most of the time (more than
cache that is not currently loaded, World
10 million requests daily), as World NASA servers. After some
Wind interest has spread worldwide and brainstorming on this issue, scientists
the project’s popularity is growing daily. determined the only definite way to get
A user could so much as change the view all of the Earth’s surface data faster
direction in World Wind and need would be to have image data collection
dozens of images immediately. World over a much wider area from space by
Wind servers rely on SQL-based using a “net” of satellite all gathering
databases to store imagery. To provide image data simultaneously. This is not a
an example of how much imagery is feasible option right now. In the future,
provided on just one single server, however, sattelites may be equipped
consider this: to view one of the sets of with more image gathering devices to
the Earth’s surface imagery in 15 meter gather more image data concurrently.
granularity, it would take a server with a
couple of terabytes worth of imagery. NASA currently faces another
Take that a step further, and go to the sub issue hindering data imagery delivery to
meter granularity and that couple of client systems of end-users: imagery
terabytes quadruples a couple of times servers are increasingly becoming
for the amount of imagery on that server. bogged down with client requests for
The following list covers the existing images. NASA is actually in the
NASA imagery servers: NASA Learning progress of implementing their solution
Technologies at NASA Ames Research to this problem- refactoring the
Center, implementation of their databases., Currently in use are traditional SQL-
TerraServer-USA, MODIS Rapid based databases and data delivery to
Response Project, NASA Goddard Space end-users via the Web Mapping Server
Flight Center, and SVS Image Server at (WMS) protocol. Very soon, imagery
NASA Goddard Space Flight Center. [7] data will all be vector based and will
deliver data via the Web Feature Server
World Wind Issues and Proposed (WFS) protocol. [7]
Two other issues on the end-user
The fastest rate at which users side are that many users in World Wind
can receive imagery data from sattelites forums have reported seeing are results
in orbit now resides somewhere around of the cache size. Users want larger
an hour. If there were a way to speed up cache size so that they do not experience
this process, end-users could rely on lag because they will not need to retrieve
World Wind to get information on items cache from imagery servers as often, and
such as current weather conditions then some users make the cache size so
anywhere in the world (fires, floods, large that their local system lags. The
etc.)- thus possibly making World resolution is simply to find a cache size
Wind’s information provision safety- that is large enough to please the user
critical for those relying on the integrity and does not make their specific
and timeliness of it’s data. Increasing machine lag. Each user’s computer is
World Wind’s speed of data delivery different, and their can not be a single
would need to start with the first data cache size number that will work for all.
transmission- from satellites in orbit to The cache size is set in an *.xml
configuration file that is read when Another issue that end-users face
World Wind loads. If the configuration with World Wind Java is the lack of
of the cache could be changed and online documentation. Doxygen was
implemented while World Wind was used to document the C++ World Wind
running, the user could change the cache and is an excellent choice for the Java
size whenever he/she would like. version as well. Doxygen generates
Making the cache size changeable on the documentation for code that follows a
fly could be implemented by using a strict code commenting standard. The
scripting language instead of an *.xml code in World Wind Java already has
file. The suggested scripting language is comments that conform to the Doxygen
Lua for it’s simplicity. By creating a commenting standard, so this solution
Lua file containing the cache size, C++ may actually be in-progress. [3]
code can access it at any time without
needing to load an entire file. The user
can simple change the Lua file and save Plans for Future World Wind
it. The C++ code would need a wrapper Development
class for interfacing with Lua, many
source code examples of this exist on the More detailed image resolution is
internet. Lua interfaces with C++ with a one of many of the plans that NASA has
simple stack of any combination data for World Wind expansion. Granularity
types the C++ code uses- the C++ code of images in World Wind in the future
calls a Lua function from the Lua file to will yield very detailed results. Also,
retieve data and Lua pushes the data there are plans to develop local RSS
onto a stack, then the C++ code pops the news feeds that will display when a user
data from the stack. Implementing zooms into a certain granularity on the
World Wind configuration via Lua Earth’s surface. Other suggestions for
would allow users to change the cache World Wind development include the
size and many other configuration following: integrating World Wind with
settings on the fly. [9] flight plans, integrate with Google and
do searches for specific locations,
Another option that needs further follow-up with more features to the
investigation is to have an Flight Simulator software that World
implementation that will compress Wind has already integrated with.
imagery files as they are retrieved from NASA’s plans for imagery expansion
imagery servers and only “decompress” include at least 250 more Lunar and
files that are needed by World Wind at Mars data from the latest Lunar
that moment in time. “Decompressed” Reconnaissance Orbiter (LRO) and Mars
files would not actually get Reconnaissance Orbiter (MRO).The
decompressed- their data is read and possibilities for expansion are as
wrote into a temporary file that is limitless. The ultimate goal, slated for
deleted once they are not longer in use. many years from now, is 100’s of
This is modeled after the functionality different World Wind programs. [3]
that already exists in the open source
graphics rendering engine, Ogre. [8]
NASA World Wind is an open
source software project that has a lot to
offer and will remain this way for some
time. Users can view views of Earth
from space or from the surface, view the
moon, planets, and very distant galaxies
from their own personal computers.
World Wind Java opened up the ability
for Macintosh and Linux users to utilize
the features of World Wind as well.

World Wind has issues, some of

which already have solutions in the
works. A scripting language for
configuration would be a simple way to
make World Wind much more dynamic.
NASA is working towards improving
their imagery database architecture to
reduce the time elapsed for clients to
retrieve images. Compressing imagery
files and only “decompressing” those
needed at the time will reduce the
amount of disk space consumed, while
increasing the amount of imagery data
that can reside locally.
As the number of World Wind
users multiplies, more and more people
will contribute to new feature ideas as
well as resolutions for known issues.

[1] NASA World Wind Downloads

[2] Online Demo of World Wind

[3] World Wind Wiki

[4] MODIS Pictures and Information

[5] World Wind Home Page

[6] Cache Packs

[7] Server Information

[8] Ogre Rendering Engine

[9] Lua Information