Revision 20393 trunk/extensions/extRemoteSensing/src/org/gvsig/remotesensing/gridmath/GridMathProcess.java

View differences:

GridMathProcess.java
267 267

  
268 268
	public void process() throws InterruptedException {
269 269
		RasterBuffer inputBuffer=null;
270
		/*
271
			Comprobar que todas las variables que intervienen en la expresion 
272
			estan en el HasMap de parametros.
273
		 */
274
		
275
			for (Iterator iter = parser.getSymbolTable().values().iterator(); iter.hasNext();) {
276
				Variable variable = (Variable) iter.next();	
277
				if (!params.containsKey(variable.getName()))
278
					try {
279
						throw new NoAssignedVarsException();
280
					} catch (NoAssignedVarsException e) {
281
						RasterToolsUtil.messageBoxError(PluginServices.getText(this,"variables_sin_asignar"),this);
282
					}
283
			}
284
		
285 270
	
286
			// Construccion del rasterbuffer que recoge el resultado del calculo 
287
			rasterResult = RasterBuffer.getBuffer(RasterBuffer.TYPE_DOUBLE, resultExtent.getNX() ,resultExtent.getNY(), 1, true);
271
		// Construccion del rasterbuffer que recoge el resultado del calculo 
272
		rasterResult = RasterBuffer.getBuffer(RasterBuffer.TYPE_DOUBLE, resultExtent.getNX() ,resultExtent.getNY(), 1, true);
273

  
274
			
275
		// Calculo de grid resultante
276
		int iNX = resultExtent.getNX();
277
		int iNY = resultExtent.getNY();
288 278
	
279
		// Calculo de grid resultante
280
		for (int x=0;x<iNX;x++){
281
			if (cancel) return;  //Proceso cancelado 
282
			for(int y=0;y<iNY;y++){
283
				int i=0;
284
				for (Iterator iter = params.keySet().iterator(); iter.hasNext();) {
285
					String varName = (String)iter.next();
286
					Object data[]= (Object[])params.get(varName);
287
					inputBuffer= (RasterBuffer)data[0];
289 288
				
290
			// Calculo de grid resultante
291
			int iNX = resultExtent.getNX();
292
			int iNY = resultExtent.getNY();
293
		
294
			// Calculo de grid resultante
295
			for (int x=0;x<iNX;x++){
296
				if (cancel) return;  //Proceso cancelado 
297
				for(int y=0;y<iNY;y++){
298
					int i=0;
299
					for (Iterator iter = params.keySet().iterator(); iter.hasNext();) {
300
						String varName = (String)iter.next();
301
						Object data[]= (Object[])params.get(varName);
302
						inputBuffer= (RasterBuffer)data[0];
289
					int dataType= ((Integer)data[1]).intValue();
290
					double value=0;
291
				
292
					//	BUFFER TIPO_BYTE
293
					if(dataType == RasterBuffer.TYPE_BYTE){		
294
						value = inputBuffer.getElemByte(y, x, 0);			
295
						if(value!=inputBuffer.getNoDataValue()){	
296
							parser.setVarValue(varName,new Double(value));
297
							i++;					
298
						}
299
											
300
						else{					
301
							rasterResult.setElem(y, x, 0, rasterResult.noDataValue);
302
							break;	
303
						}					
304
					}
303 305
					
304
						int dataType= ((Integer)data[1]).intValue();
305
						double value=0;
306
					
307
						//	BUFFER TIPO_BYTE
308
						if(dataType == RasterBuffer.TYPE_BYTE){		
309
							value = inputBuffer.getElemByte(y, x, 0);			
310
							if(value!=inputBuffer.getNoDataValue()){	
311
								parser.setVarValue(varName,new Double(value));
312
								i++;					
313
							}
314
												
315
							else{					
316
								rasterResult.setElem(y, x, 0, rasterResult.noDataValue);
317
								break;	
318
							}					
306
					//	BUFFER TIPO_SHORT										
307
					else if(dataType== RasterBuffer.TYPE_SHORT){	
308
						value = inputBuffer.getElemShort(y, x, 0);	
309
						if(value!=inputBuffer.getNoDataValue()){
310
							parser.setVarValue(varName,new Double(value));
311
							i++;
319 312
						}
320
						
321
						//	BUFFER TIPO_SHORT										
322
						else if(dataType== RasterBuffer.TYPE_SHORT){	
323
							value = inputBuffer.getElemShort(y, x, 0);	
324
							if(value!=inputBuffer.getNoDataValue()){
325
								parser.setVarValue(varName,new Double(value));
326
								i++;
327
							}
328
							else{
329
								rasterResult.setElem(y, x, 0, rasterResult.noDataValue);
330
								break;
331
								}		
313
						else{
314
							rasterResult.setElem(y, x, 0, rasterResult.noDataValue);
315
							break;
316
							}		
317
					}
318
				
319
					//	BUFFER TIPO_INT					
320
					else if(dataType == RasterBuffer.TYPE_INT){	
321
						value = inputBuffer.getElemInt(y, x,0);
322
						if(value!=inputBuffer.getNoDataValue()){
323
							parser.setVarValue(varName,new Double(value));
324
							i++;
332 325
						}
333
					
334
						//	BUFFER TIPO_INT					
335
						else if(dataType == RasterBuffer.TYPE_INT){	
336
							value = inputBuffer.getElemInt(y, x,0);
337
							if(value!=inputBuffer.getNoDataValue()){
338
								parser.setVarValue(varName,new Double(value));
339
								i++;
340
							}
341
							else{
342
								rasterResult.setElem(y, x, 0, rasterResult.noDataValue);
343
								break;
344
							}	
326
						else{
327
							rasterResult.setElem(y, x, 0, rasterResult.noDataValue);
328
							break;
345 329
						}	
346
					
347
						//	BUFFER TIPO_FLOAT										
348
						else if(dataType == RasterBuffer.TYPE_FLOAT){
349
							value = inputBuffer.getElemFloat(x, y,0);
350
							if(value!=inputBuffer.getNoDataValue()){
351
									parser.setVarValue(varName,new Double(value));
352
									i++;
353
							}
354
							else{
355
								rasterResult.setElem(y, x, 0, rasterResult.noDataValue);
356
								break;
357
								}		
358
						}
359
					
360
						//	BUFFER TIPO_DOUBLE					
361
						else if(dataType == RasterBuffer.TYPE_DOUBLE){
362
							value = inputBuffer.getElemDouble(y, x,0);
363
							if(value!=inputBuffer.getNoDataValue()){
330
					}	
331
				
332
					//	BUFFER TIPO_FLOAT										
333
					else if(dataType == RasterBuffer.TYPE_FLOAT){
334
						value = inputBuffer.getElemFloat(x, y,0);
335
						if(value!=inputBuffer.getNoDataValue()){
364 336
								parser.setVarValue(varName,new Double(value));
365 337
								i++;
366
							}
367
							else{
368
								rasterResult.setElem(y, x, 0, rasterResult.noDataValue);
369
								break;
370
							}	
371 338
						}
339
						else{
340
							rasterResult.setElem(y, x, 0, rasterResult.noDataValue);
341
							break;
342
							}		
343
					}
372 344
				
373
					}	
374
					// Evaluacion de la exprsion en el x,y.
375
					if (i == params.size()){
376
						rasterResult.setElem(y, x, 0, (double)parser.getValue());
377
						percent = x*100/rasterResult.getWidth();
378
					}	
379
				}		
345
					//	BUFFER TIPO_DOUBLE					
346
					else if(dataType == RasterBuffer.TYPE_DOUBLE){
347
						value = inputBuffer.getElemDouble(y, x,0);
348
						if(value!=inputBuffer.getNoDataValue()){
349
							parser.setVarValue(varName,new Double(value));
350
							i++;
351
						}
352
						else{
353
							rasterResult.setElem(y, x, 0, rasterResult.noDataValue);
354
							break;
355
						}	
356
					}
357
			
358
				}	
359
				// Evaluacion de la exprsion en el x,y.
360
				if (i == params.size()){
361
					rasterResult.setElem(y, x, 0, (double)parser.getValue());
362
					percent = x*100/rasterResult.getWidth();
363
				}	
364
			}		
365
	
366
		}
367
		// Escritura de los datos a disco
368
		writeToFile();
380 369
		
381
			}
382
			// Escritura de los datos a disco
383
			writeToFile();
384
		
385 370
	}
386 371

  
387 372
	

Also available in: Unified diff