NASA World Wind | Server

This file contains instructions on installing a copy of "World Wind Server", a Web Mapping Service server. It covers requirements for both hardware and software, installing, customizing the client to display data, and testing the server.

Additional information can be found on the World Wind Central Forum.


Work in progress!


  1. Requirements
    1. Hardware
    2. Software
  2. Installing
    1. Full install for Windows Server 2003 & 2008
  3. Configuration
    1. Universal
    2. BMNG
    3. I3 LandSat
    4. Elevation data
    5. DTED data
  4. Configuration extras
    1. DTED data
  5. Running the server
  6. Testing
  7. Modifying World Wind




The server can be installed on a wide range of hardware. It can run on a laptop alongside the client, or it can reside in a server environment running on many servers backed by multiple storage arrays. The World Wind Project currently hosts the core set of data (Blue Marble Next Generation, SRTM / NED elevation and i3 LandSat7) using two Sun SunFire 4500 and two Sun Blade X8420 servers.


java Java Development Kit (JDK 1.6 or newer) is required. This set of instructions assumes Java is accessible from the command prompt.
jogl JOGL (Java bindings for OpenGL)
gdal GDAL (Geospatial Data Abstraction Library)
NASA World Wind Server (For Java)



Full install for Windows Server 2003 and 2008
For installations where the server handles both processing and storage, support programs can be installed directly to the server.

  • Download and install FWTools (Version 2.3.0) for Windows 32bit. This package has GDAL components.
    (default directory C:\Program Files\FWTools2.3.0)
  • Download and install Java (JDK 6 Update 13) for Windows, Multi-language.
    (default directory C:\Program Files\Java)
    • During the install process, accept the prompt to install JRE.
  • Download and extract Java JOGL (Release build Version 1.1.1) for Windows i586 to a temporary directory
    • Copy the contents in the \lib\ directory to c:\server\jogl
    • c:\server\jogl\gluegen-rt.dll, c:\server\jogl\gluegen-rt.jar, c:\server\jogl\jogl.dll, etc
  • Download and extract World Wind Server (Version 0.6.2) to a temporary directory
    • Copy all the contents to c:\server\worldwindserver
    • c:\server\worldwindserver\lib, c:\server\worldwindserver\WEB-INF, c:\server\worldwindserver\WMS.jar, etc.
  • Create an empty folder c:\server\tmp




All installations of World Wind Server requires some settings to be changed to the configuration files. You'll need your server's public hostname or an IP address and a destination port. The original World Wind server uses port 80 which is the default port used by web sites.

  • Open the file c:\server\worldwindserver\WEB-INF\config.xml with a text editor.
    • Search for the string @PORT@ and replace with a desired port.
      (default is 8080)
    • Search for the string @GDALPATH@ and replace with gdal's home directory.
      (default is C:\Program Files\FWTools2.3.0\bin)
    • Search for the string @TEMPDIR@ and replace with an ideal location.
      (default is c:\server\tmp Make sure this directory exists)
    • Create a new entry inside <server> with <online-resource>@resource@</online-resource>
      • @resource@ should point to the host name or IP address of the server followed by the port and "/wms?"
        (for example or
    • Save and close config.xml
  • Open the file c:\server\worldwindserver\WEB-INF\capabilities_template.xml with a text editor.
    • Search for the string @hostname@ and replace with just the hostname or IP address three times.
      (for example or
    • Search for the string @PORT@ and replace with a desired port three times.
      (default is 80)
    • Save and close capabilities_template.xml

Notes on adding data
The World Wind WMS server is designed to take large pools of geotiff imagery and export data via WMS. For performance reasons, data in Geographic projection and GeoTIFF format is handled best.

BMNG sample

Adding BMNG data
The Blue Marble Next Generation data set is part of the core collection of World Wind data. The original raw PNGs can be found at the NASA Earth Observatory. The server requires this data to be converted into Geo TIFFs, adding reference coordinates.

  • Open the file c:\server\worldwindserver\WEB-INF\config.xml with a text editor.
  • Add the following entry inside <wms-config>

<mapsource name="bmng200401" title="BlueMarbleNG 01/2004">
     <description keywords="NASA; Blue Marble; Global Imagery: 2004">Nasa's BlueMarbleNG, 2004</description>
     <property name="BlueMarble500M.defaultTime" value="200401"/>
     <property name="BlueMarble500M.namingscheme.prefix" value="world.topo.bathy" />
     <property name="BlueMarble500M.namingscheme.suffix" value="gtif" />
     <property name="gov.nasa.worldwind.avkey.LastUpdateKey" value="2009-03-24 10:55:00" />

  • Search for the string @bmnglocation@ and replace with the data's home directory.
    (for example C:\data\imagery\BmngWMS)
  • Continue adding new <mapsource> entries replacing text accordingly
    (bmng200401 with bmng200402, BlueMarbleNG 01/2004 with BlueMarbleNG 02/2004, 200401 with 200402) etc
  • Add more layers as needed.
  • Save and close config.xml
i3 LandSat sample

Adding I3 data
I3 is also part of the core of World Wind data. It's LandSat7 based imagery, allowing up to 15 meters per pixel. This data set is over 3 TB so it makes use of preview imagery.

  • Open the file c:\server\worldwindserver\WEB-INF\config.xml with a text editor.
  • Add the following entry inside <wms-config>


<mapsource name="esat" title="Landsat">
     <description keywords="Landsat"></description>
     <property name="wavelet_preload_size" value="128" />
     <property name="wavelet_image_threshold" value="512" />
     <property name="wavelet_encoding_root_dir" value="@wvtslocation@" />
     <property name="gov.nasa.worldwind.avkey.LastUpdateKey" value="2009-03-24 10:55:00" />

  • Search for the string @landsatlocation@ and replace with the landsat data's home directory.
    (for example C:\data\imagery\eSAT_World_WMS2)
  • Search for the string @wvtssatlocation@ and replace with the landsat wavelet data's home directory.
    (for example C:\data\imagery\eSAT_World_WMS.wvts)
  • Save and close config.xml
elevation sample

Adding Elevation data
Elevation data adds 3D terrain to World Wind. Using a combination of ETOPO2, NASA SRTM, and USGS NED data, World Wind can display imagery complete with mountains, hlls, and even ocean trenches.

  • Open the file c:\server\worldwindserver\WEB-INF\config.xml with a text editor.
  • Add the following entry inside <wms-config>


<mapsource name="mergedSrtm" title="mergedSrtm">
     <description keywords="mergedSrtm">mergedSrtm</description>

  • Search for the string @elevationroot@ and replace with the data's home directory.
    (for example C:\data\elevations)
  • Now we begin adding layers in order of low resolution to high resolution.
  • In this example we add a layer that has global coverage, bathymetric data, of reduced resolution.

     <mapsource name="srtm30" title="SRTM30 Plus">
          <description keywords=""/>
          <scale-hint min="0.012" max="0.008333330" />

  • Search for the string @elevationglobal@ and replace with the data's home directory.
    (for example C:\data\elevations\srtm30_tiled)
  • Next, another layer is added on top, in this case, NASA SRTM data at full resolution.

     <mapsource name="srtm3" title="SRTM3 V4.1">
          <description keywords="SRTM V4.1 (Finished and filled)" />
          <property name="debug" value="ON" />
          <property name="filenaming_format" value="%s%ssrtm_%02d_%02d.tif" />
          <scale-hint min="0.009" max="0.00083333" />

  • Search for the string @elevationSRTM@ and replace with the data's home directory.
    (for example C:\data\elevations\SRTM3_V4.1)
  • Finally, another layer is added on top, USGS NED data at full resolution.

     <mapsource name="NED" title="USGS NED">
          <description keywords=""/>
          <scale-hint min="0.004" max="0.00027777" />

  • Search for the string @elevationNED@ and replace with the data's home directory.
    (for example C:\data\elevations\ned_tiled)
  • With all the layers in place, we close the original <mapsource> tag


  • Save and close config.xml
DTED sample

Adding DTED data
The server also supports Digital Terrain Elevation Data (DTED) elevations.  The DTED directory and file structure must follow DTED database naming conventions.

  • Open the file c:\server\worldwindserver\WEB-INF\config.xml with a text editor.
  • In this example, we keep the DTED layer seperate from the original elevation data set. It still uses one component from the original as a base layer, and merges all the data from DTED folders.
  • Add the following entry inside <wms-config>

<mapsource name="mergedDTED" title="mergedDTED">
     <description keywords="mergedDTED">mergedDTED</description>
     <property name="gov.nasa.worldwind.avkey.ElevationMinKey" value="-11000" />
     <property name="gov.nasa.worldwind.avkey.ElevationMaxKey" value="8850" />
     <property name="gov.nasa.worldwind.avkey.MissingDataFlag" value="-9999" />

     <mapsource name="srtm30_4DTED" title="SRTM30 for DTED">
          <description keywords="Low resolution SRTM 30 for entire globe">Low resolution SRTM 30 for entire globe</description>
          <property name="gov.nasa.worldwind.avkey.MissingDataValue" value="-32768" />
          <property name="gov.nasa.worldwind.avkey.MissingDataFlag" value="0" />

  • Search for the string @DTEDroot@ and replace with the data's home directory.
    (for example C:\data\elevations)
  • Search for the string @elevationglobal@ and replace with the data's home directory.
    (for example C:\data\elevations\srtm30_tiled)
  • DTED has a specific folder and file structure that must be preserved.
    • Correct Example:
      • DTED0\W140\N35.dt0
    • Incorrect Example:
      • DTED1\DTEDfiles\W140\N35.dt0
    • Recommended structure:
      • DTED0\W140\N35.dt0
      • DTED1\W140\N35.dt1
      • DTED2\W140\N35.dt2
    • Avoid this structure:
      • DTED0\DTED123\DTED\W140\N35.dt0
      • DTED0\DTED209\DTED\E130\S23.dt0
  • To add DTED, add the following lines

     <mapsource name="SampleDTED" title="SampleDTED">
          <description keywords="Sample DTED,DTED0,DTED1,DTED2">Sample DTED (levels DTED0,DTED1,and DTED2)</description>

          <property name="gov.nasa.worldwind.avkey.ElevationMinKey" value="-11000" />
          <property name="gov.nasa.worldwind.avkey.ElevationMaxKey" value="8850" />
          <property name="level-switch-algorithm" value="exact" />
          <property name="gov.nasa.worldwind.avkey.MissingDataFlag" value="0" />
          <property name="gov.nasa.worldwind.avkey.MissingDataValue" value="-32767" />

  • Search for the string @DTEDroot@ and replace with the data's home directory.
    (for example C:\data\elevations)
  • Note the server will automatically seek out folder names like "DTED0", "DTED1", and "DTED2"
  • Save and close config.xml


Configuration Extras

Caching with Squid

DTED has several property tags that can tweak the importing and exporting of elevation data. These need to be placed within the <mapsource> tag.

  • Property name can match individual DTED layers with specific folders.

<property name="dted0_path" value="C:\data\elevations\DTED0" />
<property name="dted1_path" value="C:\data\elevations\DTED1" />
<property name="dted2_path" value="C:\data\elevations\DTED2" />

  • Missing Data Siginal: If the client does NOT specify a BGCOLOR value in the GetMap request and the response has missing areas, those areas will be filled with default.nodata.value. Mssing data areas will be filled with a value specified by a BGCOLOR parameter from the GetMap request.

<property name="gov.nasa.worldwind.avkey.MissingDataFlag" value="-9999" />

  • Missing Data Replacement: Every dataset (elevation or imagery) may contain missing areas which a filled by some value; most datasets specify a value of "-32768" or "-32767", but some , like USGSNED have "0". One way to find out for sure, execute "gdalinfo" from FWTools and lookup the "No Data" field. Normally, the World Wind server will attempt to read the default missing value from data. This value is used to ignore pixels while reading an image or elevation file.

<property name="gov.nasa.worldwind.avkey.MissingDataValue" value="-32768" />

  • Last Update: This is a value the server will update whenever the dataset associated with the layer changes. This is unnecessary for layers that don't change. The value is inherited from enclosing layers.

<property name="gov.nasa.worldwind.avkey.LastUpdateKey" value="2008-12-31 17:55:00" />

  • Performance Tuning: If the server receives a request that covers a large area (causing lots of tiles to be read), it can limit the number of tiles to be accessed. If left alone, there is a chance the server will try to assemble a low resolution tile even if each tile contributes only a single pixel. Usually, the client cancels a request within 5-10 seconds, so even if a server generates a tile, it most likely will never make to the client.

<property name="max_tiles_per_request" value="25" />


Running the server

  • The quickest way to run the server is a batch file in the World Wind server program folder.
    (default is c:\server\worldwindserver\startWMS.bat)
  • It is the same as running the following in the command prompt while in server's working directory.

java -Xmx1024M -classpath .;WMS.jar;lib\worldwind.jar;lib\jogl.jar;lib\gluegen-rt.jar;lib\activation.jar;lib\jaxb-impl.jar;lib\jsr173_1.0_api.jar;lib\jaxb-api.jar -Djava.library.path=lib gov.nasa.worldwind.servers.wms.WMSServer

  • This assumes all supporting programs, like Java, have been installed and configuration files set.



Testing imagery data

  • If the server has been configured with the default port, 80, it can be tested locally in a web browser with the link...


  • If the server is working, it will a return an xml file which your web browser may attempt to read. It should contain a listing of all the layers specified in config.xml. This sample image is generated by Firefox.

    partial xml getcapabilities sample

  • Test Blue Marble Next Generation with a specific WMS command. The link below will display an image like this one. (Ensure the URL is all on one line.)
    BMNG sample


  • Test I3 data with a command similar to BMNG, replacing the layer "bmng200407" with "esat". Using the same sample area, the server will return an image like this. (Ensure the URL is all one one line)
    sample i3


Testing elevation data

  • If the server has elevation data configured, you can test the server using the following link...


  • You can query the server to return an elevation tile similar in dimention to the imagery examples above. The webserver should return a headerless bill file. This type is ideal for use in World Wind but not for GIS applications.


  • You can verify all traffic, processing, and errors via a log file that is automatically generated by the server. This is located in the same program folder that the World Wind server exists with a name like wms0.log, wms1.log, etc. Note, this log is reset every time the server is run


Modifying World Wind

  • Adding or modifying a default data layer requires editing to World Wind's source code, specifically the xml files found in /src/config
  • To switch the server for Blue Marble Next Generation, open /src/config/BMNGWMSLayer.xml and replace the website address in the tags <GetCapabilitiesURL> and <GetMapURL>
  • The same also works for I3 LandSat7 data in /src/config/LandsatI3WMSLayer.xml


  • To change the default link for elevation data, open /src/config/EarthMergedElevationModel.xml


  • After saving changes to any of these files, recompile, and launch World Wind.