How to load a Sextante raster layer and read its cell values

From OpenJUMP Wiki
Jump to navigation Jump to search

The following plugin code allows you to read a Setante raster values and print its cell values

package org.openjump.addsextanterasterlayer;



import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.Envelope;

import com.vividsolutions.jump.workbench.WorkbenchContext;

import com.vividsolutions.jump.workbench.model.Layer;

import com.vividsolutions.jump.workbench.plugin.AbstractPlugIn;
import com.vividsolutions.jump.workbench.plugin.EnableCheckFactory;
import com.vividsolutions.jump.workbench.plugin.MultiEnableCheck;
import com.vividsolutions.jump.workbench.plugin.PlugInContext;
import com.vividsolutions.jump.workbench.ui.Viewport;
import com.vividsolutions.jump.workbench.ui.plugin.FeatureInstaller;
import com.vividsolutions.jump.workbench.ui.renderer.LayerRendererFactory;
import com.vividsolutions.jump.workbench.ui.renderer.RenderingManager;

import org.openjump.core.rasterimage.RasterImageLayer;

import org.openjump.core.rasterimage.sextante.OpenJUMPSextanteRasterLayer;
import org.openjump.core.rasterimage.sextante.rasterWrappers.GridExtent;

import java.awt.Point;
import java.awt.Rectangle;

public class SextanteLayerPlugIn extends AbstractPlugIn{

	public SextanteLayerPlugIn() {
		// empty constructor
	}
	public void initialize(PlugInContext context) throws Exception {
		FeatureInstaller featureInstaller = new FeatureInstaller(context.getWorkbenchContext());
		featureInstaller.addMainMenuItem(
				this,			//exe
				new String[] {"SextanteRaster"}, 	//menu path
				"Add Raster Layer", //name methode .getName recieved by AbstractPlugIn 
				false,			//checkbox
				null,			//icon
				createEnableCheck(context.getWorkbenchContext())); //enable check        
	}
		
	public static MultiEnableCheck createEnableCheck(WorkbenchContext workbenchContext) {
		EnableCheckFactory checkFactory = new EnableCheckFactory(workbenchContext);
		
		return new MultiEnableCheck()
		.add(checkFactory.createWindowWithLayerNamePanelMustBeActiveCheck());
	}	
	
		
	

		 Viewport viewport = context.getLayerViewPanel().getViewport();
         Rectangle visibleRect = viewport.getPanel().getVisibleRect();
         
         int visibleX1 = visibleRect.x;
         int visibleY1 = visibleRect.y;
         int visibleX2 = visibleX1 + visibleRect.width;
         int visibleY2 = visibleY1 + visibleRect.height;
		  Coordinate upperLeftVisible = viewport.toModelCoordinate(new Point(0,0));
          Coordinate lowerRightVisible = viewport.toModelCoordinate(new Point(visibleX2, visibleY2));
          
          Envelope newVisibleEnv = new Envelope(upperLeftVisible.x, lowerRightVisible.x, upperLeftVisible.y, lowerRightVisible.y);


        RasterImageLayer rast = new RasterImageLayer("landsat", 
        		context.getLayerManager(), 
        		"/home/rashadkm/lsat.png", 
        		null, null, newVisibleEnv);
        
        
        OpenJUMPSextanteRasterLayer rasterlayer = new OpenJUMPSextanteRasterLayer();
        rasterlayer.create(rast,true);
        

        context.addLayerSextanteRaster("Raster Layer", rast);
       
        
        
        GridExtent gridExtent = new GridExtent(rasterlayer);
 
        rasterlayer.setWindowExtent(gridExtent);
        int iNX = gridExtent.getNX();
        int iNY = gridExtent.getNY();
        for(int y = 0; y < iNY; y++){
             for(int x = 0; x < iNX; x++){

       System.out.println(rasterlayer.getCellValueAsDouble(x, y));
        
     
        }
      }
        
    
        
        return true;
    }


}