Hi Peppe,

did you made any progress on that?
Or is the code the last version you have?

slds,
stefan

Am 21.06.13 06:05, schrieb Giuseppe Aruta:
> 
> Hi all,
> Recently I worked a bit with Sextante/grids and did some specialized 
> short courses. A student of mine used OpenJUMP/Sextante to do some 
> analysis. Than he had to convert all the rasters (TIFF format) into ESRI 
> Ascii grid files (.asc) as he had to use a more specialized software 
> that was accepting only asc. and surfer raster format.
> Of coarse we used gdal for raster transformation.
> Well, since  Esri ascii file is a very simple text file 
> (http://en.wikipedia.org/wiki/Esri_grid), in these days ( that I have 
> spare time)  I tried to make a plugin "Export raster to Esri Ascii grid 
> file" for OpenJUMP (that in turn I would like to add to OJ NB). All 
> raster parameters are easy implemented by RasterImageLayer and 
> OpenJUMPSextanteRasterLayer.
> I had some success and some failures.
> I ask your help, as developers.
> I added to this mail the code I wrote (coping partially OJ raster 
> classes and from other software like ImageJ) - The foillowing code just 
> shows the transformation, excluding initialize(), icon(), name(), etc.
> This code partially works: the file is saved together with the header of 
> the raster (see the *black* part of the code, number of colums, rows, 
> x-ycoordinates of upper left corner, cell size and NODATA),
> The red part of code is not working. This part should  lists the raster 
> values for each cell, starting at the upper-left corner, possibly with 
> decimal values, delimited by space character. I ask you if can give me a 
> suggestion for this part.
> Another part that I would like to implement is the MultienableCheck 
> (dark *violet *part of the code). This plugin should be activated only 
> if the raster has only one band (I think this is numbered "0" by 
> OpenJUMPSextanteRasterLayer class). Any suggestion is accepted: a way to 
> distinguish (within Pirol raster plugin) between grid mono band file and 
> others would be quite usefull for future plugins
> If this plugin is finished I think I will add to OJ NB under 
> Raster>Tools menu.
> regards and thanks
> 
> Peppe
> 
> public class SaveToASCPlugIn extends AbstractPlugIn
> {
> 
>    protected double[][] data;
>    private Properties properties = null;
>    private static String propertiesFile = 
> LoadSextanteRasterImagePlugIn.getPropertiesFile();
>    private String lastPath;
>    NumberFormat cellFormat = null;
>    public static final String DEFAULT_NODATA = "-9999";
> 
>    public boolean execute(PlugInContext context)
>      throws Exception
>    {
>      JFileChooser fc = new JFCWithEnterAction();
> 
>      fc.setFileFilter(new FileFilter() {
>        public boolean accept(File f) {
>          return (f.isDirectory()) ||
>            (f.getName().toLowerCase().endsWith(".asc"));
>        }
> 
>        public String getDescription() {
>          return "Arc/Info ASCII Grid (.asc)";
>        }
>      });
>      this.properties = new Properties();
>      try {
>        FileInputStream fis = new FileInputStream(propertiesFile);
>        this.properties.load(fis);
>        this.lastPath = 
> this.properties.getProperty(LoadSextanteRasterImagePlugIn.KEY_PATH);
>        fis.close();
>      }
>      catch (FileNotFoundException e) {
>        
> context.getWorkbenchFrame().warnUser(I18N.get("org.openjump.core.ui.plugin.layer.pirolraster.SaveRasterImageAsImagePlugIn.File-not-found"));
>      }
>      catch (IOException e) {
>        context.getWorkbenchFrame().warnUser(GenericNames.ERROR);
>      }
> 
>      if (this.lastPath != null) {
>        fc.setCurrentDirectory(new File(this.lastPath));
>      }
>      fc.setMultiSelectionEnabled(false);
> 
>      fc.setDialogTitle(getName());
>      int returnVal = fc.showSaveDialog(fc);
>      if (returnVal == 0) {
>        String ascFileName = fc.getSelectedFile().getAbsolutePath();
> 
>        if (!ascFileName.toLowerCase().endsWith(".asc".toLowerCase())) {
>            ascFileName = ascFileName + ".asc";
>        }
> 
>        File ascFile = new File(ascFileName);
> 
>        FileOutputStream ascOut = new FileOutputStream(ascFile);
> 
>        RasterImageLayer rLayer = 
> (RasterImageLayer)LayerTools.getSelectedLayerable(context, 
> RasterImageLayer.class);
>        OpenJUMPSextanteRasterLayer rstLayer = new 
> OpenJUMPSextanteRasterLayer();
>        rstLayer.create(rLayer);
> 
> *PrintStream o = new PrintStream(ascOut);*
> *o.println( "ncols " + rLayer.getOrigImageWidth()  );
>                  //rstLayer.getNX()  );
>          o.println( "nrows " + rLayer.getOrigImageHeight()  );
>                  //rstLayer.getNY() );
>          o.println( "xllcorner " + rLayer.getEnvelope().getMinX() );
>          o.println( "yllcorner " + rLayer.getEnvelope().getMinY());
>          o.println( "cellsize " + rstLayer.getLayerCellSize() );
>          o.println( "NODATA_value " + DEFAULT_NODATA  );*
> 
> 
>      GridWrapperNotInterpolated gwrapper = new 
> GridWrapperNotInterpolated(rstLayer, rstLayer.getLayerGridExtent());
> 
> 
>               int nx = rstLayer.getLayerGridExtent().getNX();
>              int ny = rstLayer.getLayerGridExtent().getNY();
>               for (int x = 0; x < nx; x++) {//cols
>                  for (int y = 0; y < ny; y++) {//rows
>                      double value = gwrapper.getCellValueAsFloat(x, y, 0);
>                      StringBuffer b = new StringBuffer();
>                      for( int i = 0; i < rLayer.getOrigImageWidth(); i++ )
>                      {
>                          if( Double.isNaN(rstLayer.getNoDataValue()  )  
> ) b.append( rstLayer.getNoDataValue() );
>                          else if( cellFormat != null ) b.append( 
> cellFormat.format( value ));
>                          else b.append( cellFormat.format( value ) );
>                          if( i < rLayer.getOrigImageWidth() -1 ) 
> b.append(  " "  );
>                      }
>                      o.println( b );
>               }
>          }
>          o.close();
> 
>        rLayer.setImageFileName(ascFileName);
>        rLayer.setNeedToKeepImage(false);
>      }
> 
>      return true;
>    }
> 
> 
>    public void setCellFormat( NumberFormat format )
>      {
>          cellFormat = format;
>      }
> 
> 
> *public static MultiEnableCheck createEnableCheck(WorkbenchContext 
> workbenchContext)
>    {
>      EnableCheckFactory checkFactory = new EnableCheckFactory(
>        workbenchContext);
>      MultiEnableCheck multiEnableCheck = new MultiEnableCheck();
> 
>      
> multiEnableCheck.add(checkFactory.createExactlyNLayerablesMustBeSelectedCheck(1,
>  
> RasterImageLayer.class));
> 
>      return multiEnableCheck;*
>    }
> 
> }
> 
> 
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by Windows:
> 
> Build for Windows Store.
> 
> http://p.sf.net/sfu/windows-dev2dev
> 
> 
> 
> _______________________________________________
> Jump-pilot-devel mailing list
> Jump-pilot-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel
> 

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to