Thursday, June 05, 2008

Prism (themathic) maps on WWJ

This is the first implementation of prism objects for WWJ.
Also, I have build a data file with world limits (extracted from a shapefile) and prepared an example application.
The example is far away to become a thematic application like UUorld but a second prism object version could have more improvement and utilities, like show text on top of prism.





Every prism goes from globe surface (from zero elevation) to the specified top elevation.
You can render it in a wire or filled mode, change the fill and wire color and transparency and modify the top elevation.





You can get the source code here.

Next video shows the example in action. Sorry for the poor quality but executing WWJ while capturing screen is too much for my ancient laptop :(

Saturday, May 31, 2008

Prism objects for WWJ

Looking at the thematic mapping blog some time ago I saw a beautifulies KML examples of animated prism maps.
Prisms are goods to represent amounts with different shapes like countries or cylinders.

A couple of days ago I have started to work on a new renderable object Prism for WWJ, to allow WWJ community have this useful things. It is still in development but looks very well :)


Given a set of lat/lon positions you can create a prism object specifying the top elevation, color, etc.

It looks great, for to be honest has the same problem as the big brother GE has, the hole problem.

The vertex of polygon are extruded from globe surface to the specified height, but only the vertex not the polygon itself. Then, for big shapes, like China or Australia and using little heights, a hole can appear.

Thursday, May 29, 2008

Google Earth Browser plugin

I was thinking about blogging not only about The Balloon Project but also about GIS things. And here is my first post.

The next links talks about the new release of the Google Earth browser plugin:
  • http://earthissquare.com/2008/05/28/google-earth-in-a-web-page/
  • http://bullsworld2007.wordpress.com/2008/05/28/another-google-idea-borrowed-from-world-wind/
  • http://maps.co.mecklenburg.nc.us/ft/?p=238

and here is a bit summary of it:
  • advantage
    • it is another product of the google universe
  • disadvantage
    • only for windows (at the moment and like the initial release of GE)
    • memory and processor eater

and finally, I would like to note this is a great new for google product fans, but Google doesn't invent nothing, WWJ and MS VE arrives first, they can be the bastards brothers but arrives first ;)

Friday, March 28, 2008

WWJ and using JWindow to improve annotations

Here is a screenshot about something I'm trying. I have created a new Renderable object that shows a JPanel into a JWindow at a specified Position (and also a little triangle using OpenGL). The object is responsible to move the JWindow when the globe is rotated and hide it when the position is outside the frustum.



It is not finished but is a easy way to create annotation with all the power of Java :) Also it has a great effect because JWindow annotation can exists and move out the Canvas.

Monday, March 17, 2008

Load/Save configurations

Yes, too much time without news about the Balloon project but, well I continue working on it ;) and currently I'm finishing the load/save configuration mechanism.
Imagine you have an amazing set of layers pointing some images, icons, WMS servers and a couple of views. Now you want to save this "configuration" state.
That's not all. Maybe you have installed a couple of future :) Balloon plugins and they need to be capable to store their information in the save file too.

Here is a little example of configuration file:
















ROSAS


otro sitio







Note: The bad syntax is because the syntax highlighter and blogger api. There seems to be a problem with element open closed in the same line like: <img ... />.

It is far to be like a KML file, also it isn't my intention. The configuration file must store only the current layers (with the attributes needed to restore it later) and the views currently open in the application.

Sunday, January 20, 2008

Using SurfacePolygon to render shapefiles

Today I a have working with SurfacePolygon to render shapefiles.
SurfacePolygon takes a set of Positions and creates a BufferedImage that is rendered as a normal tile. That has a good performance and the result image can beautifully overlap the terrain



The above polygons are configured to create images with 256x256 size. The results seems good, but all depends on how much good you want.

Monday, January 14, 2008

The day when Timeline becomes more graphical

This is the new Timeline layer. It is not completely finished but it is more graphical and (at least for me) more beautiful ;)





To create it, I was developed before a new little package called "Widgets" with a mini set of classes implementing: button, image and label.
All them are kinds of widgets and can receive mouse events: entered, exited, left pressed, left clicked, draw and draw end. Depending on these event you can change the properties of the objects: opacity, change its texture (to make feel the button is pressed), font, etc.

Saturday, January 12, 2008

Shapefile support finished

Thanks to the code I was developed for my original Balloon 3D API I just have finised the shapefile suport for WWJ ;) and I'm very happy because the performance is really good.



As I say previously, unfortunately it only works fine for flat world. I take a look in the Polyline implementation to know how to render it taking into account the globe relieve.

Shapefile support started

Today I have started the support for shapefiles in WWJ.


There to group of things:
  • Goods. These are the good things about the implementation:

    • I am adapting the same code I used some time ago in my own 3D API of Balloon Project. That is a good new for me :)
    • The features are loaded "dynamically", not waits until the whole file is read, instead the reader process adds on the fly a new renderable object for each read feature.
    • The implementation uses display list and the performance is pretty good.
    • It allows read points, polygons and collection of geometries (I need to refresh the geometry hierarchy).
    • You can specify the color, opacity and thickness of geometries. When some property that affects its visualization the display list is recreated.


  • Bads. These are the bad new about the implementation.

    • Polygon are not filled.
    • You must to set the globe to a flat globe (vertical exaggeration equal zero). For the moment there are problems with the globe relieve.


Monday, January 07, 2008

...and the Balloon becomes pluggable

Spending some of my vacation days on the Balloon project, finally I almost finished the base platform, composed by three main modules:


  • Core module: Responsibles for the 3D rendering process and interaction with the elements. Here I put some of my own extension to WWJ that helps to improve the layer management, add new object (like AnnotatedIcons), ...

  • Use interface module: Contains the basic GUI for the Balloon with:
    • Layer manager: allows to handle elements as a layer stack, moving elements up/down, creating group of elements, ...
    • Property window: each element has its own properties that are shown and modified through the properties window.
    • A set of basic wizards to import: images (local or remote), WMS layers, icons and annotations.
  • Support module: Contains some third party libraries needed by the GUI (like SwingX).

This part needs some improvements but it current state is very decent.

On the other side, I have started to develop the first plugin for the base platform. This pluggin integrates some geonames capabilities into the Balloon, it allows to search toponyms and put into the globe as annotation.

Once installed the plugin, a new wizard is present in the "pluggins" tab. It allows to search any toponym with the given text (with some filter options).
If the geoname webservices returns any found data, then we can select which one to put in the globe as annotation:
and finally we get his: