Revision 1938 org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/provider/DefaultRasterProvider.java
DefaultRasterProvider.java | ||
---|---|---|
27 | 27 |
import java.awt.geom.Point2D; |
28 | 28 |
import java.io.File; |
29 | 29 |
import java.security.NoSuchAlgorithmException; |
30 |
import java.util.ArrayList; |
|
31 | 30 |
import java.util.Collection; |
32 | 31 |
import java.util.Date; |
33 | 32 |
import java.util.Iterator; |
33 |
import java.util.List; |
|
34 | 34 |
|
35 | 35 |
import org.cresques.cts.IProjection; |
36 | 36 |
import org.gvsig.compat.net.ICancellable; |
... | ... | |
147 | 147 |
protected String uri; |
148 | 148 |
protected String selectedSubdatasetID = null; |
149 | 149 |
/** |
150 |
* Transformaci?n creada a partir de la informaci?n de georreferencia de la
|
|
151 |
* propia imagen. Esta informaci?n est? en la cabecera o en ficheros
|
|
150 |
* Transformaci�n creada a partir de la informaci�n de georreferencia de la
|
|
151 |
* propia imagen. Esta informaci�n est� en la cabecera o en ficheros
|
|
152 | 152 |
* worldfile. |
153 | 153 |
*/ |
154 | 154 |
protected AffineTransform ownTransformation = null; |
155 | 155 |
/** |
156 |
* Transformaci?n asignada de forma externa, bien desde el fichero rmf o
|
|
156 |
* Transformaci�n asignada de forma externa, bien desde el fichero rmf o
|
|
157 | 157 |
* asignada directamente por el usuario. |
158 | 158 |
*/ |
159 | 159 |
protected AffineTransform externalTransformation = null; |
... | ... | |
211 | 211 |
} |
212 | 212 |
|
213 | 213 |
/** |
214 |
* Acciones de inicilizaci?n comunes a todos los drivers.
|
|
215 |
* Este m?todo debe ser llamado explicitamente por el constructor de cada driver.
|
|
216 |
* Estas son acciones de inicializaci?n que se ejecutan despu?s del constructor de cada driver.
|
|
214 |
* Acciones de inicilizaci�n comunes a todos los drivers.
|
|
215 |
* Este m�todo debe ser llamado explicitamente por el constructor de cada driver.
|
|
216 |
* Estas son acciones de inicializaci�n que se ejecutan despu�s del constructor de cada driver.
|
|
217 | 217 |
* Las acciones que hayan de ser realizadas antes se definen en el constructor de RasterDataset. |
218 | 218 |
*/ |
219 | 219 |
protected void init() { |
... | ... | |
270 | 270 |
|
271 | 271 |
//Gets the list of provider's name to manage the file |
272 | 272 |
File file = new File(param); |
273 |
ArrayList<String> provName = serverExplorer.getProviderNameList(file);
|
|
273 |
List<String> provName = serverExplorer.getProviderNameList(file); |
|
274 | 274 |
if(provName.size() > 0) { |
275 | 275 |
for (int i = 0; i < provName.size(); i++) { |
276 | 276 |
//Gets the first provider what is not a TileProvider |
... | ... | |
325 | 325 |
|
326 | 326 |
/** |
327 | 327 |
* Obtiene el valor del raster en la coordenada que se le pasa. |
328 |
* El valor ser? Double, Int, Byte, etc. dependiendo del tipo de
|
|
328 |
* El valor ser� Double, Int, Byte, etc. dependiendo del tipo de
|
|
329 | 329 |
* raster. |
330 | 330 |
* @param x coordenada X |
331 | 331 |
* @param y coordenada Y |
... | ... | |
380 | 380 |
* @throws ProcessInterruptedException |
381 | 381 |
* @throws RasterDriverException |
382 | 382 |
*/ |
383 |
abstract protected void getWindow(Extent ex, int bufWidth, int bufHeight,
|
|
383 |
abstract public void getWindow(Extent ex, int bufWidth, int bufHeight,
|
|
384 | 384 |
BandList bandList, TileListener listener, TaskStatus taskStatus) throws ProcessInterruptedException, RasterDriverException; |
385 | 385 |
|
386 | 386 |
/** |
387 | 387 |
* Obtiene una ventana de datos de la imagen a partir de coordenadas reales. |
388 |
* No aplica supersampleo ni subsampleo sino que devuelve una matriz de igual tama?o a los
|
|
388 |
* No aplica supersampleo ni subsampleo sino que devuelve una matriz de igual tama�o a los
|
|
389 | 389 |
* pixeles de disco. |
390 |
* @param ulx Posici?n X superior izquierda
|
|
391 |
* @param uly Posici?n Y superior izquierda
|
|
392 |
* @param lrx Posici?n X inferior derecha
|
|
393 |
* @param lry Posici?n Y inferior derecha
|
|
390 |
* @param ulx Posici�n X superior izquierda
|
|
391 |
* @param uly Posici�n Y superior izquierda
|
|
392 |
* @param lrx Posici�n X inferior derecha
|
|
393 |
* @param lry Posici�n Y inferior derecha
|
|
394 | 394 |
* @param rasterBuf Buffer de datos |
395 | 395 |
* @param bandList |
396 | 396 |
* @return Buffer de datos |
397 | 397 |
*/ |
398 |
abstract protected Buffer getWindow(Extent extent, BandList bandList, Buffer rasterBuf, TaskStatus status)
|
|
398 |
abstract public Buffer getWindow(Extent extent, BandList bandList, Buffer rasterBuf, TaskStatus status)
|
|
399 | 399 |
throws ProcessInterruptedException, RasterDriverException; |
400 | 400 |
|
401 | 401 |
/** |
402 | 402 |
* Obtiene una ventana de datos de la imagen a partir de coordenadas reales. |
403 |
* No aplica supersampleo ni subsampleo sino que devuelve una matriz de igual tama?o a los
|
|
403 |
* No aplica supersampleo ni subsampleo sino que devuelve una matriz de igual tama�o a los
|
|
404 | 404 |
* pixeles de disco. |
405 |
* @param x Posici?n X superior izquierda
|
|
406 |
* @param y Posici?n Y superior izquierda
|
|
405 |
* @param x Posici�n X superior izquierda
|
|
406 |
* @param y Posici�n Y superior izquierda
|
|
407 | 407 |
* @param w Ancho en coordenadas reales |
408 | 408 |
* @param h Alto en coordenadas reales |
409 | 409 |
* @param rasterBuf Buffer de datos |
... | ... | |
411 | 411 |
* @param adjustToExtent Flag que dice si el extent solicitado debe ajustarse al extent del raster o no. |
412 | 412 |
* @return Buffer de datos |
413 | 413 |
*/ |
414 |
abstract protected Buffer getWindow(double x, double y, double w, double h,
|
|
414 |
abstract public Buffer getWindow(double x, double y, double w, double h,
|
|
415 | 415 |
BandList bandList, Buffer rasterBuf, boolean adjustToExtent, TaskStatus status) throws ProcessInterruptedException, RasterDriverException; |
416 | 416 |
|
417 | 417 |
/** |
418 | 418 |
* Obtiene una ventana de datos de la imagen a partir de coordenadas reales. |
419 |
* Se aplica supersampleo o subsampleo dependiendo del tama?o del buffer especificado.
|
|
419 |
* Se aplica supersampleo o subsampleo dependiendo del tama�o del buffer especificado.
|
|
420 | 420 |
* |
421 |
* @param minX Posici?n m?nima X superior izquierda
|
|
422 |
* @param minY Posici?n m?nima Y superior izquierda
|
|
423 |
* @param maxX Posici?n m?xima X inferior derecha
|
|
424 |
* @param maxY Posici?n m?xima Y inferior derecha
|
|
421 |
* @param minX Posici�n m�nima X superior izquierda
|
|
422 |
* @param minY Posici�n m�nima Y superior izquierda
|
|
423 |
* @param maxX Posici�n m�xima X inferior derecha
|
|
424 |
* @param maxY Posici�n m�xima Y inferior derecha
|
|
425 | 425 |
* @param bufWidth Ancho del buffer de datos |
426 | 426 |
* @param bufHeight Alto del buffer de datos |
427 | 427 |
* @param rasterBuf Buffer de datos |
... | ... | |
429 | 429 |
* @param bandList |
430 | 430 |
* @return Buffer de datos |
431 | 431 |
*/ |
432 |
abstract protected Buffer getWindow(Extent extent,
|
|
432 |
abstract public Buffer getWindow(Extent extent,
|
|
433 | 433 |
int bufWidth, int bufHeight, BandList bandList, Buffer rasterBuf, |
434 | 434 |
boolean adjustToExtent, TaskStatus status) throws ProcessInterruptedException, RasterDriverException; |
435 | 435 |
|
436 | 436 |
/** |
437 | 437 |
* Obtiene una ventana de datos de la imagen a partir de coordenadas pixel. |
438 |
* Se aplica supersampleo o subsampleo dependiendo del tama?o del buffer especificado.
|
|
438 |
* Se aplica supersampleo o subsampleo dependiendo del tama�o del buffer especificado.
|
|
439 | 439 |
* |
440 |
* @param x Posici?n X superior izquierda
|
|
441 |
* @param y Posici?n Y superior izquierda
|
|
440 |
* @param x Posici�n X superior izquierda
|
|
441 |
* @param y Posici�n Y superior izquierda
|
|
442 | 442 |
* @param w Ancho en coordenadas reales |
443 | 443 |
* @param h Alto en coordenadas reales |
444 | 444 |
* @param bufWidth Ancho del buffer de datos |
... | ... | |
447 | 447 |
* @param bandList |
448 | 448 |
* @return Buffer de datos |
449 | 449 |
*/ |
450 |
abstract protected Buffer getWindow(int x, int y, int w, int h,
|
|
450 |
abstract public Buffer getWindow(int x, int y, int w, int h,
|
|
451 | 451 |
BandList bandList, Buffer rasterBuf, TaskStatus status)throws ProcessInterruptedException, RasterDriverException; |
452 | 452 |
|
453 | 453 |
abstract public int getBlockSize(); |
... | ... | |
525 | 525 |
} |
526 | 526 |
|
527 | 527 |
/** |
528 |
* Obtiene el n?nero de bandas del fichero
|
|
529 |
* @return Entero que representa el n?mero de bandas
|
|
528 |
* Obtiene el n�nero de bandas del fichero
|
|
529 |
* @return Entero que representa el n�mero de bandas
|
|
530 | 530 |
*/ |
531 | 531 |
public int getBandCount() { |
532 | 532 |
return bandCount; |
... | ... | |
567 | 567 |
} |
568 | 568 |
|
569 | 569 |
/** |
570 |
* Dice si el fichero tiene georreferenciaci?n o no.
|
|
571 |
* @return true si tiene georreferenciaci?n y false si no la tiene
|
|
570 |
* Dice si el fichero tiene georreferenciaci�n o no.
|
|
571 |
* @return true si tiene georreferenciaci�n y false si no la tiene
|
|
572 | 572 |
*/ |
573 | 573 |
public boolean isGeoreferenced() { |
574 | 574 |
return true; |
575 | 575 |
} |
576 | 576 |
|
577 | 577 |
/** |
578 |
* Dado unas coordenadas reales, un tama?o de buffer y un tama?o de raster.
|
|
579 |
* Si el buffer es de mayor tama?o que el raster (supersampleo) quiere decir que
|
|
580 |
* por cada pixel de buffer se repiten varios del raster. Esta funci?n calcula el
|
|
581 |
* n?mero de pixels de desplazamiento en X e Y que corresponden al primer pixel del
|
|
578 |
* Dado unas coordenadas reales, un tama�o de buffer y un tama�o de raster.
|
|
579 |
* Si el buffer es de mayor tama�o que el raster (supersampleo) quiere decir que
|
|
580 |
* por cada pixel de buffer se repiten varios del raster. Esta funci�n calcula el
|
|
581 |
* n�mero de pixels de desplazamiento en X e Y que corresponden al primer pixel del
|
|
582 | 582 |
* buffer en la esquina superior izquierda. Esto es necesario porque la coordenada |
583 | 583 |
* solicitada es real y puede no caer sobre un pixel completo. Este calculo es |
584 | 584 |
* util cuando un cliente quiere supersamplear sobre un buffer y que no se lo haga |
585 |
* el driver autom?ticamente.
|
|
585 |
* el driver autom�ticamente.
|
|
586 | 586 |
* @param dWorldTLX Coordenada real X superior izquierda |
587 | 587 |
* @param dWorldTLY Coordenada real Y superior izquierda |
588 | 588 |
* @param dWorldBRX Coordenada real X inferior derecha |
... | ... | |
655 | 655 |
} |
656 | 656 |
|
657 | 657 |
/** |
658 |
* Calcula el extent en coordenadas del mundo real sin rotaci?n. Solo coordenadas y tama?o de pixel
|
|
658 |
* Calcula el extent en coordenadas del mundo real sin rotaci�n. Solo coordenadas y tama�o de pixel
|
|
659 | 659 |
* @return Extent |
660 | 660 |
*/ |
661 | 661 |
public Extent getExtentWithoutRot() { |
... | ... | |
670 | 670 |
} |
671 | 671 |
|
672 | 672 |
/** |
673 |
* ASigna el par?metro de inicializaci?n del driver.
|
|
673 |
* ASigna el par�metro de inicializaci�n del driver.
|
|
674 | 674 |
*/ |
675 | 675 |
public void setParam(DataStoreProviderServices provServices, DataStoreParameters param) { |
676 | 676 |
if(param instanceof RasterDataParameters) |
... | ... | |
751 | 751 |
} |
752 | 752 |
|
753 | 753 |
public boolean isInside(Point2D p){ |
754 |
//Realizamos los calculos solo si el punto est? dentro del extent de la imagen rotada, as? nos ahorramos los calculos
|
|
755 |
//cuando el puntero est? fuera
|
|
754 |
//Realizamos los calculos solo si el punto est� dentro del extent de la imagen rotada, as� nos ahorramos los calculos
|
|
755 |
//cuando el puntero est� fuera
|
|
756 | 756 |
|
757 | 757 |
Point2D pt = new Point2D.Double(); |
758 | 758 |
try { |
... | ... | |
769 | 769 |
} |
770 | 770 |
|
771 | 771 |
/** |
772 |
* Consulta de si un raster tiene rotaci?n o no.
|
|
773 |
* @return true si tiene rotaci?n y false si no la tiene.
|
|
772 |
* Consulta de si un raster tiene rotaci�n o no.
|
|
773 |
* @return true si tiene rotaci�n y false si no la tiene.
|
|
774 | 774 |
*/ |
775 | 775 |
public boolean isRotated() { |
776 | 776 |
if(externalTransformation.getShearX() != 0 || externalTransformation.getShearY() != 0) |
... | ... | |
916 | 916 |
} |
917 | 917 |
|
918 | 918 |
/** |
919 |
* Asigna el objeto que contiene que contiene la interpretaci?n de
|
|
919 |
* Asigna el objeto que contiene que contiene la interpretaci�n de
|
|
920 | 920 |
* color por banda |
921 | 921 |
* @param DataStoreColorInterpretation |
922 | 922 |
*/ |
... | ... | |
1006 | 1006 |
|
1007 | 1007 |
/** |
1008 | 1008 |
* Traduce el nombre del fichero por un alias asignado por el propio driver. |
1009 |
* Cuando es traducido por un alias el driver intentar? abrir el alias y no el
|
|
1010 |
* fichero. Esto es util porque algunos formatos tienen la extensi?n en el
|
|
1009 |
* Cuando es traducido por un alias el driver intentar� abrir el alias y no el
|
|
1010 |
* fichero. Esto es util porque algunos formatos tienen la extensi�n en el
|
|
1011 | 1011 |
* fichero de cabecera pero lo que se abre realmente es el fichero de datos. |
1012 | 1012 |
* @param fileName |
1013 | 1013 |
* @return |
... | ... | |
1067 | 1067 |
} |
1068 | 1068 |
|
1069 | 1069 |
/** |
1070 |
* Elimina la matriz de transformaci?n asociada al raster y que se tiene en
|
|
1071 |
* cuenta para el setView. Este reseteo tendr? en cuenta que si el raster
|
|
1072 |
* tiene asociado un rmf esta transformaci?n no ser? eliminada sino que se
|
|
1073 |
* asignar? la correspondiente al rmf existente.
|
|
1070 |
* Elimina la matriz de transformaci�n asociada al raster y que se tiene en
|
|
1071 |
* cuenta para el setView. Este reseteo tendr� en cuenta que si el raster
|
|
1072 |
* tiene asociado un rmf esta transformaci�n no ser� eliminada sino que se
|
|
1073 |
* asignar� la correspondiente al rmf existente.
|
|
1074 | 1074 |
* @return devuelve true si tiene fichero rmf asociado y false si no lo tiene. |
1075 | 1075 |
*/ |
1076 | 1076 |
public void resetAffineTransform() { |
... | ... | |
1122 | 1122 |
if(serialInfo == null) { |
1123 | 1123 |
serialInfo = new DefaultTimeSerials(); |
1124 | 1124 |
loadObjectFromRmf(TimeSeries.class, serialInfo); |
1125 |
//Seleccionamos la primera serie por defecto. El usuario seleccionar? otra si la necesita
|
|
1125 |
//Seleccionamos la primera serie por defecto. El usuario seleccionar� otra si la necesita
|
|
1126 | 1126 |
serialInfo.selectSerial(0); |
1127 | 1127 |
} |
1128 | 1128 |
return serialInfo; |
Also available in: Unified diff