Revision 20787 trunk/extensions/extRemoteSensing/src/org/gvsig/remotesensing/mosaic/process/MosaicProcess.java
MosaicProcess.java | ||
---|---|---|
215 | 215 |
} |
216 | 216 |
} |
217 | 217 |
|
218 |
// Construccion del mosaico: Operaci?n Superior
|
|
218 |
// Construccion del mosaico: Operacion valor de capa de delantera
|
|
219 | 219 |
if(codOp==3){ |
220 | 220 |
int progress = 0; |
221 | 221 |
for(int band=0; band<numbands; band++){ |
... | ... | |
230 | 230 |
} |
231 | 231 |
} |
232 | 232 |
|
233 |
|
|
234 |
|
|
235 |
// Construccion del mosaico: Operaci?n Valor de capa de trasera |
|
236 |
if(codOp==4){ |
|
237 |
|
|
238 |
// Cambio de orden del los elementos del buffer las capas inferiores pasan al principio del array |
|
239 |
RasterBuffer buffersCopy[]= new RasterBuffer[buffers.length]; |
|
240 |
for(int i=0; i<buffers.length;i++) |
|
241 |
buffersCopy[i]=buffers[i]; |
|
242 |
int k=buffers.length-1; |
|
243 |
for(int i=0; i<buffers.length;i++){ |
|
244 |
buffers[i]=buffersCopy[k]; |
|
245 |
k--; |
|
246 |
} |
|
247 |
int progress = 0; |
|
248 |
for(int band=0; band<numbands; band++){ |
|
249 |
mosaicGrid.setBandToOperate(band); |
|
250 |
for(int col=0; col<mosaicGrid.getLayerNY(); col++){ |
|
251 |
progress++; |
|
252 |
for(int row=0; row<mosaicGrid.getLayerNX();row++){ |
|
253 |
setValueBack(row,col,band); |
|
254 |
} |
|
255 |
percent=(int)( progress*100/(mosaicGrid.getLayerNY()*numbands)); |
|
256 |
} |
|
257 |
} |
|
258 |
} |
|
259 |
|
|
233 | 260 |
// Escritura en fichero |
234 | 261 |
writeToFile((RasterBuffer)mosaicGrid.getRasterBuf(),0); |
235 | 262 |
// writeToFile((RasterBuffer)buffers[0],1); |
... | ... | |
344 | 371 |
|
345 | 372 |
|
346 | 373 |
|
374 |
/** |
|
375 |
* M?todo que establece para la coordenada x,y el valor de la capa inferior |
|
376 |
* en caso de solape. Se parte de un array de buffer ordenados, de tal manera que |
|
377 |
* el primer elemento corresponde a la capa situada mas al frente. El ?ltimo por |
|
378 |
* contra es el situado al fondo. |
|
379 |
|
|
380 |
* @param cordenada x |
|
381 |
* @param coordenada y |
|
382 |
* */ |
|
383 |
public void setValueBack(int x, int y, int band){ |
|
384 |
byte result=0; |
|
385 |
for(int buf=0;buf<buffers.length;buf++){ |
|
386 |
result = (byte)(buffers[buf].getElemByte(y,x,band)); |
|
387 |
// TO DO : Valor no data del buffer |
|
388 |
if(result!=97) |
|
389 |
break; |
|
390 |
} |
|
391 |
|
|
392 |
try { |
|
393 |
mosaicGrid.setCellValue(x,y,(byte)result); |
|
394 |
} catch (OutOfGridException e) { |
|
395 |
e.printStackTrace(); |
|
396 |
} |
|
397 |
} |
|
347 | 398 |
|
348 |
|
|
399 |
|
|
400 |
|
|
349 | 401 |
/** |
350 | 402 |
* M?todo que calcula el extend resultante para la operaci?n de mosaico |
351 | 403 |
* |
Also available in: Unified diff