I forgot: the plugin is available on Toolbar Raster menu

2013/7/13 Giuseppe Aruta <giuseppe_ar...@yahoo.it>

> Hi Stefan (and others),
> I worked on your code and expanded a little bit the plugin.
> I came across this plugin which is an attempt  to larger Save to Raster to
> substitute SaveRasterImageToImagePlugin from Pirol on Sextante Layers.
> I used some codes from Kosmo and OJ, removing any external jar depency and
> only using JAI and ImageIO options. The code should be embedded into the
> plugin
>
> which are the benefits of this plugin comparing to original Pirol plugin
>  - This plugin currently export a Sextante Raster Image to TIF (not with
> OpenJDK), JPG, PNG, BMP and ASC.
> - It can also export part of the image (extracted using fence) to JPG, TIF
> and PNG (not working with BMP and ASC).
>
> which are the limits
> -  ASC export  can export only the file and not with part of it
> - If I export an ASC to TIF (talking about a monoband TIF), since I use a
> BuffereImage from rLayer.getImageForDisplay().getAsBufferedImage(), It
> export the display color values and not the real dem datas
>
> TODO (a possible list)
> - applay a LUT  to a DEM and than export to image, ex JPG, with the
> colormodel. So this raster can be used on a publication or slides
> - PNG (and TIF) transparency. Pirol raster tool allows to set a color to
> transparent. It should be interesting that this option should be saved to a
> PNG (or TIF) exported file. In the past I used a lot  topographic rasters
> (TIF) where  the white background had to be set to transparent (using gdal)
> - Possibility to split the bands of a multiband raster on saving (or vice
> versa) for remote sensing
>
> I tested this plugin on Ubuntu 64bit with both OpenJDK and Oracle JRE 7
>
> Any idea to face the limits?
>
> regeards and thanks
>
> Peppe
>
>
> PS.  Of coarse I didn't fine a solution for exporting to TIF on OpenJDK. I
> tested two other  possibilities: Jimi raster library (from Oracle) or a
> bridge to imagej software, both working but requiring extra libraries
>
>
> 2013/6/27 Giuseppe Aruta <giuseppe_ar...@yahoo.it>
>
>> Hi Stefan,
>> thanks a lot. I will go and study the code when I will be back home.
>> Giuseppe
>>
>>
>> 2013/6/27 Stefan Steiniger <sst...@geo.uzh.ch>
>>
>>> Hi Peppe and other Devs,
>>>
>>> I fixed the problem :)
>>> I send you my last version that seems to write an *.asc file as it is
>>> supposed to. At least it looks like OJ itself and QGIS are able to read
>>> it. From my file you can start and adding the stuff you still think is
>>> necessary. I have made some inline comments.
>>>
>>> I think you actually got a bit confused with the whole row and columns
>>> thing (I switched the loops). And you should have put the "write-ln"
>>> command after the inner loop is finished, and not in each line.
>>>
>>> Also, I realized that when I checked for the noData value, that there
>>> was something wrong. I found then out, that an OJ-Raster has no NoData
>>> value property, while Sextante has (however... OJ has a transparency
>>> setting). This also means, that when reading an ascii file with the
>>> current reader, then this values was not set. So I implemented that
>>> property, and will commit my changes in a few minutes.
>>>
>>> The default NoDataValue is now Double.NaN.
>>>
>>> This value will also get transferred when creating a Sextante Raster
>>> Image Layer from an image file. However, if a new Sextante Layer is
>>> created (not based on an existing file), then the default noDataValue is
>>> -99999.0 (i.e. one digit more than the ESRI default of -9999)
>>>
>>> I hope I did not miss out on something, and nothing breaks now when
>>> working with Sextante. But I don't guess so.
>>>
>>> I also attach my ascii test file, that I created from the Wikipedia page.
>>>
>>> cheers,
>>> stefan
>>>
>>>
>>> Am 26.06.13 12:56, schrieb Giuseppe Aruta:
>>> > Really I don't understand loops in Java
>>> > ;-)
>>> >
>>> >
>>> > 2013/6/26 Giuseppe Aruta <giuseppe_ar...@yahoo.it
>>> > <mailto:giuseppe_ar...@yahoo.it>>
>>> >
>>> >     Hi Stefan,
>>> >     I made some progress, now I am able to save to asc, unfortunately
>>> >     each value of the pixel of the ascii is saved an incredible number
>>> >     equal to rowXcolumn of the original. So my test file of 101 byte
>>> >     becomes a huge file of 2 Gb :-( Surelly I made a misake.
>>> >     Then I moved to Switzerland for job, where actully I am. And didn't
>>> >     carry with me Eclipse, codes, OpenJMP, etc. I will be back home
>>> >     after 5th of July and give a better look (and send the code)
>>> >     regards
>>> >
>>> >     Peppe
>>> >
>>> >
>>> >     2013/6/26 Stefan Steiniger <sst...@geo.uzh.ch
>>> >     <mailto:sst...@geo.uzh.ch>>
>>> >
>>> >         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
>>> >         <mailto: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
>>> >         <mailto: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
>>> >
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> 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
>>>
>>>
>>
>
------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
Jump-pilot-devel mailing list
Jump-pilot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel

Reply via email to