Revision 10834

View differences:

org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.93/org.gvsig.raster.tools.algorithm/org.gvsig.raster.tools.algorithm.clip/src/main/java/org/gvsig/raster/tools/algorithm/clip/ClipAlgorithmLibrary.java
1
/*
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2012 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.raster.tools.algorithm.clip;
25

  
26
import org.gvsig.i18n.Messages;
27
import org.gvsig.raster.algorithm.RasterBaseAlgorithmLibrary;
28
import org.gvsig.tools.library.AbstractLibrary;
29
import org.gvsig.tools.library.LibraryException;
30

  
31
/**
32
 * Initialization of ClipAlgorithmLibrary library.
33
 * 
34
 * @author <a href="mailto:nachobrodin@gmail.com">Nacho Brodin</a>
35
 */
36
public class ClipAlgorithmLibrary extends AbstractLibrary {
37
	public static final String         PROCESS_LABEL   = "ClipProcess";
38
	
39
    @Override
40
    protected void doInitialize() throws LibraryException {
41
        // Nothing to do
42
    }
43

  
44
    @Override
45
    public void doPostInitialize() throws LibraryException {
46
    	//Registers the process and its parameters
47
    	RasterBaseAlgorithmLibrary.register(PROCESS_LABEL, ClipProcess.class);
48
    	ClipProcess.registerParameters();
49
    	
50
        Messages.addResourceFamily(
51
            "org.gvsig.raster.tools.algorithm.clip", 
52
            ClipAlgorithmLibrary.class.getClassLoader(), 
53
            ClipAlgorithmLibrary.class.getClass().getName());
54
        //registerGeoProcess(new ClipAlgorithmLibrary());
55
    }
56
}
0 57

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.93/org.gvsig.raster.tools.algorithm/org.gvsig.raster.tools.algorithm.clip/src/main/java/org/gvsig/raster/tools/algorithm/clip/ClipException.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
* 
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
* 
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
* 
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
* MA  02110-1301, USA.
20
* 
21
*/
22
package org.gvsig.raster.tools.algorithm.clip;
23

  
24
import org.gvsig.raster.algorithm.process.ProcessException;
25

  
26

  
27
/**
28
 * This exception is thrown if happen problems processing data with this algorithm.
29
 * 
30
 * @author Nacho Brodin (nachobrodin@gmail.com)
31
 *
32
 */
33
public class ClipException extends ProcessException {
34
	private static final long serialVersionUID = -3022090543908771484L;
35
	
36
	public ClipException(String msg){
37
		super(msg);
38
	}
39
	
40
	public ClipException(String msg, Throwable e){
41
		super(msg, e);
42
	}
43
}
0 44

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.93/org.gvsig.raster.tools.algorithm/org.gvsig.raster.tools.algorithm.clip/src/main/java/org/gvsig/raster/tools/algorithm/clip/ClipProcess.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
* 
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
* 
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
* 
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
* MA  02110-1301, USA.
20
* 
21
*/
22
package org.gvsig.raster.tools.algorithm.clip;
23

  
24
import java.awt.geom.AffineTransform;
25
import java.awt.geom.Point2D;
26
import java.io.File;
27
import java.io.IOException;
28
import java.util.ArrayList;
29

  
30
import org.gvsig.fmap.dal.DALLocator;
31
import org.gvsig.fmap.dal.DataManager;
32
import org.gvsig.fmap.dal.DataServerExplorer;
33
import org.gvsig.fmap.dal.DataServerExplorerParameters;
34
import org.gvsig.fmap.dal.coverage.RasterLibrary;
35
import org.gvsig.fmap.dal.coverage.RasterLocator;
36
import org.gvsig.fmap.dal.coverage.RasterManager;
37
import org.gvsig.fmap.dal.coverage.dataset.Buffer;
38
import org.gvsig.fmap.dal.coverage.datastruct.Extent;
39
import org.gvsig.fmap.dal.coverage.datastruct.NoData;
40
import org.gvsig.fmap.dal.coverage.datastruct.Params;
41
import org.gvsig.fmap.dal.coverage.exception.InvalidSetViewException;
42
import org.gvsig.fmap.dal.coverage.exception.NotSupportedExtensionException;
43
import org.gvsig.fmap.dal.coverage.exception.ProcessInterruptedException;
44
import org.gvsig.fmap.dal.coverage.exception.RasterDriverException;
45
import org.gvsig.fmap.dal.coverage.exception.RmfSerializerException;
46
import org.gvsig.fmap.dal.coverage.process.BaseIncrementableTask;
47
import org.gvsig.fmap.dal.coverage.store.DataServerWriter;
48
import org.gvsig.fmap.dal.coverage.store.RasterDataStore;
49
import org.gvsig.fmap.dal.coverage.store.RasterQuery;
50
import org.gvsig.fmap.dal.coverage.store.parameter.NewRasterStoreParameters;
51
import org.gvsig.fmap.dal.coverage.store.parameter.RemoteStoreParameters;
52
import org.gvsig.fmap.dal.coverage.store.props.ColorInterpretation;
53
import org.gvsig.fmap.dal.coverage.store.props.ColorTable;
54
import org.gvsig.fmap.dal.coverage.util.RasterUtils;
55
import org.gvsig.fmap.dal.exception.CloseException;
56
import org.gvsig.fmap.dal.exception.DataException;
57
import org.gvsig.fmap.dal.exception.InitializeException;
58
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
59
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
60
import org.gvsig.i18n.Messages;
61
import org.gvsig.raster.algorithm.RasterBaseAlgorithmLibrary;
62
import org.gvsig.raster.algorithm.process.RasterProcess;
63
import org.gvsig.raster.fmap.layers.FLyrRaster;
64
import org.gvsig.raster.fmap.roi.VectorialROI;
65

  
66
/**
67
 * <code>ClippingProcess</code> es un proceso que usa un <code>Thread</code>
68
 * para aplicar un recorte a una capa y guardarlo en disco. Muestra una barra
69
 * de incremento informativa.
70
 *
71
 * @version 24/04/2007
72
 * @author BorSanZa - Borja S?nchez Zamorano
73
 */
74
public class ClipProcess extends RasterProcess {
75
	public static String                  LAYER             = "Layer";
76
	public static String                  PATH              = "Path";
77
	public static String                  FILENAME          = "filename";
78
	public static String                  TIME              = "Time";
79
	
80
	public static String                  SUFFIX            = "suffix";
81
	public static String                  PX_COORDS         = "pixelcoordinates";
82
	public static String                  WORLD_COORDS      = "realcoordinates";
83
	public static String                  DRAW_BANDS        = "drawablebands";
84
	public static String                  ONE_BY_BAND       = "onelayerperband";
85
	public static String                  INTERP_METHOD     = "interpolationmethod";
86
	public static String                  AT                = "affinetransform";
87
	public static String                  COLOR_INTERP      = "colorInterpretation";
88
	public static String                  SELECTED_ROIS     = "selectedrois";
89
	public static String                  RESOLUTION        = "resolution";
90
	public static String                  DRIVER_PARAMS     = "driverparams";
91
	
92
	private String                        fileName            = "";
93
	private String                        suffix              = ".tif";
94
	private FLyrRaster                    rasterSE            = null;
95
	private boolean                       oneLayerPerBand     = false;
96
	private int[]                         drawableBands       = { 0, 1, 2 };
97
	private double[]                      pValues             = null;
98
	private int                           interpolationMethod = Buffer.INTERPOLATION_Undefined;
99
	private Params                        params              = null;
100
	private ColorInterpretation           colorInterp         = null;
101
	private ArrayList<VectorialROI>       selectedRois        = null;
102
	private AffineTransform               affineTransform     = null;
103
	private double[]                      wcValues            = null;
104
	private RasterManager                 rManager            = RasterLocator.getManager();
105
	private BaseIncrementableTask         processIncrement    = null; 
106
	
107
	/**
108
	 * Variables de la resoluci?n de salida
109
	 */
110
	private int                           resolutionWidth     = 0;
111
	private int                           resolutionHeight    = 0;
112
	
113
	private Buffer                        buffer              = null;
114
	
115
	/**
116
	 * Par?metros obligatorios al proceso:
117
	 * <UL>
118
	 * <LI>filename: Nombre del fichero de salida</LI>
119
	 * <LI>datawriter: Escritor de datos</LI>
120
	 * <LI>viewname: Nombre de la vista sobre la que se carga la capa al acabar el proceso</LI>
121
	 * <LI>pixelcoordinates: Coordenadas pixel del recorte (ulx, uly, lrx, lry)</LI>
122
	 * <LI>layer: Capa de entrada para el recorte</LI>
123
	 * <LI>drawablebands: Bandas de entrada</LI>
124
	 * <LI>onelayerperband: booleano que informa de si escribimos una banda por fichero de salida o todas en un fichero</LI>
125
	 * <LI>interpolationmethod: M?todo de interpolaci?n.</LI>
126
	 * <LI>affinetransform: Transformaci?n que informa al dataset de salida de su referencia geografica</LI>
127
	 * <LI>resolution: Ancho y alto de la capa de salida</LI>
128
	 * </UL> 
129
	 */
130
	@SuppressWarnings("unchecked")
131
	public void init() {
132
		fileName = getStringParam(FILENAME);
133
		suffix = getStringParam(SUFFIX);
134
		pValues = getDoubleArrayParam(PX_COORDS);
135
		wcValues = getDoubleArrayParam(WORLD_COORDS);
136
		rasterSE = getParam(LAYER) != null ? (FLyrRaster) getParam(LAYER) : null;
137
		drawableBands = getIntArrayParam(DRAW_BANDS);
138
		oneLayerPerBand = getBooleanParam(ONE_BY_BAND);
139
		interpolationMethod = getIntParam(INTERP_METHOD);
140
		affineTransform = (AffineTransform)getParam(AT);
141
		colorInterp = (ColorInterpretation)getParam(COLOR_INTERP);
142
		selectedRois = (ArrayList<VectorialROI>)getParam(SELECTED_ROIS);
143
		if(getIntArrayParam(RESOLUTION) != null) {
144
			resolutionWidth = getIntArrayParam(RESOLUTION)[0];
145
			resolutionHeight = getIntArrayParam(RESOLUTION)[1];
146
		}
147
		params = (Params) getParam(DRIVER_PARAMS);
148
	}
149
	
150
	public static void registerParameters() {
151
		LAYER = RasterBaseAlgorithmLibrary.registerInputParameter(LAYER, FLyrRaster.class);
152
		SUFFIX = RasterBaseAlgorithmLibrary.registerInputParameter(SUFFIX, String.class);
153
		PX_COORDS = RasterBaseAlgorithmLibrary.registerInputParameter(PX_COORDS, double[].class);
154
		WORLD_COORDS = RasterBaseAlgorithmLibrary.registerInputParameter(WORLD_COORDS, double[].class);
155
		DRAW_BANDS = RasterBaseAlgorithmLibrary.registerInputParameter(DRAW_BANDS, int[].class);
156
		ONE_BY_BAND = RasterBaseAlgorithmLibrary.registerInputParameter(ONE_BY_BAND, Boolean.class);
157
		INTERP_METHOD = RasterBaseAlgorithmLibrary.registerInputParameter(INTERP_METHOD, Integer.class);
158
		AT = RasterBaseAlgorithmLibrary.registerInputParameter(AT, AffineTransform.class);
159
		COLOR_INTERP = RasterBaseAlgorithmLibrary.registerInputParameter(COLOR_INTERP, ColorInterpretation.class);
160
		SELECTED_ROIS = RasterBaseAlgorithmLibrary.registerInputParameter(SELECTED_ROIS, ArrayList.class);
161
		RESOLUTION = RasterBaseAlgorithmLibrary.registerInputParameter(RESOLUTION, int[].class);
162
		DRIVER_PARAMS = RasterBaseAlgorithmLibrary.registerOutputParameter(DRIVER_PARAMS, Params.class);
163
		
164
		PATH = RasterBaseAlgorithmLibrary.registerInputParameter(PATH, String.class);
165
		FILENAME = RasterBaseAlgorithmLibrary.registerOutputParameter(FILENAME, String.class);
166
		TIME = RasterBaseAlgorithmLibrary.registerOutputParameter(TIME, Long.class);
167
	}
168

  
169
	/**
170
	 * Salva la tabla de color al fichero rmf.
171
	 * @param fName
172
	 * @throws ClipException 
173
	 * @throws IOException
174
	 */
175
	private void saveToRmf(String fileName) throws ClipException {
176
		RasterDataStore rds = null;
177
		int limitNumberOfRequests = 20;
178
		while (rds == null && limitNumberOfRequests > 0) {
179
			try {
180
				rds = rasterSE.getDataStore();
181
			} catch (IndexOutOfBoundsException e) {
182
				//En ocasiones, sobre todo con servicios remotos al pedir un datasource da una excepci?n de este tipo
183
				//se supone que es porque hay un refresco en el mismo momento de la petici?n por lo que como es m?s lento de
184
				//gestionar pilla a la capa sin datasources asociados ya que est? reasignandolo. Si volvemos a pedirlo debe
185
				//haberlo cargado ya.
186
				try {
187
					Thread.sleep(200);
188
				} catch (InterruptedException e1) {
189
				}
190
			}
191
			limitNumberOfRequests--;
192
		}
193
		
194
		if (rds == null) {
195
			//RasterToolsUtil.messageBoxError("error_load_layer", this, new Exception("Error writing RMF. limitNumberOfRequests=" + limitNumberOfRequests));
196
			return;
197
		}
198

  
199
		// Guardamos en el RMF el valor NoData
200
		if(rasterSE.getNoDataValue() != null) {
201
			NoData nodata = (NoData)rasterSE.getNoDataValue();
202
			nodata.setFileName(fileName);
203
			nodata.save();
204
		}
205

  
206
		// Guardamos en el RMF la tabla de color
207
		ColorTable colorTable = rasterSE.getRender().getColorTable();
208
		try {
209
			rManager.getProviderServices().saveObjectToRmfFile(fileName, ColorTable.class, colorTable);
210
		} catch (RmfSerializerException e) {
211
			throw new ClipException("error_salvando_rmf", e);
212
		}
213
	}
214

  
215
	/**
216
	 * Tarea de recorte
217
	 * @throws ClipException 
218
	 */
219
	@SuppressWarnings("deprecation")
220
	public void process() throws ProcessInterruptedException, ClipException {
221
		RasterDataStore dstoreCopy = null;
222
		RasterUtils util = RasterLocator.getManager().getRasterUtils();
223
		
224
		try {
225
			long t2;
226
			long t1 = new java.util.Date().getTime();
227

  
228
			try {
229
				Thread.sleep(1000);
230
			} catch (InterruptedException e1) {
231
				e1.printStackTrace();
232
			}
233
			
234
			insertLineLog(Messages.getText("leyendo_raster"));
235
			
236
			dstoreCopy = rasterSE.getDataStore().newDataStore();
237
			RasterQuery query = rManager.createQuery();
238
			query.setDrawableBands(drawableBands);
239

  
240
			if(dstoreCopy.getParameters() instanceof RemoteStoreParameters &&
241
				!((RemoteStoreParameters)dstoreCopy.getParameters()).isSizeFixed()) {
242
				insertLineLog(Messages.getText("downloading_image"));
243
				((RemoteStoreParameters)dstoreCopy.getParameters()).setWidth(resolutionWidth);
244
				((RemoteStoreParameters)dstoreCopy.getParameters()).setHeight(resolutionHeight);
245
				Extent bbox = RasterLocator.getManager().getDataStructFactory().createExtent(wcValues[0], wcValues[1], wcValues[2], wcValues[3]);
246
				query.setAreaOfInterest(bbox, resolutionWidth, resolutionHeight);
247
				try {
248
					buffer = dstoreCopy.query(query);
249
				} catch (InvalidSetViewException e) {
250
					throw new ClipException("No se ha podido asignar la vista al inicial el proceso de recorte.", e);
251
				}
252
			} else {
253
				if(interpolationMethod != Buffer.INTERPOLATION_Undefined) {
254
					try {
255
						if(pValues != null) {
256
							if (util.isBufferTooBig(new double[] { pValues[0], pValues[3], pValues[2], pValues[1] }, drawableBands.length))
257
								query.setReadOnly(true);
258
							query.setAreaOfInterest((int)pValues[0], (int)pValues[1], (int)Math.abs(pValues[2] - pValues[0]) + 1, (int)Math.abs(pValues[3] - pValues[1]) + 1);
259
						} else if(wcValues != null) {
260
							query.setReadOnly(true);
261
							query.setAreaOfInterest(wcValues[0], wcValues[1], Math.abs(wcValues[0] - wcValues[2]), Math.abs(wcValues[1] - wcValues[3]));
262
						}
263
						buffer = dstoreCopy.query(query);
264
					} catch (InvalidSetViewException e) {
265
						throw new ClipException("No se ha podido asignar la vista al inicial el proceso de recorte.", e);
266
					}
267

  
268
					insertLineLog(Messages.getText("interpolando"));
269
					
270
					Buffer bufTmp = buffer;
271
					processIncrement = bufTmp.getIncrementableTask(Buffer.INCREMENTABLE_INTERPOLATION);
272
					buffer = bufTmp.getAdjustedWindow(resolutionWidth, resolutionHeight, interpolationMethod);
273
					if(bufTmp != buffer)
274
						bufTmp.dispose();
275
				} else {
276
					try {
277
						if (util.isBufferTooBig(new double[] { 0, 0, resolutionWidth, resolutionHeight }, drawableBands.length))
278
							query.setReadOnly(true);
279
						if(pValues != null) 
280
							query.setAreaOfInterest((int)pValues[0], (int)pValues[3], (int)Math.abs(pValues[2] - pValues[0]) + 1, (int)Math.abs(pValues[1] - pValues[3]) + 1, resolutionWidth, resolutionHeight);
281
						else if(wcValues != null) {
282
							Extent bbox = RasterLocator.getManager().getDataStructFactory().createExtent(wcValues[0], wcValues[1], wcValues[2], wcValues[3]);
283
							query.setAreaOfInterest(bbox, resolutionWidth, resolutionHeight);
284
						}
285
						buffer = dstoreCopy.query(query);
286
					} catch (InvalidSetViewException e) {
287
						throw new ClipException("No se ha podido asignar la vista al inicial el proceso de recorte.", e);
288
					}
289
				}
290
			}
291
			
292
			//TODO: FUNCIONALIDAD: Poner los getWriter con la proyecci?n del fichero fuente
293

  
294
			if ((selectedRois != null) && (!query.isReadOnly())){
295
				if (selectedRois.size() > 0){
296
					int despX = 0;
297
					int despY = 0;
298
					if (pValues != null){
299
						despX = (int)pValues[0];
300
						despY = (int)pValues[1];
301
					} else if (wcValues != null){
302
						despX = (int)dstoreCopy.worldToRaster(new Point2D.Double(wcValues[0], wcValues[1])).getX();
303
						despY = (int)dstoreCopy.worldToRaster(new Point2D.Double(wcValues[0], wcValues[1])).getY();
304
					}
305
					drawOnlyROIs(buffer, selectedRois, despX, despY);
306
				}
307
			}
308
			
309
			
310
			insertLineLog(Messages.getText("salvando_imagen"));
311
			
312
			DataManager manager = DALLocator.getDataManager();
313
			String provider = "Gdal Store";
314
			DataServerExplorerParameters eparams = manager.createServerExplorerParameters("FilesystemExplorer");
315
			
316
			String finalFileName = "";
317
			NewRasterStoreParameters sparams = null;
318
			processIncrement = RasterLocator.getManager().createDataServerWriter();
319
			if (oneLayerPerBand) {
320
				long[] milis = new long[drawableBands.length];
321
				String[] fileNames = new String[drawableBands.length];
322
				for (int i = 0; i < drawableBands.length; i++) {
323
					fileNames[i] = fileName + "_B" + drawableBands[i] + suffix;
324
					
325
					int index = fileNames[i].lastIndexOf(File.separator);
326
					if(index < 0)
327
						index = fileNames[i].length();
328
					String path = fileNames[i].substring(0, index);
329
					String file = fileNames[i].substring(index + 1, fileNames[i].length());
330
					
331
					eparams.setDynValue("initialpath", path);
332
					DataServerExplorer serverExplorer = manager.openServerExplorer(eparams.getExplorerName(), eparams);
333

  
334
					sparams = (NewRasterStoreParameters)serverExplorer.getAddParameters(provider);
335
					sparams.setDataServer((DataServerWriter)processIncrement);
336
					sparams.setDestination(path, file);
337
					sparams.setBuffer(buffer);
338
					sparams.setColorInterpretation(new String[]{ColorInterpretation.GRAY_BAND});
339
					sparams.setWktProjection(dstoreCopy.getWktProjection());
340
					sparams.setBand(i);
341
					sparams.setAffineTransform(affineTransform);
342
					sparams.setDriverParams(params);
343
					
344
					serverExplorer.add(provider, sparams, true);
345
					
346
					saveToRmf(fileNames[i]);
347
					t2 = new java.util.Date().getTime();
348
					milis[i] = (t2 - t1);
349
					t1 = new java.util.Date().getTime();
350
				}
351
				if (incrementableTask != null) {
352
					incrementableTask.processFinalize();
353
					incrementableTask = null;
354
				}
355
				for (int i = 0; i < drawableBands.length; i++) {
356
					if (externalActions != null)
357
						externalActions.end(new Object[] { fileName + "_B" + drawableBands[i] + suffix, new Long(milis[i]) });
358
				}
359
			} else {
360
				File f = new File(fileName);
361
				if (f.exists()) {
362
					f.delete();
363
				}
364
				f = null;
365
				
366
				if(suffix != null)
367
					finalFileName = fileName.endsWith(suffix) ? fileName : fileName + suffix;
368
				else
369
					finalFileName = fileName;
370
				
371
				int index = finalFileName.lastIndexOf(File.separator);
372
				if(index < 0)
373
					index = finalFileName.length();
374
				String path = finalFileName.substring(0, index);
375
				String file = finalFileName.substring(index + 1, finalFileName.length());
376
				
377
				eparams.setDynValue("initialpath", path);
378
				DataServerExplorer serverExplorer = manager.openServerExplorer(eparams.getExplorerName(), eparams);
379

  
380
				try {
381
					provider = rManager.createWriter(finalFileName).getProviderName();
382
				} catch (NotSupportedExtensionException e1) {
383
					throw new ClipException(Messages.getText("no_driver_escritura"));
384
				} catch (RasterDriverException e1) {
385
					throw new ClipException(Messages.getText("no_driver_escritura"));
386
				}
387
				
388
				sparams = (NewRasterStoreParameters)serverExplorer.getAddParameters(provider);
389
				sparams.setDataServer((DataServerWriter)processIncrement);
390
				sparams.setDestination(path, file);
391
				sparams.setBuffer(buffer);
392
				if(colorInterp != null)
393
					sparams.setColorInterpretation(colorInterp.getValues());
394
				sparams.setWktProjection(dstoreCopy.getWktProjection());
395
				sparams.setAffineTransform(affineTransform);
396
				sparams.setDriverParams(params);
397
				sparams.setBand(-1);
398
				
399
				serverExplorer.add(provider, sparams, true);
400
				
401
				saveToRmf(finalFileName);
402
				
403
				
404
				t2 = new java.util.Date().getTime();
405
				if (incrementableTask != null) {
406
					incrementableTask.processFinalize();
407
					incrementableTask = null;
408
				}
409
				//Damos tiempo a parar el Thread del incrementable para que no se cuelgue la ventana
410
				//El tiempo es como m?nimo el de un bucle del run de la tarea incrementable
411
				try {
412
					Thread.sleep(600);
413
				} catch (InterruptedException e) {
414
					throw new ProcessInterruptedException(e);
415
				}
416
				if (externalActions != null)
417
					externalActions.end(new Object[]{fileName, new Long((t2 - t1))});
418
			}
419

  
420
		} catch (RasterDriverException e) {
421
			throw new ClipException(Messages.getText("error_writer"));
422
		} catch (ValidateDataParametersException e) {
423
			throw new ClipException(Messages.getText("error_georasterwriter"));
424
		} catch (ProviderNotRegisteredException e) {
425
			throw new ClipException(Messages.getText("error_georasterwriter"));
426
		} catch (InitializeException e) {
427
			throw new ClipException(Messages.getText("error_georasterwriter"));
428
		} catch (DataException e) {
429
			throw new ClipException(Messages.getText("error_georasterwriter"));
430
		} catch (Exception e) {
431
			e.printStackTrace();
432
		} finally {
433
			if (dstoreCopy != null)
434
				try {
435
					dstoreCopy.close();
436
				} catch (CloseException e) {
437
					throw new ClipException(Messages.getText("error_writer"));
438
				}
439
			buffer = null;
440
		}
441
	}
442
	
443
	
444
	/**
445
	 * Acciones para poner a NoData los pixels que est?n fuera de las
446
	 * regiones de inter?s seleccionadas.
447
	 * @param buffer
448
	 */
449
	private void drawOnlyROIs(Buffer buffer, ArrayList<VectorialROI> rois, int despX, int despY){
450
		for (int i = 0 ; i < buffer.getWidth() ; i++){
451
			for (int j = 0 ; j < buffer.getHeight() ; j++){
452
				boolean  inside = false;
453
				for (int k = 0 ; k < rois.size() ; k++){
454
					VectorialROI roi = (VectorialROI)rois.get(k);
455
					//TODO: Hacer la comprobacion por coordenadas del mundo en lugar de coordenadas pixel.
456
					if (roi.isInGrid(i + despX, j + despY)){
457
						inside = true;
458
					}
459
				}
460
				if (!inside){
461
					for (int l = 0 ; l < buffer.getBandCount() ; l++){
462
						if (buffer.getDataType() == Buffer.TYPE_BYTE){
463
							buffer.setElem(j, i, l, 
464
									buffer.getNoDataValue().isDefined() ? buffer.getNoDataValue().getValue().byteValue() : RasterLibrary.defaultByteNoDataValue);
465
						} else if (buffer.getDataType() == Buffer.TYPE_SHORT){
466
							buffer.setElem(j, i, l, 
467
									buffer.getNoDataValue().isDefined() ? buffer.getNoDataValue().getValue().shortValue() : RasterLibrary.defaultShortNoDataValue);
468
						} else if (buffer.getDataType() == Buffer.TYPE_INT){
469
							buffer.setElem(j, i, l, 
470
									buffer.getNoDataValue().isDefined() ? buffer.getNoDataValue().getValue().intValue() : RasterLibrary.defaultIntegerNoDataValue);
471
						} else if (buffer.getDataType() == Buffer.TYPE_FLOAT){
472
							buffer.setElem(j, i, l, 
473
									buffer.getNoDataValue().isDefined() ? buffer.getNoDataValue().getValue().floatValue() : RasterLibrary.defaultFloatNoDataValue);
474
						} else if (buffer.getDataType() == Buffer.TYPE_DOUBLE){
475
							buffer.setElem(j, i, l, 
476
									buffer.getNoDataValue().isDefined() ? buffer.getNoDataValue().getValue().doubleValue() : RasterLibrary.defaultDoubleNoDataValue);
477
						}
478
					}
479
				}
480
			}
481
		}
482
	}
483
	
484

  
485
	/*
486
	 * (non-Javadoc)
487
	 * @see org.gvsig.gui.beans.incrementabletask.IIncrementable#getPercent()
488
	 */
489
	public int getPercent() {
490
		return (processIncrement != null) ? processIncrement.getPercent() : 0;
491
	}
492

  
493
	/*
494
	 * (non-Javadoc)
495
	 * @see org.gvsig.gui.beans.incrementabletask.IIncrementable#getTitle()
496
	 */
497
	public String getTitle() {
498
		return Messages.getText("incremento_recorte");
499
	}
500
	
501
	/*
502
	 * (non-Javadoc)
503
	 * @see java.lang.Object#finalize()
504
	 */
505
	protected void finalize() throws Throwable {
506
		fileName            = null;
507
		suffix              = null;
508
		rasterSE            = null;
509
		drawableBands       = null;
510
		pValues             = null;
511
		params              = null;
512
		colorInterp         = null;
513
		affineTransform     = null;
514
		wcValues            = null;
515
		buffer              = null;
516
		processIncrement    = null;
517
		if(selectedRois != null) {
518
			selectedRois.clear();
519
			selectedRois = null;
520
		}
521
		super.finalize();
522
	}
523
}
0 524

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.93/org.gvsig.raster.tools.algorithm/org.gvsig.raster.tools.algorithm.clip/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
1
org.gvsig.raster.tools.algorithm.saveraster.ClipAlgorithmLibrary
0 2

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.93/org.gvsig.raster.tools.algorithm/org.gvsig.raster.tools.algorithm.clip/pom.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
3
	<modelVersion>4.0.0</modelVersion>
4
	<artifactId>org.gvsig.raster.tools.algorithm.clip</artifactId>
5
	<packaging>jar</packaging>
6
	<name>org.gvsig.raster.tools.algorithm.clip</name>
7
	<parent>
8
		<groupId>org.gvsig</groupId>
9
		<artifactId>org.gvsig.raster.tools.algorithm</artifactId>
10
		<version>2.2.0-SNAPSHOT</version>
11
	</parent>
12
    <dependencies>
13
		<dependency>
14
			<groupId>org.gvsig</groupId>
15
			<artifactId>org.gvsig.raster.algorithm</artifactId>
16
            <scope>compile</scope>
17
		</dependency>
18
		<!--Dependencia debido a que este algoritmo rasteriza capas de gvSIG.-->
19
		<dependency>
20
			<groupId>org.gvsig</groupId>
21
			<artifactId>org.gvsig.raster.fmap</artifactId>
22
            <scope>compile</scope>
23
		</dependency>
24
		<dependency>
25
			<groupId>org.gvsig</groupId>
26
			<artifactId>org.gvsig.fmap.mapcontext</artifactId>
27
            <scope>compile</scope>
28
		</dependency>
29
	</dependencies>
30
</project>
0 31

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.93/org.gvsig.raster.tools.algorithm/org.gvsig.raster.tools.algorithm.swing/org.gvsig.raster.tools.algorithm.swing.api/pom.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
3
	<modelVersion>4.0.0</modelVersion>
4
	<artifactId>org.gvsig.raster.tools.algorithm.swing.api</artifactId>
5
	<packaging>jar</packaging>
6
	<name>org.gvsig.raster.tools.algorithm.swing.api</name>
7
	<parent>
8
		<groupId>org.gvsig</groupId>
9
		<artifactId>org.gvsig.raster.tools.algorithm.swing</artifactId>
10
		<version>2.2.93</version>
11
	</parent>
12
	<dependencies>
13
		<dependency>
14
			<groupId>org.gvsig</groupId>
15
			<artifactId>org.gvsig.raster.algorithm</artifactId>
16
            <scope>compile</scope>
17
		</dependency>
18
		<dependency>
19
            <groupId>org.gvsig</groupId>
20
            <artifactId>org.gvsig.projection.api</artifactId>
21
            <scope>compile</scope>
22
        </dependency>
23
        <dependency>
24
            <groupId>org.gvsig</groupId>
25
            <artifactId>org.gvsig.projection.cresques.impl</artifactId>
26
            <scope>runtime</scope>
27
        </dependency>
28
        <dependency>
29
			<groupId>org.gvsig</groupId>
30
			<artifactId>org.gvsig.raster.swing.api</artifactId>
31
            <scope>compile</scope>
32
		</dependency>
33
		<dependency>
34
			<groupId>org.gvsig</groupId>
35
			<artifactId>org.gvsig.raster.swing.impl</artifactId>
36
            <scope>runtime</scope>
37
		</dependency>
38
	</dependencies>
39
</project>
0 40

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.93/org.gvsig.raster.tools.algorithm/org.gvsig.raster.tools.algorithm.swing/org.gvsig.raster.tools.algorithm.swing.api/src/main/java/org/gvsig/raster/tools/algorithm/swing/AlgorithmSwingManager.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.tools.algorithm.swing;
23

  
24
import org.gvsig.raster.algorithm.BasicAPISwingPanel;
25
import org.gvsig.raster.swing.RasterWindowManager;
26
import org.gvsig.raster.tools.algorithm.swing.maskthreshold.MaskThresholdPanel;
27
import org.gvsig.raster.tools.algorithm.swing.saveraster.SaveRasterPanel;
28

  
29

  
30
/**
31
 * This class is responsible of the management of the library's swing user
32
 * interface. It is the swing library's main entry point, and provides all the
33
 * services to manage library swing components.
34
 * 
35
 * @see RasterWindowManager
36
 * @see JValidationServicePanel
37
 * @author gvSIG team
38
 * @version $Id$
39
 */
40
public interface AlgorithmSwingManager {
41

  
42
    /**
43
     * Returns the translation of a string.
44
     * 
45
     * @param key
46
     *            String to translate
47
     * @return a String with the translation of the string passed by parameter
48
     */
49
    public String getTranslation(String key);
50

  
51
    /**
52
     * Creates the panel for the MaskThreshold task
53
     * @return
54
     */
55
    public MaskThresholdPanel createMaskThresholdPanel();
56
    
57
    public BasicAPISwingPanel createLayerDatatypePanel(Object inputStore, String inputDatatype, String layerName);
58

  
59
    /**
60
     * Creates the panel for the tool save raster
61
     * @return
62
     */
63
    public SaveRasterPanel createSaveRasterPanel();
64
}
0 65

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.93/org.gvsig.raster.tools.algorithm/org.gvsig.raster.tools.algorithm.swing/org.gvsig.raster.tools.algorithm.swing.api/src/main/java/org/gvsig/raster/tools/algorithm/swing/saveraster/SaveRasterPanel.java
1
package org.gvsig.raster.tools.algorithm.swing.saveraster;
2

  
3
import java.awt.event.ActionListener;
4
import java.beans.PropertyChangeListener;
5

  
6
import javax.swing.JButton;
7
import javax.swing.JComboBox;
8
import javax.swing.JComponent;
9
import javax.swing.JLabel;
10

  
11
import org.gvsig.gui.beans.datainput.DataInputContainerListener;
12

  
13
public interface SaveRasterPanel {
14
	public static int   WIDTH_COMPONENT      = 0;
15
	public static int   HEIGHT_COMPONENT     = 1;
16
	public static int   CELLSIZE_COMPONENT   = 2;
17
	public static int   WCMS_COMPONENT       = 3;
18
	public static int   HCMS_COMPONENT       = 4;
19
	public static int   SCALE_COMPONENT      = 5;
20
	public static int   RESOLUTION_COMPONENT = 6;
21
	public static int   FILESEL_COMPONENT    = 7;
22
	public static int   PROPS_COMPONENT      = 8;
23
	public static int   ULX_COMPONENT        = 9;
24
	public static int   ULY_COMPONENT        = 10;
25
	public static int   LRX_COMPONENT        = 11;
26
	public static int   LRY_COMPONENT        = 12;
27
	public static int   PIXEL_SELECTOR       = 13;
28
	public static int   PRINT_SELECTOR       = 14;
29
	
30
	public JComponent getComponent();
31
	
32
	public void setValueLRX(String value);
33
	
34
	public void setValueLRY(String value);
35
	
36
	public void setValueULX(String value);
37
	
38
	public void setValueULY(String value);
39
	
40
	public String getValueLRX();
41
	
42
	public String getValueLRY();
43
	
44
	public String getValueULX();
45
	
46
	public String getValueULY();
47
	
48
	public String getScaleValue();
49
	
50
	public void setScaleValue(String value);
51
	
52
	public JButton getBProperties();
53
	
54
	public JComboBox getCbResolution();
55
	
56
	public JLabel getLFileName();
57
	
58
	public JButton getBSelect();
59
	
60
	public void setValueXCms(String value);
61
	
62
	public void setValueYCms(String value);
63
	
64
	public String getValueXCms();
65
	
66
	public String getValueYCms();
67
	
68
	public String getResolutionValue();
69
	
70
	public String getCellSize();
71
	
72
	public void setCellSize(String value);
73
	
74
	public String getWidthPxValue();
75
	
76
	public String getHeightPxValue();
77
	
78
	public int getWidthPxPrint();
79
	
80
	public int getHeightPxPrint();
81
	
82
	public void setWidthPxValue(String value);
83
	
84
	public void setHeightPxValue(String value);
85
	
86
	public void setSizePxPrintResult(int w, int h);
87
	
88
	public void setSizeMB(double mb);
89
	
90
	/**
91
	 * Returns the ID of a component
92
	 * @param obj
93
	 * @return
94
	 */
95
	public int getComponentID(Object obj);
96
	
97
	/**
98
	 * Returns true if the pixel method is selected and false
99
	 * if is the print method
100
	 * @return
101
	 */
102
	public boolean isPixelMethodSelected();
103

  
104
	/**
105
	 * Checks the input fields and if the value is not 
106
	 * valid sets these to zero 
107
	 */
108
	public void validateFields();
109
	
110
	/**
111
	 * Listeners for the coordinates boxes
112
	 * @param listener
113
	 */
114
	public void addValueChangedListener(DataInputContainerListener listener);
115
	
116
	/**
117
	 * Listener for input text boxes
118
	 * @param listener
119
	 */
120
	public void addPropertiesChangeListener(PropertyChangeListener listener);
121
	
122
	/**
123
	 * Adds listeners for the buttons
124
	 * @param listener
125
	 */
126
	public void addActionListener(ActionListener listener);
127
}
0 128

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.93/org.gvsig.raster.tools.algorithm/org.gvsig.raster.tools.algorithm.swing/org.gvsig.raster.tools.algorithm.swing.api/src/main/java/org/gvsig/raster/tools/algorithm/swing/AlgorithmSwingLocator.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.tools.algorithm.swing;
23

  
24
import org.gvsig.tools.locator.BaseLocator;
25

  
26
/**
27
 * This locator is the entry point for the Validation swing library,
28
 * providing access to all Validation swing services through the
29
 * {@link RasterSwingManager} .
30
 * 
31
 * @author gvSIG team
32
 * @version $Id$
33
 */
34
public class AlgorithmSwingLocator extends BaseLocator {
35

  
36
    /**
37
     * Validation swing manager name.
38
     */
39
    public static final String SWING_MANAGER_NAME =
40
        "Raster.algorithm.swing.manager";
41

  
42
    /**
43
     * Validation swing manager description.
44
     */
45
    public static final String SWING_MANAGER_DESCRIPTION =
46
        "Raster Algorithm UIManager";
47

  
48
    private static final String LOCATOR_NAME = "Raster.algorithm.swing.locator";
49

  
50
    /**
51
     * Unique instance.
52
     */
53
    private static final AlgorithmSwingLocator INSTANCE =
54
        new AlgorithmSwingLocator();
55

  
56
    /**
57
     * Return the singleton instance.
58
     * 
59
     * @return the singleton instance
60
     */
61
    public static AlgorithmSwingLocator getInstance() {
62
        return INSTANCE;
63
    }
64

  
65
    /**
66
     * Return the Locator's name
67
     * 
68
     * @return a String with the Locator's name
69
     */
70
    public final String getLocatorName() {
71
        return LOCATOR_NAME;
72
    }
73

  
74
    /**
75
     * Registers the Class implementing the PersistenceManager interface.
76
     * 
77
     * @param clazz
78
     *            implementing the PersistenceManager interface
79
     */
80
    public static void registerSwingManager(
81
        Class<? extends AlgorithmSwingManager> clazz) {
82
        getInstance().register(SWING_MANAGER_NAME, SWING_MANAGER_DESCRIPTION,
83
            clazz);
84
    }
85

  
86
    /**
87
     * Gets the instance of the {@link ScriptingUIManager} registered.
88
     * 
89
     * @return {@link ScriptingUIManager}
90
     */
91
    public static AlgorithmSwingManager getSwingManager() {
92
        return (AlgorithmSwingManager) getInstance()
93
            .get(SWING_MANAGER_NAME);
94
    }
95

  
96
}
0 97

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.93/org.gvsig.raster.tools.algorithm/org.gvsig.raster.tools.algorithm.swing/org.gvsig.raster.tools.algorithm.swing.api/src/main/java/org/gvsig/raster/tools/algorithm/swing/AlgorithmSwingLibrary.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.tools.algorithm.swing;
23

  
24
import org.gvsig.tools.library.AbstractLibrary;
25
import org.gvsig.tools.library.LibraryException;
26
import org.gvsig.tools.locator.ReferenceNotRegisteredException;
27

  
28
/**
29
 * Library for Swing API initialization and configuration.
30
 * 
31
 * @author gvSIG team
32
 * @version $Id$
33
 */
34
public class AlgorithmSwingLibrary extends AbstractLibrary {
35

  
36
    @Override
37
    protected void doInitialize() throws LibraryException {
38
        // Do nothing
39
    }
40

  
41
    @Override
42
    protected void doPostInitialize() throws LibraryException {
43
        // Validate there is any implementation registered.
44
        AlgorithmSwingManager manager =
45
        	AlgorithmSwingLocator.getSwingManager();
46
        if (manager == null) {
47
            throw new ReferenceNotRegisteredException(
48
            		AlgorithmSwingLocator.SWING_MANAGER_NAME,
49
            		AlgorithmSwingLocator.getInstance());
50
        }
51
    }
52

  
53
}
0 54

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.93/org.gvsig.raster.tools.algorithm/org.gvsig.raster.tools.algorithm.swing/org.gvsig.raster.tools.algorithm.swing.api/src/main/java/org/gvsig/raster/tools/algorithm/swing/bean/LayerComboElement.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2011-2012 Prodevelop S.L
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18
 * MA  02110-1301, USA.
19
 *
20
 */
21
package org.gvsig.raster.tools.algorithm.swing.bean;
22

  
23
/**
24
 * Nacho Brodin (nachobrodin@gmail.com)
25
 */
26
public interface LayerComboElement {
27
	public String toString();
28
	
29
	public int getNumOfElements();
30
}
0 31

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.93/org.gvsig.raster.tools.algorithm/org.gvsig.raster.tools.algorithm.swing/org.gvsig.raster.tools.algorithm.swing.api/src/main/java/org/gvsig/raster/tools/algorithm/swing/maskthreshold/MaskThresholdData.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
* 
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
* 
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
* 
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
* MA  02110-1301, USA.
20
* 
21
*/
22
package org.gvsig.raster.tools.algorithm.swing.maskthreshold;
23

  
24
/**
25
 * Data model for the mask threshold user interface
26
 * @author Nacho Brodin (nachobrodin@gmail.com)
27
 */
28
public interface MaskThresholdData {
29
	
30
	public Object getInputLayer();
31
	
32
	public int getBandInputLayer();
33
	
34
	public int getOperation();
35
	
36
	public int getOperationMethod();
37
	
38
	public double getThresholdValue();
39
	
40
	public Object getOperationLayer();
41
	
42
	public int getBandOperationLayer();
43
	
44
	public Object getOutputInputLayer();
45
	
46
	public int getBandOutputLayer();
47
	
48
    public int getMethodOutput();
49
	
50
	public double getFixedValue();
51
}
0 52

  
org.gvsig.raster.tools/tags/org.gvsig.raster.tools-2.2.93/org.gvsig.raster.tools.algorithm/org.gvsig.raster.tools.algorithm.swing/org.gvsig.raster.tools.algorithm.swing.api/src/main/java/org/gvsig/raster/tools/algorithm/swing/maskthreshold/MaskThresholdPanel.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
* 
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
* 
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
* 
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
* MA  02110-1301, USA.
20
* 
21
*/
22
package org.gvsig.raster.tools.algorithm.swing.maskthreshold;
23

  
24
import javax.swing.JComboBox;
25
import javax.swing.JComponent;
26

  
27
import org.gvsig.raster.swing.listener.PanelChangeListener;
28

  
29
/**
30
 * API for the mask threshold user interface
31
 * @author Nacho Brodin (nachobrodin@gmail.com)
32
 */
33
public interface MaskThresholdPanel {
34
	public static final int           LAYERS_INPUT_COMBO       = 0;
35
	public static final int           BANDS_INPUT_COMBO        = 1;
36
	public static final int           LAYERS_OPERAT_COMBO      = 2;
37
	public static final int           BANDS_OPERAT_COMBO       = 3;
38
	public static final int           LAYERS_OUTPUT_COMBO      = 4;
39
	public static final int           BANDS_OUTPUT_COMBO       = 5;
40
	public static final int           METHOD_OUTPUT_COMBO      = 6;
41
	public static final int           OPERATION_OUTPUT_COMBO   = 7;
42
	
43
	public MaskThresholdData getOutput();
44
	
45
	public JComboBox getComboBox(int component);
46
	
47
	public JComponent getComponent();
48
	
49
	/**
50
	 * Events when any component receives changes
51
	 * @param listener
52
	 */
53
	public void addPanelChangeEvent(PanelChangeListener listener);
54
}
0 55

  
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff