Wednesday, December 3, 2008

World Wind at the American Geophysical Union

Patrick Hogan the NASA World Wind project manager will be presenting the World Wind Java SDK at the 2008 American Geophysical Union Fall Meeting in San Francisco December 15-19.

Although Google Earth and KML have an overwhelming presence, the World Wind Java SDK is being used by an increasing number of professionals:

Patrick Hogan presentations:

During Patrick's presentation, VEGA will also show a new version of EOLI (Earthnet OnLine Interactive), a client developed for the European Space Agency for the Earth Observation, Multi-mission, Catalogue and Ordering Services, using the World Wind SDK.

Thursday, November 20, 2008

World Wind Multitouch Wall in Public Underground

Johannes Schöning from the University of Muenster Institute for Geoinformatics, Germany has posted a video showing their multitouch wall version of World Wind Java installed in a public place.



During a technology exhibit we installed a FTIR based large scale multi-touch screen in pedestrian underway in the city of Münster, Germany. In this video we show a few impressions of this project called: "Hightech Underground".

Build your own multi-touch screen - see link below

See this previous post about the same multitouch World Wind project - May 2008.

> YouTube video here.
> Some pictures of the event.
> Build your own multitouch screen with the MultiTouch Bootcamp.
> Improving interaction with virtual globes through spatial thinking: helping users ask "why?", a research paper from the same author.

Tuesday, November 18, 2008

CNES e-CORCE: Earth At One Meter Every Week

The French Centre National d'Etudes Spatiales (CNES) has come up with an innovative satellite remote-sensing system capable of generating a high-resolution picture of Earth on the Web, refreshed every week. Four patents have already been filed for the concept, called e-CORCE that could start broadcasting on the Internet by 2014.

CNES e-CORCE
Although still on paper, the plan is to use a constellation of thirteen low cost micro satellites capable of imaging the globe at a resolution of one meter. Each of these orbiting webcams would use a smart "spycho-visual" compression scheme to drastically reduce the amount of data to be transmitted in real time to a grid of fifty ground stations connected to the Internet.

Whether this particular project will become a reality or not, it shows what the current trends in micro satellites technologies, data compression and grid computing will allow in the near future. How privacy groups, military and security agencies around the world will react to it remains to be seen though.

Tuesday, October 7, 2008

World Wind Java 0.6 Screenshots

While the next alpha 0.6 version of the NASA World Wind Java SDK is not ready yet, here are some screenshots showing some of the coming features.

NASA World Wind Java SDK 0.6
NASA World Wind Java SDK 0.6Airspace shapes and volumes, terrain conforming or not.


NASA World Wind Java SDK 0.6Distance and area measure tools, terrain following or not.


NASA World Wind Java SDK 0.6View visual controls layer, provides a GUI to pan, tilt, zoom or look around.


NASA World Wind Java SDK 0.6
NASA World Wind Java SDK 0.6Extended track markers shapes and attribute management.


Friday, September 12, 2008

Elevated Surface Image for World Wind Java

A few WWJ forum members have asked whether it would be possible to have a surface image that could be rendered somewhat 'up in the air' instead of painted on the globe surface. The idea would be to show the global clouds image for instance at 10 km altitude. Although the feature is not part of the actual SDK, i happen to have created some time ago a sub class of SurfaceImage that does exactly that.


Download TexturedLayer.java (updated for WWJ 0.6 December 7, 2009), remove the .txt extension and add to the SDK render package.

The class is very similar to SurfaceImage and is instantiated the same way, but the texture will be painted on a 'flat layer' at a given altitude that must be set using the setElevation() method.

Note that the cloud image does not contain an alpha channel and will obscure the underlying imagery. In the .net version of World Wind, the "Global Clouds" plugin does some post processing after each new image is downloaded to create an alpha channel and save the resulting image as a .png. In that case the alpha is just a copy of the black and white cloud image.

However, i found you could get somewhat better results by replacing the cloud image with plain white - the alpha channel will then 'modulate' the white and produce a more realistic effect without the 'grayish' shades where the cloud coverage is less then one hundred percent.

The bottom line is that some additional work is to be done to get a decent global cloud image over the World Wind Java globe, even with this 'elevated' surface image class. The above screenshot is using a static post processed image - not the 'real time' online version.

Another usage of this textured layer could be to use a plain blue texture with some transparency and somewhat simulate the sea level as with the "Global Flood" WW.net plugin (see this forum thread).

Monday, September 1, 2008

Truncated Earth in World Wind Java

I wanted to try this for a while and i'm pleased to see it works rather well considering how little code is involved. Here is a simple World Wind Java example application that will produce a truncated globe.


Download TruncatedEarth.java, remove the .txt extension and add to the SDK examples package.

Update Nov. 20: once again there appear to be a dependency on the not yet publish SDK 0.6. Please check this forum post for a workaround with version 0.5.

The code illustrates how to extend and override the globe elevation model to 'take out' a slice of the planet. Although rough coloring of the section interior is easily done with some gradients and surface images, placing a texture on the section side would require a bit more then that.

Wednesday, August 6, 2008

Wii Remote and World Wind Java

Fabrizio Giudici, a World Wind Java early adopter, reports yet again a Wii remote related demo involving the NASA SDK. The project called Montenav demonstrated by Gianpaolo Melis at the JUG Genova uses the Nintendo hardware to control the WW globe using gestures.


In the above video the red and green dots are the two hands being tracked simultaneously. Gianpaolo Melis used IR leds attached to his hands to communicate his gestures to a fixed Wii remote.

For more details see Fabrizio Giudici web log.

Last January i reported another project involving Wiimotes and World Wind - the .net version. Recently, j_c_maglio, a WWJ forum member mentioned working on a related project.

Saturday, August 2, 2008

OneGeology World Layer for World Wind Java

Did you ever wonder what the Earth would look like if you stripped it of water and vegetation, revealing the underlying rocks?

The OneGeology project aim is to create dynamic digital geological map data for the world. It is an international initiative of the geological surveys of the world who are working together to achieve this ambitious and exciting venture.


Here is a WMS layer for NASA World Wind Java showing the 1:25M Geologic Units for the entire planet, provided by the french BRGM. Download OneGeologyWorldLayer.java, remove the .txt extension and add to the SDK layers.Earth package. Note that this layer is only a coarse 'preview' of the underlying datasets and will not yield much details if you zoom closer.

The OneGeology web site features a 2D map browser - the OneGeology Portal, that allows you to explore in more details the different layers provided by the participating organizations.

The official launch of OneGeology will happen at the 33rd International Geological Congress (IGC) in Oslo, August 6th - 14th 2008.

See this Nature article for an overview of the project.

Tuesday, June 3, 2008

World Borders alternate layers for WWJ

The 'broken' Country Boundaries layer has been an issue for some time in World Wind Java... After a quick search, here are three alternate layers to fill the gap until the NASA WMS server gets up and running again.

Metacarta country_02 layer - 12 levels, no coastline - WorldBordersMetacartaLayer.java


Freemap factbook layer - 12 levels, not so clean - WorldBordersFreemapLayer.java


Katrina OWS world layer - 5 levels only - WorldBordersKatrinaOWSLayer.java

Friday, May 9, 2008

JavaOne 2008 World Wind Java presentation slides

The JavaOne 2008 Power Point presentation for World Wind Java is now available.

World Wind Java presentation slides for JavaOne 2008
You will find some interesting bits about the new WMS server included in the SDK release 0.5.

Thursday, May 8, 2008

World Wind Java On a Multi-Touch Wall

Almost a year after the first World Wind Java SDK release in may 2007, a number of applications have emerged and have been gathered on the WWJ demo page. Whether it be for exploring the ocean depth, controlling cameras flying in the sky, tracking satellites or visualizing information clusters, WWJ is indeed showing up in a wide range of activities.


a


The University of Muenster Institute for Geoinformatics has now used WWJ for a multi-touch wall project. From Johannes Schöning IFGI:

"We developed a Multi-Touch version of Nasa World Wind on a 7.9 x 6.2 feet tall FTIR (frustrated total internal reflection) based Multi Touch wall. This implementation is based on a multi-touch tracking library developed within the Project: Multitouch at the Deutsche Telekom AG Laboratories, which is part of the TU Berlin."
Videos can be seen on YouTube or Google Video.de.

Friday, May 2, 2008

NASA World Wind Java SDK 0.5 released

NASA World Wind Java SDK alpha 5 - 0.5.0, has been released today. It has been five month since the previous 0.4 last december and a lot has been done since. However, although a 1.0 was in the plans, a lot remains to be done for the first stable version and you may not find all the fixes you wished for yet. Download WWJ SDK 0.5 (Zip 14.4M).

Among the most notable changes, my favorite is the new view handling which allows you to navigate with much more precision over elevated terrains as well as underwater. What is really nice is that you can now get very close to the ground and the 'orbit center point' is always anchored where you would expect, on the surface, in the middle of the viewport.

WorldWind Java 0.5Mount Rainier and Spirit Lake from inside Mount Saint Helens crater, WA, USA.

A lot of work has been done on the server side of the project. A free and open source WMS server is now included with the SDK, which itself has been deployed on a much faster network. Both Blue Marble Next Generation twelve month and I Cubed Landsat are now served via this new WMS infrastructure. Other datasets will be integrated, some 1m US NAIP among them.

Mount Olympus crater, Mars, THEMIS Color layer

As expected, you will find the Moon and Mars globes with their full layer sets from the NASA servers - Mars data seems slow to download these days though.

WorldWind Java 0.5 - Flat WorldsLast 7 days USGS earthquakes on Mercator world

Flat worlds with projection switching are now ready for prime time - or so we hope. You will find a new example application showing the latest USGS earthquakes over a Mercator world - or a modified sinusoidal if so you wish.

A 'Restorable' interface has been added and implemented in a number of classes. Think of it as a form of serialization, it allows to save an object state in an XML document and back. For instance, you can now easily save the view state - eye position, zoom, pitch angle, heading... in one step as a text string and restore it as easily.

World Wind Java 0.5 - Open Street Map layerOpen Street Map layer over San Francisco, CA, USGS Urban Area layer

These are just a few of the many goodies you will discover inside this release. Tiled image layers have been fixed and will not wait anymore for lower res tiles to download before showing the needed ones. There is a 1 meter NAIP layer for California which is quite crisp, the Open Street Map layer, a rather complex MGRS graticule layer, new minimize/maximize buttons in the terrain profile layer graph... Surface images from a remote http source, faster polylines and more.

Be aware that some classes have been moved around. For instance, all non Earth specific layers have been moved from layers.Earth to layers - that involves FogLayer, ScalebarLayer, SkyColorLayer, SkyGradientLayer, StarsLayer, TerrainProfileLayer and WorldMapLayer.

Check this WWJ Forum post for a change list and discussion, see the new WWJ Demo page for webstart examples, applets and user applications, and go to World Wind Central for everything else. Enjoy!

Sunday, April 20, 2008

Geosignal French maps in WWJ

Toulouse based Geosignal has made freely available for more than a year a number of interesting layers on their WMS server. Here is a layer class for WorldWind Java that will bring together eight levels of details from the RASTER maps serie.

Geosignal French maps in WorldWind Java
Download GeosignalRasterWMSLayer.java, remove the .txt extension and add to the SDK layers.Earth package.

Geosignal French maps in WorldWind Java
The layer covers continental France and Corsica. The finest levels include street maps for most urban areas.


Geosignal French maps in WorldWind Java

Friday, April 11, 2008

Ray Casting and Line of Sight for WWJ

It is a common issue to be able to find out where in the world does a line intersect the terrain surface. The WorldWind Java SDK allows to resolve the intersection from the eye point of view using the pick process - based on drawing objects in unique colors, but that does not help much when you need to compute such intersections from another perspective, like for line of sight calculations.

Ray casting and line of sight calculations in WorldWind JavaLine of sight calculation from the top of Mount Jackson (3064m),
Glacier National Parc, Montana, USA.

Here is a helper class to answer such questions, along with an example application that will display areas from where you can see a central point.

Download RayCastingSupport.java and LineOfSight.java - remove the .txt extensions, save the first one in 'util' and the application in 'examples'. You may also need the crosshair layer.

Update april 18: there appears to be two dependencies on the not yet published SDK version: centerPosition calculation and PatternFactory.blur() - see this post comments. You can simply comment out the blur, or replace it with a ConvolveOp, and change the center position line with:
Position centerPosition =
     RayCastingSupport.intersectRayWithTerrain(globe,
           view.getEyePoint(), view.getForwardVector(), 30, 3);


Ray castingRay casting - figure 1

The ray casting code samples points at regular intervals along the 'ray' until it finds one which elevation is below ground - figure 1.1. It then recursively resamples the last segment every tenth of the previous sample length - fig 1.2, until that sampling step is smaller then or equal to the required precision.

The longer the initial sample length, the quicker an intersection will be found - 1, and the sub sampling process will start narrowing onto the terrain - 2. However, the larger the value the less accuracy you will get since the ray will be able to go through some surface features in just one step and completely miss them. The default values for sampling length and precision are 100 meters and 10 meters and can be overrided in the methods arguments.

Note that the example application also shows how to 'paint' both on the terrain and on the screen using BufferedImage, Java 2D, SurfaceImage and ScreenAnnotation classes.

Thursday, April 3, 2008

WorldWind Java Splash Screen

Nothing fancy, fast or optimized, just a frame with the NASA WorldWind splash bitmap that has been in the SDK since day one.


Download SplashScreen.java, remove the .txt extension and add to the SDK examples package.

To use it, create a no argument new instance of SplashScreen at the beginning of your application main() and dispose of it just after the main frame has been set visible.

Disclaimer: note that a 'good' splash screen that displays fast without slowing your application startup is somewhat a 'hacky' business for which you can find various kinds of tricks. This example doesn't implement any of them, and will likely make your program slower to start.

Thursday, March 20, 2008

OpenStreetMap layer for WorldWind Java

WWJ forum user linnuxxy asked whether OpenStreetMap data could be displayed in WWJ to which m_k provided quite a few useful pointers. This layer will access the 'osm-4326-hybrid' WMS layer from hypercube.telascience.org. Although it is not quite up to date, it renders nicely over the WorldWind terrain.

OpenStreetMap layer for WorldWind Java
Download OpenStreetMapWMSLayer.java - remove the .txt extension and add to the SDK layers.Earth package.

You may want to try the 'osm-4326' too - same thing on a white background (with additional shading below):

OpenStreetMap layer for WorldWind Java
The hybrid layer blends perfectly into the BRGM geology layer too - with shading:

OpenStreetMap layer for WorldWind Java
See this WWJ Forum thread for more info and discussion.

GeoNames Layer for WorldWind Java

This is the first iteration of a layer that displays city names for the current view, off the GeoNames web service.

GeoNames Layer for WorldWind Java
Download GeoNamesLayer.java, remove the .txt extension and add to the SDK layers.Earth package. Note that you may have to refactor the removeAllRenderables() method call into clearRenderables() for 0.4.1 - see this post comments.

Right now the layer will start showing names below 1500km but doesn't cache anything. It just sends requests to the service and displays the latest results. Sometime, names disappear, then reappear... more work is to be done to smooth things out. The service doesn't let you know whether a location is a large city or a tiny village either.

Still it provides many more world city names then are now displayed in WWJ. GeoNames also offers many kinds of geographic features that could be combined here, including the locations for which there is a geo referenced article in Wikipedia.

Sunday, March 2, 2008

Sunday, February 24, 2008

Procedural Shading for WorldWind Java

Following up on the experimental procedural layer scheme, here is a shading layer that will compute lighting from a fixed south-east light source (morning light in northern hemisphere).



Download ProceduralTiledImageLayer.java (updated Sept 2009) and ProceduralShadingLayer.java. Remove the .txt extension and add to your SDK layers package.

Be sure to read my previous post regarding usage and limitations of this process (availability of elevation data and caching).

Note that light on shaded printed maps usually comes from north because when seen from above, it does give the proper feeling for relief, although it is unnatural in the northern hemisphere where the sun never shines from the north.

This is because our brain is used to understand shadows produced by a light source coming from above - in real life, light almost never comes from below. This is why craters on the Moon or other planets often look like bumps instead of holes - you need to turn the image upside down for your brain to properly understand the lighting.

Saturday, February 23, 2008

3D Models in WWJ

WWJ forum member toolshed has recently posted some basic code to load .obj and .3ds models into the SDK:

WorldWind Java 3D models - ISS
WorldWind Java 3D models - StarWars Fighter
Check this thread for code and discussion.

Monday, February 18, 2008

Procedural Image Layers for WorldWind Java

Here are some experimental classes to produce procedural (computed) tiled image layers. The test layer will create elevation colored tiles on the fly:


Download ProceduralTiledImageLayer.java (updated Sept 2009) and ProceduralTestLayer.java (updated feb. 24). Remove the .txt extension and add to your SDK layers package.

To use the test layer, add an instance to your layer list and set its wwd reference - setWwd(), otherwise it wont be able to produce the tiles (it needs to query the globe elevations).

A couple things to note: once a tile has been created it will be cached and wont be recomputed. That means that if you change the 'formula' that produced those tiles, you must either direct them to a different cache folder, or clear the previous one.

There are many potential applications for procedural tiles. Just with the elevation data, you can produce a great variety of 'elevation colored' maps, you can compute shading, cast shadows or even draw 'line of sight' areas. However, when querying elevations from the globe, you get the 'best available' elevations, meaning that if elevation data has not yet been loaded, the tiles will be produced out of less precise data and would need to be recomputed once better data is available - which it is not doing right now.

Edit feb. 28: to get the best results, i recommend to keep the layer off until you have zoomed onto the area of interest and elevation data has been properly downloaded and then loaded into memory. Tilt the view and look around to force loading on a wider range, then turn on the procedural layer.

Other potential applications include multi resolution rasterized vector data (country borders, roads...). I have to see how this could alleviate some limitations of the actual surface shapes. But that would only work well with static data - not the kind that changes all the time.

See this related WWJ Forum thread.

Tuesday, February 5, 2008

WorldWind Java flat worlds screenshots

Flat worlds are coming together for the next release of the WorldWind Java SDK:

Annotations over a Plate Carrée projection

Terrain profile tool

AWT1Up demo application

GlobalGridAboveSurface example on Plate Carrée

Global cloud image from a remote surface image

Modified sinusoidal projection

I3 Landsat new WMS layer on Mercator projection

Sunday, January 20, 2008

Crosshair Layer for WorldWind Java

It was kind of missing to the SDK... here is a simple crosshair layer and a couple associated bitmaps.


Download WWJ_CrosshairLayer.zip (9k) and add the three files to your SDK source tree.

Monday, January 7, 2008

Control WorldWind by moving your head around

Following in the steps of Johnny Chung Lee from Carnegie Mellon University, WorldWind developer Nigel Tzeng from the John Hopkins Applied Physics Lab, made a very nice demo of a 'desktop virtual reality display' for WorldWind .Net - using a Wii remote:




See this WorldWind forum thread for discussion, and Johnny Lee Wiimote Desktop VR faq on his blog.