An open source virtual globe rendering engine for 3D applications: NASA World Wind
Open Geospatial Data, Software and Standardsvolume 2, Article number: 4 (2017)
We give here an overview of the project, reporting details regarding current development direction, with state of the art examples. The European Space Agency is now partnering with NASA on development of the "ESA-NASA Web World Wind"; this high degree of interest from other agencies will boost future project productivity.
With this contribution, we want to increase awareness of NASA World Wind as a unique opportunity to foster collaboration between scientists, developers and other stakeholders, enriching knowledge of our Earth’s complexity.
The National Aeronautics and Space Administration (NASA) was born in 1958 with a motto: “For the Benefit of All”. This motto is fully realized in NASA World Wind. World Wind is an API-centric SDK, an Application Programming Interface (API) Software Development Kit (SDK) that delivers virtual world for experiencing geospatial data in its native context. This visualization technology provides a multi-dimensional geographic information system (GIS) and an extensible framework for analyses and visualization of scientific data. The base model is a virtual globe, a 3D representation of a planet, enriched with its digital terrain model (DTM). A DTM is the digital representation of the elevation of a planet’s surface at ground level. It provides information not only regarding elevation, but also allows one to derive other morphological features, such as slope, aspect, with the ability to model these dynamics of a planet’s system processes– e.g. local solar irradiance . NASA World Wind loads elevation data automatically with a multi-resolution approach, i.e. the scale of the view determines the detail of the elevation grid . Custom elevation grids can also be uploaded (Fig. 1) allowing users to implement their own model in NASA World Wind.
The potential to access spatial data is a common and foremost attribute of NASA World Wind. GIS interoperability is the ability for a platform to read and render multitude spatial data formats , from local sources and from remote public and private datasets  via shared open standards. The vision of NASA World Wind is to provide a high-performance open-source 3D planetary model with a large collection of components for projecting images, geometric objects and geographic shapes on the model. Its implementation is modular and extensible, allowing users to develop simple–to-sophisticated applications for their own requirements.
An insightful description is given in the homepage of the NASA World Wind organization website , which we report fully: “What is World Wind - World Wind is a free, open source API for a virtual globe. World Wind allows developers to quickly and easily create interactive visualizations of the 3D globe, mapping geographical information. Organizations across the world use World Wind to monitor weather patterns, visualize cities and terrain, track the movement of planes, vehicles and ships, analyse geospatial data, and educate people about the dynamic nature of Earth. [What are its] Features and Benefits? It’s open source: [NASA] World Wind is completely open source, therefore extending the API is simple and easy to do, creating a powerful platform giving any application the means to express, manipulate and analyse spatial data. [NASA] World Wind technology can be incorporated into Windows, Mac and Linux applications, web pages and web applications, as well as mobile applications alike. Build what you want. [NASA] World Wind is different from a 3D globe like Google Earth because it is not a completed application targeted at end-users. Instead, it is an SDK (software development kit) that software engineers can use to build their own applications. SDK contains World Wind API, examples and demos. API provides the virtual globe. Examples and demos show how to use [NASA] World Wind code in order to create a wide range of projects, from satellite tracking systems to flight simulators. With World Wind taking care of the hard work of visualizing geographic data (generating terrain from elevation models, selecting and displaying images from imagery servers, etc.), software engineers are free to focus on solving problems specific to their own domains and quickly build whatever geospatial applications they choose.”
NASA World Wind’s open source essence, with its modular and extensible architecture makes it an ideal platform for education, research and communication on our Earth dynamics. This contribution wants to increase awareness on NASA World Wind as a unique opportunity to foster collaboration between scientists, developers and other stakeholders, enriching knowledge of our Earth’s complexity.
Tessellator is the engine for rendering the ellipsoid by approximation, using a mesh of regular shapes, commonly rectangles or triangles. NASA World Wind developers applied a high-performance algorithm, described in Miller and Gaskins . Tessellation is performed every time the terrain’s resolution has to be synchronized with the current viewing state and availability of elevations .
Globe is rendered on screen using the tessellated representation of the ellipsoid as an approximation of a planet’s surface and elevation. The ellipsoid is defined in a Cartesian coordinate system in which the Y axis points to the north pole; the Z axis points to the intersection of the prime meridian and the equator, in the equatorial plane; the X axis completes a right-handed coordinate system, and is 90° east of the Z axis and also in the equatorial plane . There is also the possibility to use a flat representation of a planetary globe, by projecting it to a plane using the default Mercator projection. User-defined projections can be implemented as well. The default reference system for earth data geolocation is geographic, using latitude and longitude angles in a WGS84 Datum. Height can be provided as meters above sea level. Projected cartographic reference systems (e.g. UTM) and different Datum such as WGS84, NAD27 and many others are supported. Projections are supported through the Proj.4 library . For a reference regarding projections and cartographic reference systems see Evenden and Warmerdam , in global GIS applications see Battersby et al. .
Layers is the class providing access to spatial data added to NASA World Wind. Most spatial data are stored as raster models, e.g. aerial or satellite imagery, temperature grids etc, and as vector models, i.e. 2D or 3D geometric objects. Some examples of spatial data visualized in NASA World Wind are in Fig. 3. Layers are linked to spatial data available from local and remote repositories. Specific implementations allow interpreting, geolocating and rendering such data on the globe. Most supported formats of spatial data are available thanks to the GDAL library .
World Wind - Java
Layers can be populated with raster and vector models. Vector representation can be summarized in point, polyline, and polygon objects. For a more in-depth description of vector features please consult the Open Geospatial Consortium (OGC) Simple Features specifications . Points, placemarks and markers are useful to pinpoint locations and they can be enhanced with symbols, icons and labels. Polylines are useful to create paths, show a direction and delimit areas with boundaries. Figure 3 at first row depicts these two features in NASA World Wind. 3D vector objects are cylinders, spheres, cones, pyramids. 3D polygons can be created by extrusion of 2D polygons. They can be draped with images in order to create realistic complex objects (Fig. 3 second row first column). The position of the object in terms of height can be fixed on the ground or set at a user-defined height. The user can interact with vector objects by querying them or also by modifying their geometry and position manually with editing tools.
Data are retrieved from the web and cached locally for best performance  and organized as layers. Raster and vector models are supported. Supported raster formats are the following (for a description related to each abbreviation see ): JPG, PNG, GeoTIFF, JPEG2000. Supported vector formats are the following (for a description related to each abbreviation see ): ESRI Shapefile, Keyhole Markup Language (KML), VPF, GML, GeoJSON, GeoRSS, GPX, NMEA.
Web Map Service (WMS) and Web Feature Service (WFS) are standards from the OGC used to collect dataset from web services. Figure 3 at second row second column shows an example of MODIS Average Land Surface Temperature accessed by WMS . Through the WMS service, the NASA Server also provides availability to several layers: e.g. Blue Marble Next Generation (BMNG), LandSat7 based imagery, USGS imagery. Elevation data are provided by the server as well, using a combination of sources from ETOPO2, NASA SRTM and USGS NED.
Many modules for interaction between the data and the user are available in the NASA World Wind Java API distribution. In the last row of Fig. 3, on the left, the elevation data and a user-defined location is used to calculate which points are visible in the surrounding environment; on the right, the terrain profile along a user-defined line is extracted.
Programmers can use the full potential of Java’s GUI development interface (SWING) to define the look-and-feel and interaction between the user, NASA World Wind classes and custom modules. The simplest example of such interaction is a menu allowing layer management, as shown in Figs. 4 and 5; more complex examples are also available as demos (Table 1).
Web World Wind
All the components available in a NASA Web World Wind application, as it can be seen in Fig. 6, are divided into external components and internal components. The blocks in red are external ones that developers typically interact with to create their personal applications.. The blocks in blue are the internal ones and usually software engineers do not interact with them, since they are using internal functionalities for rendering of the globe and editing this part of the code is a delicate task.
The WorldWindow is an object, which contains all the NASA Web World Wind functionalities and connects them to an HTML container: the canvas. Each application implementing NASA Web World Wind should have at least one canvas in its webpage, with a WorldWindow object, linked through its identifier.
The globe is the 3D representation of the Earth, a WGS84 ellipsoid containing tasselleted elevation data, though it is also capable of showing several 2D projections. The implementation of the globe and its tessellation follows what is described previously in the Section “Architecture”. Usually, applications do not interact directly with the globe but implement methods to get information from it, even though it also possible to edit the globe’s features.
The Navigator is responsible for converting user actions to manipulations of the globe. It monitors mouse events and user gestures and translates them to pan, zoom or tilt operations on the globe. The Navigator can also be driven by the application to change the viewpoint to a particular location or to set its tilt and heading. The Navigator is an object automatically integrated into each WorldWindow, allowing interacting with the globe to get all the information about its position. Developers can customize mouse movements and gestures to navigate the globe in different ways. The Navigator can also be controlled by mobile devices and can be personalized to assign any mobile gesture to a particular action in the globe.
Among the features there are also geocoders that permit discovery of geographic locations from a query string. NASA Web World Wind implements the one from Open Street Map’s Nominatim geocoder at MapQuest . Thanks to this geocoder, it is possible to retrieve information about a city, area or location from its name or coordinates and then show all the desired information in the globe.
NASA Web World Wind provides a rich set of features for displaying and interacting with spatial data. It is designed to be extensible; adding functionality is simple and easy to do by extending existing modules or linking new tools as plug-ins.
Results and discussion
Since its release as open source in 2003, NASA World Wind attracts a large number of contributions from the open source community. The powerful modular architecture of NASA World Wind attracted improvements to the core functionalities, implementation of add-ons, delivery of high-resolution data, and outright development of GIS solutions. Bell et al.  in their article report information on add-ons and high resolution data available for NASA World Wind at the time of writing their contribution.
In this section, we report three solutions developed using NASA World Wind, and three solutions developed using NASA Web World Wind. What is reported is, obviously, a very small subset of many excellent applications developed by software engineers, students and professional teams from a large international community. We attempt to represent a range of different scopes and fields: multi-dimensional data viewers, collaborative solutions, cultural heritage representations, dissemination of science data and access to historical datasets from open data services.
Multi-dimensional data viewer - EST-WA
The Environment Space and Time Web Analyser (EST-WA), is based on the netCDF format  and is able to visualize spatial-temporal variable distributions in a multi-dimensional interface (e.g. sea temperature or soil permeability at different depths, air pollution, temperature, humidity at different heights, etc.).
The system is composed of two parts (Fig. 7): EST-WA2D, which is the graphical 2D interface for viewing and filtering the data from a netCDF archive; EST-WA3D, which is the graphical 3D interface, based on the NASA World Wind SDK.
EST-WA2D shows all main metadata related to the variables stored in netCDF files; it displays, for each variable, the data type, the measurement unit, the description, the rank and the axes defining the domain of the variable itself. For each axis, the measurement unit, the dimension, the step and maximum and minimum values are reported. For each “grid” type variable, the grid coordinate system information (i.e. the corresponding axes) is given.
By selecting each individual element (variable, domain, grid and axis), it is possible to access the second level of metadata (attribute) and to have the complete overview of the information stored in the netCDF file. Through this window, after the selection of the variable, users can activate the 2D map pre-viewer. Besides the usual browsing functionalities (pan, zoom-in and zoom-out), the dynamic map allows users to interact with the content of the 4D structure and to spatially and temporally filter the data of interest. After the filtering phase, EST-WA3D is activated (Fig. 8).
The environment is similar to the default NASA World Wind interface (on which it is based) but new tools for browsing the data in time, for analysing the temporal evolution of the variable and for slicing the data model in order to see the inner doxels (dynamic voxels) of the model have been implemented.
Data can be profiled along a constant longitude, latitude or height and, in order to increase the visual analysis of the Z (height) dimension, there is a vertical shift of the model and a degree of vertical exaggeration. Moreover, there is a legend with the colour ramp corresponding to the variable values for making possible the quantitative analysis of the phenomenon.
The value of a single voxel at a certain time and location or the values of all the voxels along a profile are readable thanks to an implemented pop-up window with a 2D viewer appearing over the main map. On this main map, the graphic of the variable along the selected profile and the single values are dynamically synchronized with any movement of the scene, which can be obtained for instance by means of the cursor. The user completely controls the profile, i.e. both translation and rotation, in every direction, are possible.
Tourism and cultural heritage - PoliCrowd
PoliCrowd is a 3D/4D collaborative platform based on NASA World Wind Java. After the first version which focused on tourism and cultural heritage , the current version, PoliCrowd 2.0, aims to be completely general-purpose and multi-thematic. It is based on the principle of Volunteered Geographic Information (VGI) to create projects according to participants’ interests, as they can connect to any WMS and OpenDataKit (ODK) server [5, 10] and add information. The users can also share their projects, by saving them in a catalogue available for all the PoliCrowd users. Multimedia content (audio, photo and video) can be added to the catalogue using Android mobile devices and the data are georeferenced using the positioning technologies of the mobile device. The architecture of the system can be seen in Fig. 9.
Submitted data are stored in a spatial database and published following OGC standards. All the POIs (Points of Interest) inserted are displayed on the virtual globe as markers as in Fig. 10 and upon clicking on a marker, the information submitted is shown in a new window. ODK layers and multimedia content can be filtered by time, introducing the 4th dimension.
Historical data – WebCarte
Web C.A.R.T.E. system is a multi-frame and multi-dimensional platform, which allows users to visualize time-varying features on synchronised 2D and 3D panels . The application provides access to historical maps of Como city, which are superimposed on the current local orthophoto and the topographic map showing city buildings and local DTM, i.e. the Lombardy Region DTM with pixel size of 20m and 2m (Fig. 11). A main innovation is represented by geographic synchronization of the panels, which allows users to look at the same portion of the Earth both on the 2D and the NASA World Wind based 3D viewers.
Available information about the building height, year of construction and year of demolition, allows users to both visualize the 3D city model on top of the globe and to filter the buildings visualization according to different criteria.
This means that the user can visualize all the existing buildings for a certain year, or just the buildings that were built during a specified time span (Fig. 12). A proper customization of World Wind virtual globe has therefore turned it into a working 4D Web viewer.
Data access and analysis – Quake Hunter
An earthquake viewer built using NASA Web World Wind. This web app shows time and location of the earthquake, magnitude and depth. Data are from USGS information on historic earthquakes. Users can query over 100 years of seismic data dynamically over the whole globe or on a smaller area by defining geographic boundaries over which to subset the data. The 3D capabilities allow analyses via depth and magnitude of each earthquake, for greater understanding of seismic events and their spatial correlation (Fig. 13) .
Education and information dissemination – Space Birds
This web app uses NASA Web World Wind to show known objects in Earth’s orbit . It immediately conveys the idea of how cluttered the space around Earth is (Fig. 14). SpaceBirds provides powerful query functions to identify specific platforms. Users can also inspect each object in space by interacting with the pointer.
Visual data analysis – World Weather
NASA Web World Wind has been deployed in this case to display a very broad range of weather and climate data from sources including NASA, ESA, NOAA. This web app brings together a multitude of data sources to give a comprehensive view of dynamics of the Earth’s climate . Figure 15 shows an example with two layers loaded, wind vectors and relative precipitation.
Current status and future developments
Among the latest features under development, it is worth to mention the implementation of a ‘picking’ functionality to enable users to pick an object available in the chosen screen point. Also the atmosphere effect with a day/night cycle has been developed alongside some unit tests to allow quality assured integration for each feature and in future they could be reused in other projects.
Development is also active on the Web version of NASA World Wind, now composed by a team that involves contributors from NASA, ESA and Thales. This group is working on porting many of the Java features to the Web World Wind SDK. They are also focusing on the performance. To accomplish this, the programmers continually analyze the code base for performance issues, and research improvements including feedback from the user community.
At the time of writing this article some interesting features currently under development are about to be released thanks to the concentrated and collaborative effort of programmers. These new features allow importing KML, GeoJSON and Collada spatial formats. Another important feature which will soon be released is OGC’s WCS service, which is still under active development.
In this article we have tried to provide the reader with an overview of the NASA World Wind project, outlining some existing applications and highlighting its potential for collaborative development in a wide range of applications for many aspects of science.
In this era, spatial data are growing exponentially in terms of volume and variety, and are often simply referred to as “bigdata”. This brings new opportunities, but also new challenges, in the ways we approach analysis and visualization of spatial data. NASA World Wind provides the platform for accurate and performant visualization of spatial data. This greatly facilitates the ability for scientists and software engineers to develop important analyses for better understanding of Earth, its environment, dynamics and complexity.
NASA World Wind improves every day thanks to a passionate community and is available across all platforms, for the benefit of all.
Availability and requirements
The following table represents the available code repositories for the different NASA World Wind implementation. In this article the two main SDKs are described, but it must be mentioned that also an Android SDK is being developed and is available.
Arias de Reyna M, Simoes J. Empowering citizen science through free and open source GIS. Open Geospatial Data Softw Stand. 2016;1:7. doi:10.1186/s40965-016-0008-x.
Bakillah M, Liang S. Open geospatial data, software and standards. Open Geospatial Data Softw Stand. 2016;1:1. doi:10.1186/s40965-016-0004-1.
Battersby SE, Finn MP, Usery EL, Yamamoto KH. Implications of Web Mercator and Its Use in Online Mapping. Cartogr Int J Geogr Inf Geovisualization. 2014;49:85–101. doi:10.3138/carto.49.2.2313.
Bell DG, Kuehnel F, Maxwell C, et al. NASA World Wind: Opensource GIS for Mission Operations. In: 2007 IEEE Aerospace Conference, IEEE. 2007. p. 1–9.
Brovelli MA, Minghini M, Zamboni G. Public Participation GIS: a FOSS architecture enabling field-data collection. Int J Digit Earth. 2014;8:1–19. doi:10.1080/17538947.2014.887150.
Brovelli MA, Zamboni G. Virtual globes for 4D environmental analysis. Appl Geomatics. 2012;4:163–72. doi:10.1007/s12518-012-0091-3.
Cozzi P, Ring K. 3D engine design for virtual globes. CRC Press; 2011.
Del Castillo M, Stewart B. SpaceBirds: The world of satellites at your fingertips. 2016.
Evenden G, Warmerdam F. Proj. 4--cartographic projections library. 1990.
Hartung C, Lerer A, Anokwa Y, et al. Open data kit: tools to build information services for developing regions. In: Proceedings of the 4th ACM/IEEE International Conference on Information and Communication Technologies and Development. 2010. p. 18.
Herring J. Opengis implementation standard for geographic information-simple feature access. 2010.
Hogan P, Coughlan J. NASA World Wind, Open Source 4D Geospatial Visualization Platform: *.NET & Java*. In: AGU Fall Meeting Abstracts. 2006.
Hogan P, Gaskins T. GeoSpatial Visual Analytics. Dordrecht: Springer Netherlands; 2009.
MapQuest I. Nominatim Search Service Developer’s Guide. 2016. https://open.mapquestapi.com/nominatim/. Accessed 12 Sep 2016.
Militão G. Chang B. Earthquake Activity Visualizer: Quake Hunter; 2016. https://github.com/NASAWorldWindResearch/Quake-Hunter.
Miller JR, Gaskins T. Computations on an Ellipsoid for GIS. Comput Aided Des Appl. 2009;6:575–83.
NASA World Wind Developers. World Wind JAVA SDK API Documentation. 2016. https://github.com/NASAWorldWind/WorldWindJava/releases. Accessed 10 Aug 2016.
National Aeronautics and Space Administration. Nasa open source agreement version 1.3. 2016. https://en.wikipedia.org/wiki/NASA_Open_Source_Agreement. Accessed 10 Sep 2016.
OGC. OGC Web Services Common Specification. 2007.
Piragnolo M, Masiero A, Fissore F, Pirotti F. Solar Irradiance Modelling with NASA WW GIS Environment. ISPRS Int J Geo Info. 2015;4:711–24. doi:10.3390/ijgi4020711.
Piragnolo M, Pirotti F, Guarnieri A, et al. Geo-Spatial Support for Assessment of Anthropic Impact on Biodiversity. ISPRS Int J Geo Info. 2014;3:599–618. doi:10.3390/ijgi3020599.
Pirotti F, Guarnieri A, Vettore A. Collaborative Web-GIS design: a case study for road risk analysis and monitoring. Trans GIS. 2011;15:213–26. doi:10.1111/j.1467-9671.2011.01248.x.
Schubert B, Collins D. NASA World Wind organization website. 2016. https://nasaworldwind.github.io/. Accessed 29 Sep 2016.
Sharif K, Salah F. NASA World Weather. 2016. https://github.com/NASAWorldWindResearch/WorldWeather. Accessed 12 Sep 2016.
Valentini L, Brovelli MA, Zamboni G. Multi-frame and multi-dimensional historical digital cities: the Como example. Int J Digit Earth. 2014;7:336–50.
Ward K. Remote sensing imagery from NASA Earth Observations (NEO). 2016. http://neowms.sci.gsfc.nasa.gov/wms/wms. Accessed 12 Sep 2016.
Warmerdam F, Open Source Geospatial Foundation. GDAL - Geospatial Data Abstraction Library. 2012. http://www.gdal.org/.
Warmerdam F, Open Source Geospatial Foundation. GDAL Raster Formats. In: GDAL - Geospatial Data Abstr. Libr. 2016a. http://www.gdal.org/formats_list.html. Accessed 3 Sep 2016.
Warmerdam F, Open Source Geospatial Foundation. GDAL Vector Formats. In: GDAL - Geospatial Data Abstr. Libr. 2016b. http://www.gdal.org/ogr_formats.html. Accessed 3 Sep 2016.
The research for this contribution did not receive any funding.
FP carried out researching relevant information and did the main editing. MAB and GZ developed the part regarding Java-based solutions. MP worked in completing the description on implementation. GP and EK contributed to descriptions in the solutions presented in the result section. GP collaborated also in the description regarding future developments of the NASA World Wind API. PH overviewed the structure and contents of all text and contributed to introduction. All authors read and approved the final manuscript.
The authors declare that they have no competing interests.