Code Monkey home page Code Monkey logo

ga-worldwind-suite's Introduction

GA World Wind Suite

The ga-worldwind-suite is a collection of tools created by the Geoscience Australia (GA) Movies and 3D Visualisation (M3DV) team. The tools are built around the NASA World Wind Java SDK, an open-source virtual globe toolkit.

The suite consists of a number of tools, found in the project subfolders. These tools are:

  • Viewer - A virtual globe tool supporting display of raster, vector, surface and volume data as well as digital elevation models (DEMs).
  • Animator - A keyframe animation tool designed for the production of flythrough style animations of geoscience and geospatial data.
  • Common - A general-purpose library that underpins the Viewer and Animator tools.
  • Tiler - Used to prepare tilesets for use in the Viewer and Animator tools.
  • TileServer - A simple JSP application that can be used to serve World Wind tilesets.

For more information on the project, see the project wiki.


Update: March 2013

The GA-M3DV team is no longer actively maintaining this project. We have moved our development effort to the EarthSci platform.

This platform is an open source project that will fill the same niche as the ga-worldwind-suite, but has been redesigned from the ground-up to be a flexible earth science visualisation platform. It is built on Eclipse E4AP and has a powerful plugin architecture that makes it easier to add new functionality without having to change the core codebase.

Feel free to continue using the ga-worldwind-suite if it meets your needs, but if you want to leverage the ongoing development of new features we recommend you consider the EarthSci platform.


Webstart previews

We have created a separate repository containing webstart versions of some of the tools in this repository. To run these applications, use the following links:

We will update these builds periodically to reflect the latest changes in the codebase.

As of Java 7 update 51, Oracle changed the security policy to disable self-signed webstart apps by default. Both of the webstart links above contain self-signed JARs, so you will need to either change the Java security level to Medium, or add the URL to the list of exception sites (see the Security tab in the Java Control Panel).

Reporting bugs and requesting features

We are striving to ensure the ga-worldwind-suite is a high-quality and usable suite of tools. If you find any bugs/issues with the tools, or would like to see new features added, please report them via the issue tracker. Better yet, implement the changes yourself and then open a pull request.

Please note that your bug/issue/feature may already be registered in the issue tracker. Please take a quick look before you raise a ticket to make sure you aren't duplicating an existing issue. For a good guide on writing effective issue reports, see Allan McRae's blog post "How to file a bug report".

How to contribute

The ga-worldwind-suite is being managed using a "fork+pull" method described here and we encourage developers to contribute in any way they can. To contribute patches to the codebase:

  1. Fork the repository
  2. Make your changes
  3. Submit a pull request

Some ideas for how to contribute include:

  • Find a bug/issue in the issue tracker and fix it!
  • Implement a feature you would like to see
  • Add some unit tests to the test suite
  • Help create technical documentation and developer guides to make it easier for future developers to get involved

License

The ga-worldwind-suite is released under the Apache 2.0 license and is distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and limitations under the License.

Contact

For more information on the ga-worldwind-suite project, please email m3dv:at:ga.gov.au.

ga-worldwind-suite's People

Contributors

jfnavin avatar ljbade avatar mdehoog avatar ncaldwell avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ga-worldwind-suite's Issues

png render format

It would be nice to render of to other formats, specifically to png (due to the size of images that are predominately alpha). One could (I assume) use a library that gives more than just png support, but really png is all I'm after.

On/off toggle for all branches in the viewer layer tree

It would be more usable to have an on/off toggle on every branch of the layer tree, that turns on/off all of its children.

Currently there are buttons on the toolbar for this (if they are kept, should there be two, or a cycle button?). I had to have the existing buttons pointed out to me, as when I went looking for them, they weren't where I expected them to be. As such, I had been turning large numbers of layers on/off individually.

Tiler replace from--to doesn't correctly represnt min--max affect

In the 'Set pixels with values:' option in the tiler, the fields 'between' and 'and' require min/max values respectively (the first must be lower than the second), which does not come across in the terms 'between' and 'and' (hereafter a and b).

The terms used imply that all values between a and b will be replaced, irrelevant which is the lesser value, a or b, when in fact, a must be the lesser value.

I suggest adding checking to the code to make sure they are ordered correctly so that the number is not important to the user, instead of changing the wording.

Draging layers onto the root note spits errors

When you drag a layer onto the the root note of the animation browser, which reads 'World Wind Animator', it spits out an IndexOutOfBoundsException: Index: -1, Size: 6. (note that there are seven layers, currently in my scene, including the camera.

I was expecting it to be added to the world wind animator list of layers, either at the top or bottom. Not sure which would make more sense.

To reproduce: drag any layer def file onto the 'World Wind Animator' label at the top of the animation browser.

Add/Remove entire dataset button.

It would be nice to have a button next to a dataset in the Datasets panel that allows you to add/remove an entire dataset, instead of having to add/remove them individually.

Render Output text field resizes itself, moving the browse button outside the window

The render output destination text field resizes itself when the path is really long. This moves the browse button, found to the right of the field, outside the window itself, so one can not use it. This seems to only happen when one loads a file that has a saved render path.

To reproduce:

  1. Open the animator
  2. Select render
  3. Choose an output path that is deep
  4. Choose OK

Delegate definitions do not support whitespace

The delegate definitions (e.g. ColorMapReader) should support whitespace after brackets and commas etc. to be more robust.

This will help avoid annoying and hard-to-detect syntax problems when authoring layers.

ElevationModel XML file MissingData Element appears to be magic/not sane.

When reading the MissingData element in the ElevationModel definiton, One assumes that, as its attributes are signal and replacement, that the signal value is replaced by the replacement value.

Instead, when given a dem (with a z ranging between -6000 and -50) that has a nodata value of -9999, feeding a single value of 3000~ (the original value before I changed it when tiling it), and a replacement of -9999, the dem does not work. changing the signal value to -9999 causes it to work. This does not seem right.

Display higher resolution tile before visually required

Ability to fade in more detailed tile layers when zooming in rather than just pop on [Essentially we need to display the more detailed image tile before it is visually required] This improvement is particually relevent where zooming in on imagery such as landsat imagery. In some existing animations, there is an evident pop in image resolution - the higher res images is being displayed at a point where the lower res image has started to become blury - so the swap of tile is visible.

Google Earth does this really well - with a fade into the higher resolution image as you zoom in.

Render Specifiable Frame Ranges

It would be nice to be able to further specify frame ranges, using a string. Currently we can render between start and end, but alternatively we could specify frames with a string, allowing for either single frames, multiple single frames at different points, and multiple ranges.

For instance, given '1,3,5,7-10,20-30', the render could render frames 1, 3 and five, and then render the ranges of 7 to 10 and 20 to 30.

When typing decimals into parameters, the full stop button increases the frame by point one as well as putting a decimal point into the value.

If you click on a layer and try to manually enter a decimal value in one of its parameters, such as the opacity parameter, then it will also step forward a frame. This is bad because one generally sets it to the frame one wants to change before making the change, not expecting the frame to be incremented.

To reproduce:

  1. Open the animator.
  2. Pick a layer with an opacity, such as landsat.
  3. Click in the value box to transfer the focus to it.
  4. Note the current frame (in a new file, frame 0)
  5. Type a value, such as .2.
  6. Note that the frame is now frame 1.

Mask delegate works on the image alpha, not gray scale bands.

If you create a mask layer as a black and white image, it does not recognise it as a mask.

The issue is that the mask reader delegate takes the alpha channel from the mask tiles, and uses it as the alpha.

It would be good to be able to use greyscale images to define a mask (similar to GIMP etc.)

Key selection ranges

The ability to select multiple keys and move them together would be handy. An extension of this would be able to scale the selected keys, and only the selected keys. To do this in Max, there is a bar underneath the number line that shows the selected range. You can then click and drag on the edges to scale it dynamically.

Test

This is a test issue

Compass only loads once

Taking a stab at this being a common element, but in the animator, when you load the compass for the second time in a world wind instance, then it doesn't appear to work. If one starts a new instance of the animator, and loads up the compass layer, or the world map layer (the scale bar appears to work fine), then opens a new file, and attempts to compass layer again, nothing will show up. Not even a stack trace.

Steps to reproduce:

  1. Open animator
  2. Load Compass Layer
  3. File->New
  4. Load Compass Layer

Animation previewing framerate

It would be nice if the animator had a framerate, and that it attempted to preview at that framerate. At that point, one may also want x.5 preview, as well as the x2 which is already there.

Viewer screen shot save dialog does not keep state

The screen shot file picker does not keep the working directory or file type last used when you open it again, after using it once in a session.

I expect (user expectation) file choosing dialogs that see continuous reuse to keep the last used directory in a session, and possibly the file type and name (though these are debatable).

Remove StereoSkyGradientLayer

The standard SkyGradientLayer now uses horizon distance rather than far clip, making the StereoSkyGradientLayer redundant. Update layer definitions and remove from use.

Interactive depth guideline

Add a feature that allows the user to define 2 points on the globe surface. Between these two points a grid will be generated that includes tick marks for depth/elevation.

This grid should scale similar to the graticule so more detail can be gained. It should also respect the current vertical exaggeration.

The purpose of this grid will be to (a) orient the user when subsurface, and (b) provide an indication of depth.

Mark positions in the tiler output.

The tiler output log currently spits out 2 coordinates without marking which is which, it would be good to have them marked as ne/top left and se/bottom right.

Complete loading of cached file layers

When loading a GeoTIFF or other georeferenced image, a local tileset is generated in the 'C:\WINNT\Profiles\All Users\Application Data\WorldWindInstalled' directory. The FileLoader.loadCachedData() function should return a valid layer document when this cached data exists.

At the moment, it returns null, which means the local tileset is generated on load every time the Viewer is run.

Also, I think the directories stored under the WorldWindInstalled directory should contain the file's path information, not just the filename.

At the moment, if you insert two file layers from different directories but with the same filename into the Viewer's layers, the generated local tileset directory will be the same. This is not ideal. Perhaps encode the path and filename into the local tileset directory name (replacing the /'s with some other character)?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.