Revision 11384 trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/cutting/CuttingProcess.java
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