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