An open source virtual globe rendering engine for 3D applications: NASA World Wind
© The Author(s). 2017
Received: 18 August 2016
Accepted: 2 February 2017
Published: 27 February 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 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.
Availability and requirements of NASA World Wind’s two main SDKs
Web World Wind
Project home page
Updated video card drivers; Windows and Linux: Oracle Java Runtime Environment (JRE) 1.6.0 update 10; Mac OS X: JRE 1.7.0
NASA open source agreement version 1.3a
NASA open source agreement version 1.3
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.
Web World Wind
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.).
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.
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
Historical data – WebCarte
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.
Data access and analysis – Quake Hunter
Education and information dissemination – Space Birds
Visual data analysis – World Weather
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.
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.
Open AccessThis article is distributed under the terms of the Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), which permits unrestricted use, distribution, and reproduction in any medium, provided you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license, and indicate if changes were made.
- 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.View ArticleGoogle Scholar
- 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.View ArticleGoogle Scholar
- 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.View ArticleGoogle Scholar
- 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.View ArticleGoogle Scholar
- 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.Google Scholar
- Brovelli MA, Zamboni G. Virtual globes for 4D environmental analysis. Appl Geomatics. 2012;4:163–72. doi:10.1007/s12518-012-0091-3.View ArticleGoogle Scholar
- 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.Google Scholar
- Evenden G, Warmerdam F. Proj. 4--cartographic projections library. 1990.Google Scholar
- 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.Google Scholar
- Herring J. Opengis implementation standard for geographic information-simple feature access. 2010.Google Scholar
- Hogan P, Coughlan J. NASA World Wind, Open Source 4D Geospatial Visualization Platform: *.NET & Java*. In: AGU Fall Meeting Abstracts. 2006.Google Scholar
- Hogan P, Gaskins T. GeoSpatial Visual Analytics. Dordrecht: Springer Netherlands; 2009.Google Scholar
- MapQuest I. Nominatim Search Service Developer’s Guide. 2016. https://open.mapquestapi.com/nominatim/. Accessed 12 Sep 2016.Google Scholar
- Militão G. Chang B. Earthquake Activity Visualizer: Quake Hunter; 2016. https://github.com/NASAWorldWindResearch/Quake-Hunter.Google Scholar
- Miller JR, Gaskins T. Computations on an Ellipsoid for GIS. Comput Aided Des Appl. 2009;6:575–83.Google Scholar
- 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.Google Scholar
- 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.View ArticleGoogle Scholar
- 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.View ArticleGoogle Scholar
- 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.View ArticleGoogle Scholar
- Schubert B, Collins D. NASA World Wind organization website. 2016. https://nasaworldwind.github.io/. Accessed 29 Sep 2016.Google Scholar
- Sharif K, Salah F. NASA World Weather. 2016. https://github.com/NASAWorldWindResearch/WorldWeather. Accessed 12 Sep 2016.Google Scholar
- 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.View ArticleGoogle Scholar
- Ward K. Remote sensing imagery from NASA Earth Observations (NEO). 2016. http://neowms.sci.gsfc.nasa.gov/wms/wms. Accessed 12 Sep 2016.Google Scholar
- Warmerdam F, Open Source Geospatial Foundation. GDAL - Geospatial Data Abstraction Library. 2012. http://www.gdal.org/.Google Scholar
- 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.