NASA World Wind Open Source Project - Embry

advertisement

NASA World Wind Open Source

Project

Caylyne A. Shelton

Embry-Riddle Aeronautical University

600 S. Clyde Morris Blvd.

Daytona Beach, FL 32114 USA

This paper covers the NASA World

Wind Open Source project as a soft real-time system. Modifications in design and implementation are done daily to improve upon both the performance capabilities as well as feature and cache pack additions.

Wind since NASA first released it in

2005 and more than 100,000 new users download it each week. The high-level concept of how World Wind Works is fairly simple to understand. NASA receives satellite imagery on the ground,

This paper will also address how the

World Wind project faces numerous challenges forward. This paper formats it into files, and distributes it via the internet out to end users requesting it via World Wind which is running on addresses some of the issues World

Wind faces and proposes solutions, based on the author’s research, for their local computers. See figure 1 for an illustration. World Wind is used to display satellite imagery of the Earth,

Moon, Venus, Mars, Jupiter, and Stars and Galaxies far away from our own. [5] improvements that any end user can implement on their own, as well as provides information on what NASA 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]

Introduction

NASA World Wind is an open source project funded by the National

Aeronautics and Space Administration

(NASA) and the National Science

Foundation (NSF) that allows visually rich, interactive exploratory movement around the Earth and its surface, Moon, and other planets, as well as other galaxies. More than 10 million users from over 100 nations have used World

Figure 1

Using World Wind and How it

Works

As mentioned in the introduction of this paper, NASA database imagery servers receive sattelite imagery from sattelites currently in orbit (Moderate

Resolution Imaging Spectrometer data is receieved from NASA’s Aqua sattelite, for example), as well as by previous

space exploration projects dating back as far as 1989 (data from the Magellan spacecraft that orbited Venus from 1989 through 1994, for example). The fastest retrieval time for real-time imagery from orbiting sattelites is about one hour. [5]

The recommended system requirements for a computer to run

World Wind are as follows:

3D Graphics Card- nvidia, ATI,

Intel, SIS, S3, and Matrox have all been tested with World Wind and work well.

1.4 GHz CPU

 256 MB RAM

Windows 2000, Windows 2003,

Windows XP, or Windows Vista operating system

DSL or Cable internet connection

For World Wind Java: o Eclipse 3.3 M7 o Java 1.6.0

For World Wind in C++: o .Net Framework 2.0 o Managed DirectX 9.0c

End users may choose from the original World Wind open source project that is coded in C++ with the Microsoft

Visual Studio development environment, or the recently released World Wind

Java, which runs on Macintosh and

Linux computers. Both of which offer many benefits and cache packs. World

Wind in C++, however, offers something very beneficial to end users- that is thorough documentation available online.

Documentation for World Wind Java is currently limited in volume online, as it is fairly new.[3] Both projects have numerous forums available online, and the World Wind Wiki website is a good information repository for someone just starting to work with World Wind. Both the C++ and Java implemented World

Wind projects’ source code can be downloaded from the SourceForge website. [1] The World Wind program portion that comprises the basic World

Wind functionality is only five megabytes in size total, and the basic imagery that accompanies it totals 50 megabytes in size. [3]

A set of Earth imagery files is provided with the World Wind download, called Blue Marble. This could be considered the “foundation” for

Earth surface images in World Wind.

Cache packs are collections files that display various sets of imagery data.

Add-on packs, which can be downloaded from the WorldWindData website, do not include all of the imagery files in cache packs. Add-on packs are the software plug-ins that enable the user to view numerous other features in World

Wind, and they use cache packs specific to their functionality. For example,

Earthquake is an add-on pack that provides displays of earthquakes that have occurred and is updated once per week with RSS feeds from United States

Geological Survey Data Topography

Maps with earthquake data for quakes of magnitudes greater than 2.5. Figure 2 shows a screen shot of World Wind running the Earthquake plug-in. The following provides more add-on packs available to use with World Wind

(please note that there are still many more than these): NLT Landsat 7,

Earthsat Geocover 2000, Clementine

40xx, and Blue Marble Next Generation

Topography plus Bathymetry. [3]

Figure 2

When a user loads World Wind, the Blue Marble cache pack is loaded.

Before any cache pack is loaded, World

Wind checks with NASA servers for the most recent imagery files for the cache pack. If more recent files exist on the server, world wind will replace local copies with more recent copies from the respective remote server. The file structure for storing cache pack files locally is handled by the end-user’s operating system. A configuration setting can also be changed to prevent

World Wind from updating cache packs on load. Cache packs are loaded in layers, with Blue Marble being the first layer. Image display in done in what is referred to as a “tile” format. Each image data file is a “tile” that loads in

World Wind. All tiles for any given cache pack load to construct a “layer of tiles”. The result is what appears to a user as a single image of a large physical range, when it is actually millions of images. Images are typically around

20KB in size a piece. [3]

The term “cache size” in World

Wind is used to describe the amount of cache data that can be loaded into World

Wind at one time. When a user needs cache that is not currently loaded, World

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 if the cache size is too large. [3]

Code analysis was done on

World Wind Java to determine how the multi-threaded system handles numerous tasks in real-time. A task queue contains all tasks that are currently waiting to run.

If the queue becomes full and tasks get rejected, each rejected task is logged.

Each task has a primary and a secondary priority assigned to it. Tasks waiting to run are categorized by the time frame stamp which they requested to run. All tasks waiting to run within the same time frame are ordered to run from those with the highest priorities first, and then down from there. If a task’s wait time exceeds the maximum wait time allowable and still has not run, it will simply be deleted and will not ever run. The maximum wait time for a task is two seconds.

Lower priority tasks must relinquish a resource if a higher priority task with same time frame stamp requests it.

Duplicate tasks are not allowed to enter the wait queue. World Wind Java utilizes the java.util.concurrent class for thread handling. [3]

Imagery databases each hold billions of images, or in some cases references to billions of images.

Demand on image-serving databases is very intense most of the time (more than

10 million requests daily), as World

Wind interest has spread worldwide and the project’s popularity is growing daily.

A user could so much as change the view direction in World Wind and need dozens of images immediately. World

Wind servers rely on SQL-based databases to store imagery. To provide an example of how much imagery is provided on just one single server, consider this: to view one of the sets of the Earth’s surface imagery in 15 meter granularity, it would take a server with a couple of terabytes worth of imagery.

Take that a step further, and go to the sub meter granularity and that couple of terabytes quadruples a couple of times for the amount of imagery on that server.

The following list covers the existing

NASA imagery servers: NASA Learning

Technologies at NASA Ames Research

Center, Tileservice.worldwindcentral.org,

TerraServer-USA, MODIS Rapid

Response Project, NASA Goddard

Space Flight Center, and SVS Image

Server at NASA Goddard Space Flight

Center. [7]

World Wind Issues and Proposed

Solutions

The fastest rate at which users can receive imagery data from sattelites in orbit now resides somewhere around an hour. If there were a way to speed up this process, end-users could rely on

World Wind to get information on items such as current weather conditions anywhere in the world (fires, floods, etc.)- thus possibly making World

Wind’s information provision safetycritical for those relying on the integrity and timeliness of it’s data. Increasing

World Wind’s speed of data delivery would need to start with the first data transmission- from satellites in orbit to

NASA servers. After some brainstorming on this issue, scientists determined the only definite way to get all of the Earth’s surface data faster would be to have image data collection over a much wider area from space by using a “net” of satellite all gathering image data simultaneously. This is not a feasible option right now. In the future, however, sattelites may be equipped with more image gathering devices to gather more image data concurrently.

NASA currently faces another issue hindering data imagery delivery to client systems of end-users: imagery servers are increasingly becoming bogged down with client requests for images. NASA is actually in the progress of implementing their solution to this problem- refactoring the implementation of their databases.

Currently in use are traditional SQLbased databases and data delivery to end-users via the Web Mapping Server

(WMS) protocol. Very soon, imagery data will all be vector based and will deliver data via the Web Feature Server

(WFS) protocol. [7]

Two other issues on the end-user side are that many users in World Wind forums have reported seeing are results of the cache size. Users want larger cache size so that they do not experience lag because they will not need to retrieve cache from imagery servers as often, and then some users make the cache size so large that their local system lags. The resolution is simply to find a cache size that is large enough to please the user and does not make their specific machine lag. Each user’s computer is different, and their can not be a single cache size number that will work for all.

The cache size is set in an *.xml configuration file that is read when

World Wind loads. If the configuration of the cache could be changed and

implemented while World Wind was running, the user could change the cache size whenever he/she would like.

Making the cache size changeable on the fly could be implemented by using a scripting language instead of an *.xml file. The suggested scripting language is

Lua for it’s simplicity. By creating a

Lua file containing the cache size, C++ code can access it at any time without needing to load an entire file. The user can simple change the Lua file and save it. The C++ code would need a wrapper class for interfacing with Lua, many source code examples of this exist on the internet. Lua interfaces with C++ with a simple stack of any combination data types the C++ code uses- the C++ code calls a Lua function from the Lua file to retieve data and Lua pushes the data onto a stack, then the C++ code pops the data from the stack. Implementing

World Wind configuration via Lua would allow users to change the cache size and many other configuration settings on the fly. [9]

Another option that needs further investigation is to have an implementation that will compress imagery files as they are retrieved from imagery servers and only “decompress” files that are needed by World Wind at that moment in time. “Decompressed” files would not actually get decompressed- their data is read and wrote into a temporary file that is deleted once they are not longer in use.

This is modeled after the functionality that already exists in the open source graphics rendering engine, Ogre. [8]

Another issue that end-users face with World Wind Java is the lack of online documentation. Doxygen was used to document the C++ World Wind and is an excellent choice for the Java version as well. Doxygen generates documentation for code that follows a strict code commenting standard. The code in World Wind Java already has comments that conform to the Doxygen commenting standard, so this solution may actually be in-progress. [3]

Plans for Future World Wind

Development

More detailed image resolution is one of many of the plans that NASA has for World Wind expansion. Granularity of images in World Wind in the future will yield very detailed results. Also, there are plans to develop local RSS news feeds that will display when a user zooms into a certain granularity on the

Earth’s surface. Other suggestions for

World Wind development include the following: integrating World Wind with flight plans, integrate with Google and do searches for specific locations, follow-up with more features to the

Flight Simulator software that World

Wind has already integrated with.

NASA’s plans for imagery expansion include at least 250 more Lunar and

Mars data from the latest Lunar

Reconnaissance Orbiter (LRO) and Mars

Reconnaissance Orbiter (MRO).The possibilities for expansion are as limitless. The ultimate goal, slated for many years from now, is 100’s of different World Wind programs. [3]

Conclusions

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.

References

[1] NASA World Wind Downloads http://sourceforge.net/project/showfiles.p

hp?group_id=69528

[2] Online Demo of World Wind http://worldwind.arc.nasa.gov/java/index

.html

[3] World Wind Wiki http://www.worldwindcentral.com/wiki/

Main_page

[4] MODIS Pictures and Information http://rapidfire.sci.gsfc.nasa.gov/realtime

/2007298/

[5] World Wind Home Page http://worldwind.arc.nasa.gov/

[6] Cache Packs www.

worldwind data.com/

[7] Server Information http://radar.oreilly.com/archives/2006/04/dat abase_war_stories_4_nasa_wo.html

[8] Ogre Rendering Engine www.

ogre 3d.org/

[9] Lua Information www.lua.org

Download