Revision 11480

View differences:

trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/cutting/CuttingProcess.java
24 24
import org.gvsig.gui.beans.incrementabletask.IncrementableListener;
25 25
import org.gvsig.gui.beans.incrementabletask.IncrementableTask;
26 26
import org.gvsig.raster.buffer.BufferFactory;
27
import org.gvsig.raster.buffer.BufferInterpolation;
28
import org.gvsig.raster.buffer.RasterBuffer;
27 29
import org.gvsig.raster.dataset.GeoRasterWriter;
28 30
import org.gvsig.raster.dataset.IBuffer;
29 31
import org.gvsig.raster.dataset.InvalidSetViewException;
30 32
import org.gvsig.raster.dataset.NotSupportedExtensionException;
31 33
import org.gvsig.raster.dataset.RasterDriverException;
32
import org.gvsig.raster.dataset.RasterMultiDataset;
33
import org.gvsig.raster.dataset.WriterParams;
34
import org.gvsig.raster.dataset.MultiRasterDataset;
34 35
import org.gvsig.raster.shared.Extent;
35 36
import org.gvsig.rastertools.cutting.ui.listener.CuttingPanelListener;
36 37
/**
......
45 46
	private IncrementableTask		incrementableTask = null;
46 47
	private volatile Thread			blinker = null;
47 48
	private WriterBufferServer		writerBufferServer = null;
48
	private RasterMultiDataset		rasterMultiDataset = null;
49
	private MultiRasterDataset		rasterMultiDataset = null;
49 50
	private Extent					extent = null;
50 51
	private boolean					oneLayerPerBand = false;
51 52
	private int[]					drawableBands = null;
......
53 54
	private int[]					dValues = null;
54 55
	private boolean					cancel = false;
55 56
	private GeoRasterWriter 		grw = null;
57
	private int						interpMethod = BufferInterpolation.INTERPOLATION_Undefined;
56 58
	
57 59
	/**
58 60
	 * Variables de la resoluci?n de salida
......
70 72
	 * @param drawableBands
71 73
	 * @param oneLayerPerBand
72 74
	 */
73
	public CuttingProcess(CuttingPanelListener cuttingPanelListener, int[] dValues, String fileName, WriterBufferServer writerBufferServer, RasterMultiDataset rasterMultiDataset, Extent extent, int[] drawableBands, boolean oneLayerPerBand) {
75
	public CuttingProcess(CuttingPanelListener cuttingPanelListener, int[] dValues, String fileName, 
76
							WriterBufferServer writerBufferServer, MultiRasterDataset rasterMultiDataset, 
77
							Extent extent, int[] drawableBands, boolean oneLayerPerBand, int interpMethod) {
74 78
		this.fileName = fileName;
75 79
		this.writerBufferServer = writerBufferServer;
76 80
		this.rasterMultiDataset = rasterMultiDataset;
......
79 83
		this.drawableBands = drawableBands;
80 84
		this.cuttingPanelListener = cuttingPanelListener;
81 85
		this.dValues = dValues;
86
		this.interpMethod = interpMethod;
82 87
	}
83 88
	
84 89
	/**
......
107 112
		try {
108 113
			BufferFactory bufferFactory = new BufferFactory(rasterMultiDataset);
109 114
			bufferFactory.clearDrawableBand();
110
			bufferFactory.addDrawableBands(drawableBands);		
111
			try {
112
				bufferFactory.setAreaOfInterest(dValues[0], dValues[3], dValues[2] - dValues[0], dValues[1] - dValues[3], resolutionWidth, resolutionHeight);
113
			} catch (InvalidSetViewException e) {
114
				e.printStackTrace();
115
			}
115
			bufferFactory.addDrawableBands(drawableBands);
116
			
116 117
			if(cancel)
117 118
				return;
118
			IBuffer buffer = bufferFactory.getRasterBuf();
119
			
120
			IBuffer buffer = null;
121
				
122
			if(	interpMethod != BufferInterpolation.INTERPOLATION_Undefined &&
123
				interpMethod != BufferInterpolation.INTERPOLATION_NearestNeighbour) {
124
				bufferFactory.setAreaOfInterest(dValues[0], dValues[3], dValues[2] - dValues[0], dValues[1] - dValues[3]);
125
				buffer = bufferFactory.getRasterBuf();
126
				buffer = ((RasterBuffer)buffer).getAdjustedWindow(resolutionWidth, resolutionHeight, interpMethod);
127
			} else {
128
				try {
129
					bufferFactory.setAreaOfInterest(dValues[0], dValues[3], dValues[2] - dValues[0], dValues[1] - dValues[3], resolutionWidth, resolutionHeight);
130
					buffer = bufferFactory.getRasterBuf();
131
				} catch (InvalidSetViewException e) {
132
					e.printStackTrace();
133
				}
134
			}
135
			
119 136
			if (oneLayerPerBand) {
120 137
				for (int i = 0; i < drawableBands.length; i++) {
121 138
					if(cancel)
trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/cutting/ui/CuttingPanel.java
43 43
import org.gvsig.gui.beans.defaultbuttonspanel.DefaultButtonsPanel;
44 44
import org.gvsig.gui.beans.table.TableContainer;
45 45
import org.gvsig.gui.beans.table.exceptions.NotInitializeException;
46
import org.gvsig.raster.dataset.RasterMultiDataset;
46
import org.gvsig.raster.dataset.MultiRasterDataset;
47 47
import org.gvsig.rastertools.cutting.ui.listener.CuttingMouseViewListener;
48 48
import org.gvsig.rastertools.cutting.ui.listener.CuttingPanelListener;
49 49

  
......
213 213
		);
214 214

  
215 215
		// Rellenar el arbol de bandas		
216
		RasterMultiDataset mDataset = ((FLyrRasterSE) fLayer).getDatasource().getGeoRasterMultiFile();
216
		MultiRasterDataset mDataset = ((FLyrRasterSE) fLayer).getDatasource().getGeoRasterMultiFile();
217 217
    for (int i = 0; i < mDataset.getDatasetCount(); i++) {
218 218
      String fName = mDataset.getDataset(i).getFName();
219 219
      String bandName = new File(fName).getName();
trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/cutting/ui/ResolutionPanel.java
30 30
import javax.swing.JRadioButton;
31 31

  
32 32
import org.gvsig.gui.beans.datainput.DataInputContainer;
33
import org.gvsig.raster.buffer.BufferInterpolation;
33 34

  
34 35
import com.iver.andami.PluginServices;
35 36
/**
......
351 352
			cInterpolation.addItem(PluginServices.getText(this, "vecino_+_proximo"));
352 353
			cInterpolation.addItem(PluginServices.getText(this, "bilinear"));
353 354
			cInterpolation.addItem(PluginServices.getText(this, "distancia_inversa"));
354
			cInterpolation.addItem(PluginServices.getText(this, "bicubico"));
355 355
			cInterpolation.addItem(PluginServices.getText(this, "b_splines"));
356
			//cInterpolation.addItem(PluginServices.getText(this, "bicubico"));
356 357

  
357 358
		}
358 359
		return cInterpolation;
359 360
	}
360 361
	
361 362
	/**
363
	 * Obtiene el valor correspondiente al m?todo de interpolaci?n seleccionado en 
364
	 * el JComboBox
365
	 * @return M?todo de interpolaci?n interpretable con las variables definidas en BufferInterpolation.
366
	 */
367
	public int getSelectedInterpolationMethod() {
368
		switch(getJComboBox().getSelectedIndex()) {
369
		case 0: return BufferInterpolation.INTERPOLATION_NearestNeighbour;
370
		case 1: return BufferInterpolation.INTERPOLATION_Bilinear;
371
		case 2: return BufferInterpolation.INTERPOLATION_InverseDistance;
372
		case 3: return BufferInterpolation.INTERPOLATION_BSpline;
373
		}
374
		return BufferInterpolation.INTERPOLATION_Undefined;
375
	}
376
	
377
	/**
362 378
	 * Asigna el valor del campo "tama?o de celda" a partir del double que lo representa
363 379
	 * y con el n?mero de decimales que se especifica en el par?metro dec
364 380
	 * @param cellSize Tama?o de celda en double
trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/cutting/ui/listener/CuttingPanelListener.java
40 40
import org.gvsig.gui.beans.coorddatainput.CoordDataInputContainer;
41 41
import org.gvsig.gui.beans.incrementabletask.IncrementableTask;
42 42
import org.gvsig.gui.beans.table.models.CheckBoxModel;
43
import org.gvsig.raster.dataset.RasterMultiDataset;
43
import org.gvsig.raster.dataset.MultiRasterDataset;
44 44
import org.gvsig.raster.shared.Extent;
45 45
import org.gvsig.raster.util.RasterUtilities;
46 46
import org.gvsig.rastertools.cutting.CuttingProcess;
......
491 491
		/**
492 492
		 * Preparacion para la generacion del proceso del recorte
493 493
		 */
494
		RasterMultiDataset multiRasterDataset = (RasterMultiDataset)((FLyrRasterSE) getCuttingPanel().getFLayer()).getGeoRasterMultiDataset().copyDataset();
494
		MultiRasterDataset multiRasterDataset = (MultiRasterDataset)((FLyrRasterSE) getCuttingPanel().getFLayer()).getGeoRasterMultiDataset().copyDataset();
495 495
		
496 496
		if(multiRasterDataset == null)
497 497
			return;
......
499 499
		WriterBufferServer dataWriter1 = new WriterBufferServer();
500 500
		Extent extent = new Extent(minX, maxY, maxX, minY);
501 501

  
502
		int interpMethod = getCuttingPanel().getPResolution().getSelectedInterpolationMethod();
503
		
502 504
		CuttingProcess cuttingProcess = new CuttingProcess(this, dValues, filename,
503 505
			dataWriter1, multiRasterDataset, extent, drawableBands,
504
			getCuttingPanel().getCbOneLyrPerBand().isSelected());
506
			getCuttingPanel().getCbOneLyrPerBand().isSelected(), interpMethod);
505 507
		cuttingProcess.setResolution((int) getCuttingPanel().getWidthText(),
506 508
			(int) getCuttingPanel().getHeightText());
507 509
		IncrementableTask incrementableTask = new IncrementableTask(dataWriter1);

Also available in: Unified diff