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