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
>
>
------------------------------------------------------------------------------
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