Using NASA’s World Wind Component in Your Java Technology Applications November 7, 2007
Posted by rovocom in software.Tags: java, technology
add a comment
World Wind is open-source software, developed by the National Aeronautics and Space Administration (NASA) that allows you to zoom from satellite altitude into any place on earth. Leveraging Landsat satellite imagery and Shuttle Radar Topography Mission (SRTM) data, World Wind lets you experience any part of earth’s terrain in visually rich 3D form, just as if you were really there. For instance, you can use World Wind to zoom in on the Himalayas or Mount Saint Helens, as shown in Figure 1. The combination of Landsat 7 imagery with SRTM data allows World Wind to display dramatic views of the earth at eye level. Users can literally fly across the world in any direction.
Figure 1. Mount St. Helens, Washington |
As fun as World Wind is to play with, that is not its purpose. Instead, World Wind is a Java technology component that you can integrate into your applications to incorporate 3D earth modeling. World Wind does all the hard work for you, such as dynamic image selection and retrieval for images of the earth’s topography.
In addition, because the software is open source and written in the Java programming language, you can build into the NASA World Wind Java 3D visualization technology. You are also free to extend or embed the component architecture for business, research, or education. The possibilities for portable, high-performance 3D graphics rendering are wide open.
What World Wind Is and Is Not
NASA World Wind visualization technology is not just cool software. Instead, it is a component that can be included in any application or applet that needs access to NASA’s world data and imagery. In addition, NASA has partnered with several organizations that also provide valuable data that you can use. World Wind has tremendous potential in science applications, educational software, and business and government use.
World Wind is not a copy of Google Earth, nor is it in competition with that software. Both NASA World Wind and Google Earth are sophisticated programs with amazing feature sets, and each has features that the other would benefit from. Despite how similar the programs seem, they differ significantly in focus, development history, and philosophy. Many people use both programs, depending on what they wish to accomplish. Google Earth is great for looking up any location on earth, and viewing earth data in different ways. But with World Wind, you can incorporate the component into your application to bring together your own data with data from other companies, or to use NASA data in new and innovative ways. For instance, World Wind can be use to create flight simulators, using earth or other planets, or it can be used to view data on specific diseases worldwide.
In addition, World Wind is not limited to information about the earth. In fact, you can use this component and modules to view the moon and other planets, or to look out into the universe, as shown in Figure 2. Because it was written to be extensible and replaceable, you can conform World Wind to whatever your needs are, and it will deal with complex and difficult image manipulation and handling.
Figure 2. View of Universe |
World Wind also includes a myriad of advanced functions and capabilities. In addition, World Wind benefits from diverse input from the open-source user community, which has the power to shape its development. This has led to a proliferation of add-ons and plug-ins.
NASA has released World Wind, written in the Java programming language, to improve its quality through peer review, maximize public awareness and the impact of NASA research, and increase dissemination of World Wind.
World Wind as Application or Applet
You can deploy World Wind within an application with Java Web Start software, or you can deploy it as an applet through the browser. World Wind has eight packages, and more will be available in the future:
gov.nasa.worldwind— The top-level world wind package.gov.nasa.worldwind.awt— Classes specific to use with Abstract Window Toolkit (AWT).gov.nasa.worldwind.formats.gpxandgov.nasa.worldwind.formats.nmea— Both are classes specific to GPS track formats.gov.nasa.worldwind.geom— Geometry and math classes.gov.nasa.worldwind.globes— Globes with earth, Mars, and so forth.gov.nasa.worldwind.layers— Imagery and other data to display on globes.gov.nasa.worldwind.layers.Earth— Layers specific to earth.
Creation of a World Wind Component in an Application
To create a World Wind component, simply create a frame and a window canvas, then listen for events.
- Add a
WorldWindowGLCanvasobject to aJFrameobject: - Listen for World Wind events:
Class MyWorldWindFrame extends Jframe
{
WorldWindowGLCanvas wwc = new WorldWindowGLCanvas();
this.getConentPane().add(wwc, BorderLayout.CENTER);
}
|
wwc.addSelectListener(new SelectListener()
{
public void selected(SelectEvent event) {...}});
|
Starting the World Wind brings up the component as a single application as shown in Figure 3.
Figure 3. Opening Screen. |
The WorldWindow and View Interfaces
Following is the WorldWindow interface:
set/getModel(Model)set/getView(View)getSceneController(...)pick(java.awt.Point)set/getInputHandler(...)
To add or remove listeners, use the following:
PositionListenerSelectListenerRenderingListenerrepaint()
Following is the View interface:
- Fields
- Position, direction, field of view, altitude, heading, pitch, roll, and so forth.
- Actions
apply()goto(lat/lon/elev/altitude)project(Point 3Dpoint)
- Compute
horizon()positionFromScreenPoint(...)rayFromScreenPoint(...)
Use of World Wind Within an Applet
To create an applet, you use the Java APIs for OpenGL (JOGL) Applet Launcher. The new JOGL Applet Launcher enables the creation and deployment of applets using 3D graphics through OpenGL without requiring the applet to be signed or performing any manual installation of software on the user’s computer. It works on any combination of operating system and CPU supported by JOGL, with a Java Runtime Environment (JRE) version 1.4.2 or later installed into the browser.
The following code snippet is typical of what you would use on the applet page to launch the World Wind component within an applet.
<applet code="com.sun.opengl.util.JOGLAppletLauncher"
width=400
height=260
codebase="http://www.tomgaskins.net/applet"
archive="jogl.jar,gluegen-rt.jar,jogl-demos.jar">
<param name="subapplet.classname"
VALUE="worldwinddemo.Applet1Up">
<param name="subapplet.displayname"
VALUE="WorldWind Applet Demo"> <param name="progressbar" value="true">
<param name="cache_archive"
VALUE="jogl.jar,gluegen-rt.jar,Applet1Up.jar">
<param name="cache_archive_ex"
VALUE="jogl.jar;preload,gluegen-rt.jar;
preload,Applet1Up;preload">
</applet>
|
Note that the Applet1Up.jar file, which contains the WorldWindApplet class, does not need to be signed. Sun Microsystems, Inc., signs the jogl.jar and gluegen-rt.jar file, which contain the JOGL Applet Launcher and supporting classes. This is the only Java code that needs to be signed to deploy applets using JOGL, and it is the only certificate the end user must accept.
Architecture and API
NASA’s extraordinary wealth of data, which can be measured in terabytes, comes from sources such as satellites orbiting earth and telescopes peering into deep space. NASA World Wind visualization technology can readily deliver geospatial data in the most compelling and accessible manner possible. Figure 4 is a simplification of how World Wind interacts with data systems.
Figure 4. World Wind System Architecture |
World Wind is a collection of components that interactively display 3D geographic information within applications using Swing, Abstract Window Toolkit (AWT), Standard Widget Toolkit (SWT), or other user interface toolkits. Figure 5 shows World Wind’s small number of replaceable components.
Figure 5. World Wind Architecture |
The World Wind API is defined primarily by interfaces, so you can selectively replace components with alternative components.
The application interface at the highest level is WorldWindow. Toolkit-specific implementations of the interface are provided for Swing/AWT.
In addition to WorldWindow, there are five major World Wind interfaces:
- The
Globeinterface represents a planet’s shape and terrain. - The
Layerinterface applies imagery or information to aGlobe. - The
Modelinterface aggregates aGlobeand theLayers to apply to it. The application typically interacts with the model to create a globe of the earth, or Mars, or whatever the model needs to be. It can even be the universe. - The
SceneControllerinterface controls the rendering of aModel. It is also responsible for giving the scene update, timing, and events, as well as for mapping user actions. - The
Viewinteractively controls the user’s view of the model.
In typical usage, applications associate a Globe object and several Layer objects with a Model object. Then they pass that model to a SceneController object, which displays the globe and its layers in a WorldWindow. The scene controller subsequently manages the display of the globe and its layers in conjunction with an interactive View interface that defines the user’s view of the planet.
The objects implementing these interfaces may be those provided by World Wind or those created by application developers. Objects implementing a particular interface may be used wherever that interface is called for. World Wind provides several Globe objects representing the earth, Mars, and the earth’s moon. And World Wind provides basic implementations of the Model, SceneController, and View interfaces.
The FrameController interface enables applications to control the integration of World Wind Java programming rendering into the application’s rendering.
All data is persisted to or drawn from the local computer by the file cache. The file cache manages multiple disk storage locations and unifies access to them. The file cache is a singleton, accessible through the WorldWind singleton.
Progress and the Future
More data is becoming available all the time on the planets, moons, stars, weather, satellites, and time series. Soon more data formats will be natively supported. The useful components coming are a layer manager, animation player, drag-and-drop functionality, and user interface (UI) helpers. Additionally, World Wind will include RSS feed support and APIs for scripting extensions. Lastly, future versions of World Wind will include Eclipse and NetBeans IDE integration.
For More Information
World Wind
World Wind Forums
JOGL Applet Launcher Test Page
JOGLAppletLauncher Class
Introduction to JOGL
Java Web Start Technology
Psychopathic IT projects: a five-point checklist November 7, 2007
Posted by rovocom in software.Tags: , : Project, Information, Management, Strategy, technology
add a comment
The worst IT projects are ill-conceived, poorly executed, and ultimately doomed to fail. I call them psychopathic IT projects.
Psychopathic individuals are cunning, pathological liars with no conscience, who nonetheless appear completely normal. Likewise, psychopathic IT projects hold the promise of great value, but cause only pain and suffering until they finally end.
Here’s my five-point checklist to help identify psychopathic IT projects:
- The project promises great strategic value. These projects are promoted as potentially transforming important aspects of the organization undertaking them.
- The project delivers no short-term value. Truly psychopathic projects don’t produce short-term value. They may appear temporarily beneficial until it becomes clear something is terribly wrong.
- The project is severely disruptive. Psychopathic projects eventually cause significant disruption to the organization. In extreme cases, a company may go out of business due to consequences inflicted by the project.
- Stopping the project requires external intervention. Drug interventions are well-known in cases of addiction. Likewise, halting a psychopathic project usually requires intervention by an external force, such as a regulatory or other auditing agency.
- There’s no lasting benefit. When a psychopathic projects ends, the best one can say is, “Thank God it’s finally over.” Ordinary projects fail; psychopathic projects destroy.
Differentiating a psychopathic IT project from an “ordinary” project failure isn’t always easy. If you suspect a project is truly psychopathic, disassociate yourself from the nightmare that’s surely coming.
Have you experienced a psychopathic IT project? Leave a TalkBack comment and describe what happened!
Most security breaches caused by careless human error November 6, 2007
Posted by rovocom in software.Tags: , Breach, Data, Internet, Productivity, Search, Security, Web Servers
add a comment
Security expert David Litchfield analyzed data breaches during 2007 and came up with interesting results:
Word documents and spreadsheets mistakenly left on a web server or indexed by a search engine account for 20.6% of the 276 breaches, both physical and digital, recorded up to the 23rd of October. This means that a fifth of the breach problem could be solved if companies actively and regularly hunted out such relict documents themselves.
David points out that these numbers are certainly low, since most criminals don’t report their activities.
In a related announcement, Chris Walsh reports on two studies that showed:
60-65% of breaches [are] due to lost or stolen media and 15-25% [of breaches are due to data] exposed online.
Here’s a table showing this data:

Based on these reports, it’s clear the vast majority of data breaches are caused by human error: data custodians inadvertently leaving files exposed to search engines, or else losing storage media (and laptops) containing secure data.
It’s tempting to believe that security data breaches result from the hands of evil hackers, secretly using advanced techniques to pry into sensitive and well-guarded computers. Unfortunately, the reality is that most breaches are caused by plain old carelessness.
Software Above the Level of a Single Device October 28, 2007
Posted by rovocom in software.Tags: , device, software
add a comment
One other feature of Web 2.0 that deserves mention is the fact that it’s no longer limited to the PC platform. In his parting advice to Microsoft, long time Microsoft developer Dave Stutz pointed out that “Useful software written above the level of the single device will command high margins for a long time to come.”
Of course, any web application can be seen as software above the level of a single device. After all, even the simplest web application involves at least two computers: the one hosting the web server and the one hosting the browser. And as we’ve discussed, the development of the web as platform extends this idea to synthetic applications composed of services provided by multiple computers.
To date, iTunes is the best exemplar of this principle. This application seamlessly reaches from the handheld device to a massive web back-end, with the PC acting as a local cache and control station. There have been many previous attempts to bring web content to portable devices, but the iPod/iTunes combination is one of the first such applications designed from the ground up to span multiple devices. TiVo is another good example.
iTunes and TiVo also demonstrate many of the other core principles of Web 2.0. They are not web applications per se, but they leverage the power of the web platform, making it a seamless, almost invisible part of their infrastructure. Data management is most clearly the heart of their offering. They are services, not packaged applications (although in the case of iTunes, it can be used as a packaged application, managing only the user’s local data.) What’s more, both TiVo and iTunes show some budding use of collective intelligence, although in each case, their experiments are at war with the IP lobby’s. There’s only a limited architecture of participation in iTunes, though the recent addition of podcasting changes that equation substantially.
Lightweight Programming Models October 28, 2007
Posted by rovocom in software.Tags: programming, software
add a comment
But much as the web succeeded precisely because it overthrew much of hypertext theory, substituting a simple pragmatism for ideal design, RSS has become perhaps the single most widely deployed web service because of its simplicity, while the complex corporate web services stacks have yet to achieve wide deployment.
This same quest for simplicity can be seen in other “organic” web services. Google’s recent release of Google Maps is a case in point. Google Maps’ simple AJAX (Javascript and XML) interface was quickly decrypted by hackers, who then proceeded to remix the data into new services.
Mapping-related web services had been available for some time from GIS vendors such as ESRI as well as from MapQuest and Microsoft MapPoint. But Google Maps set the world on fire because of its simplicity. While experimenting with any of the formal vendor-supported web services required a formal contract between the parties, the way Google Maps was implemented left the data for the taking, and hackers soon found ways to creatively re-use that data.
There are several significant lessons here:
- Support lightweight programming models that allow for loosely coupled systems. The complexity of the corporate-sponsored web services stack is designed to enable tight coupling. While this is necessary in many cases, many of the most interesting applications can indeed remain loosely coupled, and even fragile. The Web 2.0 mindset is very different from the traditional IT mindset!
- Think syndication, not coordination. Simple web services, like RSS and REST-based web services, are about syndicating data outwards, not controlling what happens when it gets to the other end of the connection. This idea is fundamental to the internet itself, a reflection of what is known as the end-to-end principle.
- Design for “hackability” and remixability. Systems like the original web, RSS, and AJAX all have this in common: the barriers to re-use are extremely low. Much of the useful software is actually open source, but even when it isn’t, there is little in the way of intellectual property protection. The web browser’s “View Source” option made it possible for any user to copy any other user’s web page; RSS was designed to empower the user to view the content he or she wants, when it’s wanted, not at the behest of the information provider; the most successful web services are those that have been easiest to take in new directions unimagined by their creators. The phrase “some rights reserved,” which was popularized by the Creative Commons to contrast with the more typical “all rights reserved,” is a useful guidepost.
Innovation in Assembly
Lightweight business models are a natural concomitant of lightweight programming and lightweight connections. The Web 2.0 mindset is good at re-use. A new service like housingmaps.com was built simply by snapping together two existing services. Housingmaps.com doesn’t have a business model (yet)–but for many small-scale services, Google AdSense (or perhaps Amazon associates fees, or both) provides the snap-in equivalent of a revenue model.
These examples provide an insight into another key web 2.0 principle, which we call “innovation in assembly.” When commodity components are abundant, you can create value simply by assembling them in novel or effective ways. Much as the PC revolution provided many opportunities for innovation in assembly of commodity hardware, with companies like Dell making a science out of such assembly, thereby defeating companies whose business model required innovation in product development, we believe that Web 2.0 will provide opportunities for companies to beat the competition by getting better at harnessing and integrating services provided by others.


