Revision 11384 trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/cutting/CuttingProcess.java

View differences:

CuttingProcess.java
23 23
import org.gvsig.gui.beans.incrementabletask.IncrementableEvent;
24 24
import org.gvsig.gui.beans.incrementabletask.IncrementableListener;
25 25
import org.gvsig.gui.beans.incrementabletask.IncrementableTask;
26
import org.gvsig.raster.buffer.BufferFactory;
26 27
import org.gvsig.raster.dataset.GeoRasterWriter;
27 28
import org.gvsig.raster.dataset.IBuffer;
28 29
import org.gvsig.raster.dataset.NotSupportedExtensionException;
29 30
import org.gvsig.raster.dataset.RasterDriverException;
31
import org.gvsig.raster.dataset.RasterMultiDataset;
30 32
import org.gvsig.raster.dataset.WriterParams;
31 33
import org.gvsig.raster.shared.Extent;
34
import org.gvsig.rastertools.cutting.ui.listener.CuttingPanelListener;
32 35

  
33 36
/**
34 37
 * 
......
37 40
 * @author Borja S?nchez Zamorano (borja.sanchez@iver.es)
38 41
 */
39 42
public class CuttingProcess implements Runnable, IncrementableListener {
40
		
41
//	private GeoRasterWriter			writer = null;
42
	private String 					fileName = "";
43
	private IncrementableTask 			incrementableTask = null;
44
	private volatile Thread 			blinker = null;
45
	private WriterBufferServer writerBufferServer = null;
46
	private IBuffer buffer = null;
47
	private Extent extent = null;
48

  
43
//	private GeoRasterWriter				writer = null;
44
	private String 								fileName = "";
45
	private IncrementableTask			incrementableTask = null;
46
	private volatile Thread				blinker = null;
47
	private WriterBufferServer		writerBufferServer = null;
48
	private RasterMultiDataset		rasterMultiDataset = null;
49
	private Extent								extent = null;
50
	private boolean								oneLayerPerBand = false;
51
	private int[]									drawableBands = null;
52
	private CuttingPanelListener	cuttingPanelListener = null; 
53
	
49 54
	/**
50 55
	 * Constructor
51 56
	 * @param vp ViewPortData
......
54 59
	 * @param fName Nombre del fichero de salida
55 60
	 * @param params Par?metros del escritor
56 61
	 */	
57
	public CuttingProcess(String fileName, WriterBufferServer writerBufferServer, IBuffer buffer, Extent extent) {
62
	public CuttingProcess(CuttingPanelListener cuttingPanelListener, String fileName, WriterBufferServer writerBufferServer, RasterMultiDataset rasterMultiDataset, Extent extent, int[] drawableBands, boolean oneLayerPerBand) {
58 63
		this.fileName = fileName;
59 64
		this.writerBufferServer = writerBufferServer;
60
		this.buffer = buffer;
65
		this.rasterMultiDataset = rasterMultiDataset;
61 66
		this.extent = extent;
67
		this.oneLayerPerBand = oneLayerPerBand;
68
		this.drawableBands = drawableBands;
69
		this.cuttingPanelListener = cuttingPanelListener;
62 70
	}
63
		
71
	
64 72
	/**
65 73
	 * Arranca el proceso de salvado a raster
66 74
	 */
......
77 85
		notify();
78 86
	}
79 87
	
88
	private void WriteFile(String file, int[] bands)
89
			throws NotSupportedExtensionException, RasterDriverException, IOException {
90

  
91
		BufferFactory bufferFactory = new BufferFactory(rasterMultiDataset);
92
		bufferFactory.addDrawableBands(bands);
93
		bufferFactory.setAreaOfInterest(extent.minX(), extent.maxY(), extent.width(), extent.height(), true);
94
		IBuffer buffer = bufferFactory.getRasterBuf();
95

  
96
		writerBufferServer.setBuffer(buffer);
97

  
98
		WriterParams params = GeoRasterWriter.getWriter(file).getParams();
99
		GeoRasterWriter grw = GeoRasterWriter.getWriter(writerBufferServer, file,
100
				buffer.getBandCount(), extent, buffer.getWidth(), buffer.getHeight(),
101
				buffer.getDataType(), params);
102
		grw.dataWrite();
103
		grw.writeClose();
104
	}
105

  
80 106
	/**
81 107
	 * 
82 108
	 */
83 109
	public void run() {
84
		System.out.println("Guardando en:" + fileName);
85 110
		try {
86
			WriterParams params = GeoRasterWriter.getWriter(fileName).getParams();
87
			GeoRasterWriter grw = GeoRasterWriter.getWriter(writerBufferServer, 
88
					fileName,
89
					buffer.getBandCount(),
90
					extent,
91
					buffer.getWidth(), 
92
					buffer.getHeight(), 
93
					buffer.getDataType(),
94
					params);
95
			grw.dataWrite();
96
			grw.writeClose();
111
			if (oneLayerPerBand) {
112
				int[] drawableBandsAux = new int[1];
113
				for (int i = 0; i < drawableBands.length; i++) {
114
					drawableBandsAux[0] = drawableBands[i];
115
					WriteFile(fileName + "_B" + drawableBandsAux[0] + ".tif", drawableBandsAux);
116
					cuttingPanelListener.cutFinalize(fileName + "_B" + drawableBandsAux[0] + ".tif");
117
				}
118
			} else {
119
				WriteFile(fileName + ".tif", drawableBands);
120
				cuttingPanelListener.cutFinalize(fileName + ".tif");
121
			}
97 122
		} catch (NotSupportedExtensionException e) {
98 123
			e.printStackTrace();
99 124
		} catch (RasterDriverException e) {
......
116 141
	}
117 142

  
118 143
	public void actionCanceled(IncrementableEvent e) {
119
		// TODO Auto-generated method stub
120
		
121 144
	}
122 145

  
123 146
	public void actionResumed(IncrementableEvent e) {
124
		// TODO Auto-generated method stub
125
		
126 147
	}
127 148

  
128 149
	public void actionSuspended(IncrementableEvent e) {
129
		// TODO Auto-generated method stub
130
		
131 150
	}
132 151
}

Also available in: Unified diff