Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[udig-devel] OSSIM Raster processing in uDig


We are impressed that Jesse is already getting a raster view plugin for uDig using OSSIM. Thought it would be useful to summarize the telecons that we have had in the last couple of weeks between the uDig and OSSIM teams.

Our goal is to focus on uDig as a preferred end user client and incrementally expose OSSIM capabilities through the tool. The OSSIM team is in the "final" stages of testing and configuring 1.6.0 of the library and tools. The first area of focus will be to open and load an OSSIM view as a uDig layer. Scott Bortman generated and added a JOSSIM branch last week. This will provide Java bindings to the OSSIM library. OSSIM is written in C++ using a MCV (Model Controller View) approach. The core is found under the ossim tag and is GUI independent. ossim_qt is the cvs tag for the controllers, views and applications that are based on the Trolltech qt library. ImageLinker will not force a refresh from the database. This is not the case with
uDig 1.0.1, it does refresh from the database.

What is happening is that TilingRenderer sees the Redraw request the
same as a Pan (except with no changes to the view area). Therefore it
copies the existing image and never calls the child renderer.

I think the desired behavior would be for Redraw to force a full
refresh of the viewport, since that is what the user probably
expected.

My proposed change is to modifty RefreshTool (not sure why some stuff
says refresh and others redraw) to set the renderer states to
RENDER_REQUEST. This will force TilingRenderer (or any other renderer
for that matter) to call the child renderer which will redraw the
layers. I have tested this and it works. I will check this into trunk
if this is what everyone thinks we should do.

Here is the change to the run() method of RefreshTool:

   public void run() {
********* new changes *********
       // Force an update of the renderers
       List<IRenderer> renderers =3D context.getRenderManager().getRendere=
rs();
       for(IRenderer renderer : renderers){
           ((Renderer)renderer).setState(IRenderer.RENDER_REQUEST);
       }
********** end new changes ******
       context.getRenderManager().refresh(null);
   }


Cole


Back to the top