Revision 13328 trunk/libraries/libRaster/src/org/gvsig/raster/dataset/MultiRasterDataset.java
MultiRasterDataset.java | ||
---|---|---|
47 | 47 |
* @author Nacho Brodin (nachobrodin@gmail.com) |
48 | 48 |
* |
49 | 49 |
*/ |
50 |
public class MultiRasterDataset implements IHistogramable {
|
|
50 |
public class MultiRasterDataset implements IRasterDataSource {
|
|
51 | 51 |
|
52 | 52 |
private boolean[] cancel = new boolean[1]; |
53 | 53 |
|
... | ... | |
56 | 56 |
private String name = null; |
57 | 57 |
//Band list |
58 | 58 |
private BandList bandList = new BandList(); |
59 |
private ArrayList palettes = new ArrayList(); |
|
60 |
protected DatasetListStatistics stats = null; |
|
59 |
protected DatasetListStatistics stats = null; |
|
61 | 60 |
protected DatasetListHistogram histogram = null; |
62 | 61 |
int percent = 0; |
63 | 62 |
|
... | ... | |
71 | 70 |
* que el actual. |
72 | 71 |
* @return MultiRasterDataset |
73 | 72 |
*/ |
74 |
public MultiRasterDataset copyDataset() {
|
|
73 |
public IRasterDataSource copy() {
|
|
75 | 74 |
try { |
76 |
String[] fileList = getNameDatasetStringList(); |
|
77 |
MultiRasterDataset multiRasterDataset = MultiRasterDataset.open(getDataset(0).getProjection(), fileList[0]); |
|
75 |
String[] fileList = getNameDatasetStringList(0, 0);
|
|
76 |
MultiRasterDataset multiRasterDataset = MultiRasterDataset.open(getDataset(0)[0].getProjection(), fileList[0]);
|
|
78 | 77 |
for (int j = 1; j < fileList.length; j++) |
79 |
multiRasterDataset.addDataset(fileList[j]);
|
|
78 |
multiRasterDataset.addDataset(new String[]{fileList[j]});
|
|
80 | 79 |
return multiRasterDataset; |
81 | 80 |
} catch (FileNotFoundInListException e) { |
82 | 81 |
return null; |
... | ... | |
105 | 104 |
String[] param = (String[])datasetOpenParam; |
106 | 105 |
for (int dataset = 0; dataset < param.length; dataset++) |
107 | 106 |
try { |
108 |
rmd.addDataset(RasterDataset.open(proj, param[dataset]));
|
|
107 |
rmd.addDataset(new RasterDataset[]{RasterDataset.open(proj, param[dataset])});
|
|
109 | 108 |
} catch (FileNotFoundInListException e) { |
110 | 109 |
//No lo a?adimos en el dataset pq ya existe |
111 | 110 |
} |
... | ... | |
113 | 112 |
IBuffer[] param = (IBuffer[])datasetOpenParam; |
114 | 113 |
for (int dataset = 0; dataset < param.length; dataset++) |
115 | 114 |
try { |
116 |
rmd.addDataset(RasterDataset.open(proj, param[dataset]));
|
|
115 |
rmd.addDataset(new RasterDataset[]{RasterDataset.open(proj, param[dataset])});
|
|
117 | 116 |
} catch (FileNotFoundInListException e) { |
118 | 117 |
//No lo a?adimos en el dataset pq ya existe |
119 | 118 |
} |
120 | 119 |
} else { |
121 | 120 |
RasterDataset rd = RasterDataset.open(proj, datasetOpenParam); |
122 | 121 |
try { |
123 |
rmd.addDataset(rd);
|
|
122 |
rmd.addDataset(new RasterDataset[]{rd});
|
|
124 | 123 |
} catch (FileNotFoundInListException e) { |
125 | 124 |
//No lo a?adimos en el dataset pq ya existe |
126 | 125 |
} |
... | ... | |
129 | 128 |
} |
130 | 129 |
|
131 | 130 |
/** |
132 |
* Add a file to the list. |
|
133 |
* @param f file to add. |
|
131 |
* A?ade un fichero a la lista que componen el multi raster. El array solo debe tener un |
|
132 |
* elemento ya que solo tiene sentido para este caso con un elemento. ?Ojo!, a?adir m?s elementos |
|
133 |
* al array no hace que se a?adan varios datasets a la lista. |
|
134 |
* @param f A?ade el elemento 0 a la lista. |
|
134 | 135 |
*/ |
135 |
public void addDataset(RasterDataset f)throws FileNotFoundInListException { |
|
136 |
if(findDataset(f)) |
|
136 |
public void addDataset(RasterDataset[] f)throws FileNotFoundInListException { |
|
137 |
if(f.length != 1) |
|
138 |
throw new FileNotFoundInListException("Error in list."); |
|
139 |
if(findDataset(f[0])) |
|
137 | 140 |
throw new FileNotFoundInListException("The file already is in list."); |
138 |
files.add(f); |
|
139 |
addBands(f); |
|
141 |
files.add(f[0]);
|
|
142 |
addBands(f[0]);
|
|
140 | 143 |
stats = new DatasetListStatistics(files); |
141 | 144 |
} |
142 | 145 |
|
143 | 146 |
/** |
144 |
* A?ade un fichero a la lista a partir de su nombre |
|
145 |
* @param f fichero a a?adir. |
|
146 |
* @throws RasterDriverException |
|
147 |
* A?ade un fichero a la lista que componen el multi raster a partir de su nombre. El array solo debe tener un |
|
148 |
* elemento ya que solo tiene sentido para este caso con un elemento. ?Ojo!, a?adir m?s elementos |
|
149 |
* al array no hace que se a?adan varios datasets a la lista. |
|
150 |
* @param f A?ade el elemento 0 a la lista. |
|
147 | 151 |
*/ |
148 |
public void addDataset(String fileName)throws FileNotFoundInListException, NotSupportedExtensionException, RasterDriverException{ |
|
149 |
if(findDataset(fileName)) |
|
152 |
public void addDataset(String[] fileName)throws FileNotFoundInListException, NotSupportedExtensionException, RasterDriverException { |
|
153 |
if(fileName.length != 1) |
|
154 |
throw new FileNotFoundInListException("Error in list."); |
|
155 |
if(findDataset(fileName[0])) |
|
150 | 156 |
throw new FileNotFoundInListException("The file already is in list."); |
151 |
RasterDataset f = RasterDataset.open(null, fileName); |
|
157 |
RasterDataset f = RasterDataset.open(null, fileName[0]);
|
|
152 | 158 |
files.add(f); |
153 | 159 |
addBands(f); |
154 | 160 |
stats = new DatasetListStatistics(files); |
... | ... | |
239 | 245 |
} |
240 | 246 |
|
241 | 247 |
/** |
242 |
* @see org.javaGeoRaster.io.GeoInfo
|
|
248 |
* Cierra la lista de datasets asociados al MultiRasterDataset
|
|
243 | 249 |
*/ |
244 | 250 |
public void close() { |
245 | 251 |
for(int i = 0; i < files.size(); i++) |
... | ... | |
249 | 255 |
} |
250 | 256 |
|
251 | 257 |
/** |
252 |
* Obtiene en un array de String la lista de nombres de ficheros |
|
258 |
* Obtiene en un array de String la lista de nombres de ficheros. |
|
259 |
* @param i Para un MultiRasterDataset el par?metro es ignorado |
|
260 |
* @param j Para un MultiRasterDataset el par?metro es ignorado |
|
253 | 261 |
* @return lista de nombres de los ficheros del GeoRasterMultiFile |
254 | 262 |
*/ |
255 |
public String[] getNameDatasetStringList() { |
|
263 |
public String[] getNameDatasetStringList(int i, int j) {
|
|
256 | 264 |
String[] list = new String[files.size()]; |
257 |
for(int i = 0; i < files.size(); i++)
|
|
258 |
list[i] = ((RasterDataset)files.get(i)).getFName();
|
|
265 |
for(int k = 0; k < files.size(); k++)
|
|
266 |
list[k] = ((RasterDataset)files.get(k)).getFName();
|
|
259 | 267 |
return list; |
260 | 268 |
} |
261 | 269 |
|
... | ... | |
288 | 296 |
private IBuffer[] mallocBuffersDatasets(BandList bl, int width, int height) { |
289 | 297 |
IBuffer[] buffers = new IBuffer[getDatasetCount()]; |
290 | 298 |
for(int i = 0; i < getDatasetCount(); i++) { |
291 |
buffers[i] = RasterBuffer.getBuffer(getDataset(i).getDataType(), width, height, getDataset(i).getBandCount(), false);
|
|
299 |
buffers[i] = RasterBuffer.getBuffer(getDataset(i)[0].getDataType(), width, height, getDataset(i)[0].getBandCount(), false);
|
|
292 | 300 |
|
293 | 301 |
//Asignamos las bandas de cada fichero que no se pintan a null y las que se pintan se reserva memoria |
294 |
String name = getDataset(i).getFName(); |
|
295 |
for(int j = 0; j < getDataset(i).getBandCount(); j ++) { |
|
302 |
String name = getDataset(i)[0].getFName();
|
|
303 |
for(int j = 0; j < getDataset(i)[0].getBandCount(); j ++) {
|
|
296 | 304 |
if(bl.getBufferBandToDraw(name, j) == null) |
297 | 305 |
buffers[i].assignBandToNotValid(j); |
298 | 306 |
else |
299 |
buffers[i].mallocOneBand(getDataset(i).getDataType(), width, height, j); |
|
307 |
buffers[i].mallocOneBand(getDataset(i)[0].getDataType(), width, height, j);
|
|
300 | 308 |
} |
301 | 309 |
} |
302 | 310 |
return buffers; |
... | ... | |
313 | 321 |
*/ |
314 | 322 |
private void mergeBuffers(IBuffer b, IBuffer[] bDataset, BandList bandList) { |
315 | 323 |
for(int iDataset = 0; iDataset < getDatasetCount(); iDataset++){ //Ojo! Los datasets est?n en la misma posici?n que se han metido en mallocBuffersDatasets |
316 |
String name = getDataset(iDataset).getFName(); |
|
324 |
String name = getDataset(iDataset)[0].getFName();
|
|
317 | 325 |
|
318 |
for(int iBand = 0; iBand < getDataset(iDataset).getBandCount(); iBand ++) { |
|
326 |
for(int iBand = 0; iBand < getDataset(iDataset)[0].getBandCount(); iBand ++) {
|
|
319 | 327 |
int[] posToDraw = bandList.getBufferBandToDraw(name, iBand); |
320 | 328 |
if(posToDraw != null) { |
321 | 329 |
for(int i = 0; i < posToDraw.length; i ++) { |
... | ... | |
380 | 388 |
|
381 | 389 |
//Caso en el que un buffer no se puedan conmutar las bandas (t?picamente RasterReadOnlyHugeBuffer) |
382 | 390 |
if(!raster.isBandSwitchable()) { |
383 |
RasterBuffer rb = RasterBuffer.getBuffer(getDataType()[0], width, height, getDataset(0).getBandCount(), false); |
|
391 |
RasterBuffer rb = RasterBuffer.getBuffer(getDataType()[0], width, height, getDataset(0)[0].getBandCount(), false);
|
|
384 | 392 |
if(rb instanceof RasterReadOnlyHugeBuffer) { |
385 | 393 |
try { |
386 |
((RasterReadOnlyHugeBuffer)rb).setBufferParams(getDataset(0).getFName(), selectedExtent); |
|
394 |
((RasterReadOnlyHugeBuffer)rb).setBufferParams(getDataset(0)[0].getFName(), selectedExtent);
|
|
387 | 395 |
} catch (FileNotExistsException e) { |
388 | 396 |
//Esto no debe darse ya que se comprueba al hacer el open |
389 | 397 |
} catch (NotSupportedExtensionException e) { |
... | ... | |
471 | 479 |
|
472 | 480 |
//Caso en el que un buffer no se puedan conmutar las bandas (t?picamente RasterReadOnlyHugeBuffer) |
473 | 481 |
if(!raster.isBandSwitchable()) { |
474 |
RasterBuffer rb = RasterBuffer.getBuffer(getDataType()[0], width, height, getDataset(0).getBandCount(), false); |
|
482 |
RasterBuffer rb = RasterBuffer.getBuffer(getDataType()[0], width, height, getDataset(0)[0].getBandCount(), false);
|
|
475 | 483 |
if(rb instanceof RasterReadOnlyHugeBuffer) { |
476 | 484 |
try { |
477 |
((RasterReadOnlyHugeBuffer)rb).setBufferParams(getDataset(0).getFName(), selectedExtent); |
|
485 |
((RasterReadOnlyHugeBuffer)rb).setBufferParams(getDataset(0)[0].getFName(), selectedExtent);
|
|
478 | 486 |
} catch (FileNotExistsException e) { |
479 | 487 |
//Esto no debe darse ya que se comprueba al hacer el open |
480 | 488 |
} catch (NotSupportedExtensionException e) { |
... | ... | |
595 | 603 |
|
596 | 604 |
//Caso en el que un buffer no se puedan conmutar las bandas (t?picamente RasterReadOnlyHugeBuffer) |
597 | 605 |
if(!raster.isBandSwitchable()) { |
598 |
RasterBuffer rb = RasterBuffer.getBuffer(getDataType()[0], w, h, getDataset(0).getBandCount(), false); |
|
606 |
RasterBuffer rb = RasterBuffer.getBuffer(getDataType()[0], w, h, getDataset(0)[0].getBandCount(), false);
|
|
599 | 607 |
if(rb instanceof RasterReadOnlyHugeBuffer) { |
600 | 608 |
try { |
601 |
((RasterReadOnlyHugeBuffer)rb).setBufferParams(getDataset(0).getFName(), x, y, x + w, y + h); |
|
609 |
((RasterReadOnlyHugeBuffer)rb).setBufferParams(getDataset(0)[0].getFName(), x, y, x + w, y + h);
|
|
602 | 610 |
} catch (FileNotExistsException e) { |
603 | 611 |
//Esto no debe darse ya que se comprueba al hacer el open |
604 | 612 |
} catch (NotSupportedExtensionException e) { |
... | ... | |
680 | 688 |
* Calcula el tama?o de los ficheros en disco |
681 | 689 |
* @return tama?o en bytes de todos los ficheros de la lista |
682 | 690 |
*/ |
683 |
public long getFileSize(){ |
|
691 |
public long getFileSize() {
|
|
684 | 692 |
int len = 0; |
685 |
for(int i=0;i<files.size();i++){
|
|
686 |
if(((RasterDataset)files.get(i)) != null){ |
|
693 |
for(int i = 0; i < files.size();i++) {
|
|
694 |
if(((RasterDataset)files.get(i)) != null) {
|
|
687 | 695 |
File f = new File(((RasterDataset)files.get(i)).getFName()); |
688 | 696 |
len += f.length(); |
689 | 697 |
} |
... | ... | |
719 | 727 |
* Obtiene el n?mero de bandas del fichero |
720 | 728 |
* @return |
721 | 729 |
*/ |
722 |
public int getBandCount(){ |
|
730 |
public int getBandCount() {
|
|
723 | 731 |
return bandList.getBandCount(); |
724 | 732 |
} |
725 | 733 |
|
726 |
/**
|
|
727 |
* Obtiene el tipo de dato por banda
|
|
728 |
* @return tipo de dato por banda
|
|
734 |
/* |
|
735 |
* (non-Javadoc)
|
|
736 |
* @see org.gvsig.raster.dataset.IRasterDataSource#getDataType()
|
|
729 | 737 |
*/ |
730 | 738 |
public int[] getDataType() { |
731 | 739 |
int[] dt = new int[getDatasetCount()]; |
... | ... | |
739 | 747 |
} |
740 | 748 |
|
741 | 749 |
/** |
742 |
* Obtiene fichero de la posici?n i. |
|
750 |
* Obtiene fichero de la posici?n i. En un MultiRasterDataset el array devuelto ser? de |
|
751 |
* un solo elemento por lo que solo tendr? sentido la posici?n 0. |
|
743 | 752 |
* @param i Posici?n del fichero a obtener. |
744 | 753 |
* @return GeoRasterFileDataset. |
745 | 754 |
*/ |
746 |
public RasterDataset getDataset(int i){
|
|
747 |
return (RasterDataset)files.get(i);
|
|
755 |
public RasterDataset[] getDataset(int i) {
|
|
756 |
return new RasterDataset[]{(RasterDataset)files.get(i)};
|
|
748 | 757 |
} |
749 | 758 |
|
750 | 759 |
/** |
... | ... | |
752 | 761 |
* @param i Posici?n del fichero a obtener. |
753 | 762 |
* @return GeoRasterFile. |
754 | 763 |
*/ |
755 |
public RasterDataset getDataset(String fileName){ |
|
764 |
public RasterDataset getDataset(String fileName) {
|
|
756 | 765 |
for(int i=0;i<files.size();i++){ |
757 | 766 |
if(((RasterDataset)files.get(i)).getFName().equals(fileName)) |
758 | 767 |
return (RasterDataset)files.get(i); |
... | ... | |
764 | 773 |
* Asigna el nombre al GeoRasterMultiFile |
765 | 774 |
* @param name Nombre del GeoRasterMultiFile |
766 | 775 |
*/ |
767 |
public void setName(String name){ |
|
776 |
public void setName(String name) {
|
|
768 | 777 |
this.name = name; |
769 | 778 |
} |
770 | 779 |
|
... | ... | |
772 | 781 |
* Obtiene la lista de bandas |
773 | 782 |
* @return BandList |
774 | 783 |
*/ |
775 |
public BandList getBands(){ |
|
784 |
public BandList getBands() {
|
|
776 | 785 |
return bandList; |
777 | 786 |
} |
778 | 787 |
|
... | ... | |
780 | 789 |
* Obtiene la coordenada X m?nima de toda la lista |
781 | 790 |
* @return Coordenada X m?nima |
782 | 791 |
*/ |
783 |
public double getMinX(){ |
|
792 |
public double getMinX() {
|
|
784 | 793 |
double minx = Double.MAX_VALUE; |
785 |
for(int i = 0; i < files.size(); i++){ |
|
794 |
for(int i = 0; i < files.size(); i++) {
|
|
786 | 795 |
double aux = ((RasterDataset)files.get(i)).getExtent().getMin().getX(); |
787 | 796 |
if(aux < minx) |
788 | 797 |
minx = aux; |
... | ... | |
794 | 803 |
* Obtiene la coordenada Y m?nima de toda la lista |
795 | 804 |
* @return Coordenada Y m?nima |
796 | 805 |
*/ |
797 |
public double getMinY(){ |
|
806 |
public double getMinY() {
|
|
798 | 807 |
double miny = Double.MAX_VALUE; |
799 |
for(int i = 0; i < files.size(); i++){ |
|
808 |
for(int i = 0; i < files.size(); i++) {
|
|
800 | 809 |
double aux = ((RasterDataset)files.get(i)).getExtent().getMin().getY(); |
801 | 810 |
if(aux < miny) |
802 | 811 |
miny = aux; |
... | ... | |
808 | 817 |
* Obtiene la coordenada Y m?xima de toda la lista |
809 | 818 |
* @return Coordenada Y m?xima |
810 | 819 |
*/ |
811 |
public double getMaxX(){ |
|
820 |
public double getMaxX() {
|
|
812 | 821 |
double maxx = Double.NEGATIVE_INFINITY; |
813 |
for(int i = 0; i < files.size(); i++){ |
|
822 |
for(int i = 0; i < files.size(); i++) {
|
|
814 | 823 |
double aux = ((RasterDataset)files.get(i)).getExtent().getMin().getY(); |
815 | 824 |
if(aux > maxx) |
816 | 825 |
maxx = aux; |
... | ... | |
822 | 831 |
* Obtiene la coordenada Y m?xima de toda la lista |
823 | 832 |
* @return Coordenada Y m?xima |
824 | 833 |
*/ |
825 |
public double getMaxY(){ |
|
834 |
public double getMaxY() {
|
|
826 | 835 |
double maxy = Double.NEGATIVE_INFINITY; |
827 |
for(int i = 0; i < files.size(); i++){ |
|
836 |
for(int i = 0; i < files.size(); i++) {
|
|
828 | 837 |
double aux = ((RasterDataset)files.get(i)).getExtent().getMin().getY(); |
829 | 838 |
if(aux > maxy) |
830 | 839 |
maxy = aux; |
... | ... | |
837 | 846 |
* GeoRasterFile de la lista. |
838 | 847 |
* @return Extent |
839 | 848 |
*/ |
840 |
public Extent getExtent(){ |
|
849 |
public Extent getExtent() {
|
|
841 | 850 |
if(files.size() == 0) |
842 | 851 |
return null; |
843 | 852 |
else |
... | ... | |
871 | 880 |
* <TR><TD><B>5:</B></TD><TD>Tama?o de pixel en Y.</TD></TR> |
872 | 881 |
* </TABLE> |
873 | 882 |
*/ |
874 |
public AffineTransform getCoordsGeoTransformFile(){ |
|
883 |
/*public AffineTransform getCoordsGeoTransformFile(){
|
|
875 | 884 |
return ((RasterDataset)files.get(0)).getAffineTransform(); |
876 |
} |
|
885 |
}*/
|
|
877 | 886 |
|
878 |
/** |
|
879 |
* Obtiene el extent de la ?ltima selecci?n hecha con alguna de las llamadas |
|
880 |
* setAreaOfInterest. Este extent es devuelto en coordenadas reales con las transformaciones |
|
881 |
* que se hayan aplicado sobre el/los dataset. |
|
882 |
* @return Extent Coordenadas reales que representan el ?ltimo ?rea de datos |
|
883 |
* solicitada. |
|
887 |
/* |
|
888 |
* (non-Javadoc) |
|
889 |
* @see org.gvsig.raster.dataset.IRasterDataSource#getLastSelectedView() |
|
884 | 890 |
*/ |
885 | 891 |
public Extent getLastSelectedView(){ |
886 | 892 |
return ((RasterDataset)files.get(0)).getView(); |
887 | 893 |
} |
888 | 894 |
|
889 |
/** |
|
890 |
* Obtiene el estado de transparencia a partir de los estados de transparencia de todos |
|
891 |
* los ficheros que lo componen. Si varios de los ficheros que lo componen tienen banda de |
|
892 |
* transparencia estas tendr?n que ser mezcladas sobre una banda de transparencia ?nica. |
|
893 |
* @return Objeto FileTransparency con el estado de transparencia |
|
895 |
/* |
|
896 |
* (non-Javadoc) |
|
897 |
* @see org.gvsig.raster.dataset.IRasterDataSource#getTransparencyFilesStatus() |
|
894 | 898 |
*/ |
895 | 899 |
public Transparency getTransparencyFilesStatus() { |
896 | 900 |
if(files.size() <= 0) |
... | ... | |
941 | 945 |
return null; |
942 | 946 |
} |
943 | 947 |
|
944 |
/** |
|
945 |
* Convierte un punto desde coordenadas pixel a coordenadas del mundo. |
|
946 |
* @param pt Punto a transformar |
|
947 |
* @return punto transformado en coordenadas del mundo |
|
948 |
/* |
|
949 |
* (non-Javadoc) |
|
950 |
* @see org.gvsig.raster.dataset.IRasterDataSource#rasterToWorld(java.awt.geom.Point2D) |
|
948 | 951 |
*/ |
949 | 952 |
public Point2D rasterToWorld(Point2D pt) { |
950 | 953 |
return ((RasterDataset)files.get(0)).rasterToWorld(pt); |
951 | 954 |
} |
952 | 955 |
|
953 |
/** |
|
954 |
* Convierte un punto desde del mundo a coordenadas pixel. |
|
955 |
* @param pt Punto a transformar |
|
956 |
* @return punto transformado en coordenadas pixel |
|
956 |
/* |
|
957 |
* (non-Javadoc) |
|
958 |
* @see org.gvsig.raster.dataset.IRasterDataSource#worldToRaster(java.awt.geom.Point2D) |
|
957 | 959 |
*/ |
958 | 960 |
public Point2D worldToRaster(Point2D pt) { |
959 | 961 |
return ((RasterDataset)files.get(0)).worldToRaster(pt); |
960 | 962 |
} |
961 | 963 |
|
962 |
/** |
|
963 |
* Dado unas coordenadas reales, un tama?o de buffer y un tama?o de raster. |
|
964 |
* Si el buffer es de mayor tama?o que el raster (supersampleo) quiere decir que |
|
965 |
* por cada pixel de buffer se repiten varios del raster. Esta funci?n calcula el |
|
966 |
* n?mero de pixels de desplazamiento en X e Y que corresponden al primer pixel del |
|
967 |
* buffer en la esquina superior izquierda. Esto es necesario porque la coordenada |
|
968 |
* solicitada es real y puede no caer sobre un pixel completo. Este calculo es |
|
969 |
* util cuando un cliente quiere supersamplear sobre un buffer y que no se lo haga |
|
970 |
* el driver autom?ticamente. |
|
971 |
* @param dWorldTLX Coordenada real X superior izquierda |
|
972 |
* @param dWorldTLY Coordenada real Y superior izquierda |
|
973 |
* @param nWidth Ancho del raster |
|
974 |
* @param nHeight Alto del raster |
|
975 |
* @param bufWidth Ancho del buffer |
|
976 |
* @param bufHeight Alto del buffer |
|
977 |
* @return Array de dos elementos con el desplazamiento en X e Y. |
|
964 |
/* |
|
965 |
* (non-Javadoc) |
|
966 |
* @see org.gvsig.raster.dataset.IRasterDataSource#calcSteps(double, double, double, double, double, double, int, int) |
|
978 | 967 |
*/ |
979 | 968 |
public int[] calcSteps(double dWorldTLX, double dWorldTLY, double dWorldBRX, double dWorldBRY, |
980 | 969 |
double nWidth, double nHeight, int bufWidth, int bufHeight){ |
... | ... | |
989 | 978 |
return stats; |
990 | 979 |
} |
991 | 980 |
|
992 |
/**
|
|
993 |
* Obtiene el flag que dice si la imagen est? o no georreferenciada
|
|
994 |
* @return true si est? georreferenciada y false si no lo est?.
|
|
981 |
/* |
|
982 |
* (non-Javadoc)
|
|
983 |
* @see org.gvsig.raster.dataset.IRasterDataSource#isGeoreferenced()
|
|
995 | 984 |
*/ |
996 | 985 |
public boolean isGeoreferenced() { |
997 | 986 |
for(int i = 0; i < files.size(); i++){ |
... | ... | |
1002 | 991 |
} |
1003 | 992 |
|
1004 | 993 |
//TODO: TEST: Probar getData para multifichero |
1005 |
/** |
|
1006 |
* Obtiene el valor del raster en la coordenada que se le pasa. |
|
1007 |
* El valor ser? Double, Int, Byte, etc. dependiendo del tipo de |
|
1008 |
* raster. |
|
1009 |
* @param x coordenada X |
|
1010 |
* @param y coordenada Y |
|
1011 |
* @return |
|
994 |
|
|
995 |
/* |
|
996 |
* (non-Javadoc) |
|
997 |
* @see org.gvsig.raster.dataset.IRasterDataSource#getData(int, int, int) |
|
1012 | 998 |
*/ |
1013 | 999 |
public Object getData(int x, int y, int band)throws InvalidSetViewException, FileNotOpenException, RasterDriverException{ |
1014 | 1000 |
String file = bandList.getBand(band).getFileName(); |
... | ... | |
1036 | 1022 |
* @return Proyecci?n en formato cadena |
1037 | 1023 |
* @throws RasterDriverException |
1038 | 1024 |
*/ |
1039 |
public String getWktProjection() throws RasterDriverException{ |
|
1025 |
public String getWktProjection() throws RasterDriverException {
|
|
1040 | 1026 |
return ((RasterDataset)files.get(0)).getWktProjection(); |
1041 | 1027 |
} |
1042 | 1028 |
|
... | ... | |
1114 | 1100 |
* @param fName |
1115 | 1101 |
* @throws IOException |
1116 | 1102 |
*/ |
1117 |
public void saveToRmf() throws IOException { |
|
1103 |
public void saveGeoToRmf() throws IOException {
|
|
1118 | 1104 |
for (int i = 0; i < files.size(); i++) |
1119 |
((RasterDataset)files.get(i)).saveToRmf(); |
|
1105 |
((RasterDataset)files.get(i)).saveGeoToRmf();
|
|
1120 | 1106 |
} |
1121 | 1107 |
|
1122 | 1108 |
/** |
... | ... | |
1127 | 1113 |
*/ |
1128 | 1114 |
public boolean isInside(Point2D p) { |
1129 | 1115 |
if(getDataset(0) != null) |
1130 |
return getDataset(0).isInside(p); |
|
1116 |
return getDataset(0)[0].isInside(p);
|
|
1131 | 1117 |
return false; |
1132 | 1118 |
} |
1133 | 1119 |
|
1134 |
/**
|
|
1135 |
* Recupera del raster la matriz de transformaci?n que lo situa en cualquier parte de la vista
|
|
1136 |
* @return AffineTransform
|
|
1120 |
/* |
|
1121 |
* (non-Javadoc)
|
|
1122 |
* @see org.gvsig.raster.dataset.IRasterDataSource#getAffineTransform()
|
|
1137 | 1123 |
*/ |
1138 | 1124 |
public AffineTransform getAffineTransform(){ |
1139 | 1125 |
if(getDataset(0) != null) |
1140 |
return getDataset(0).getAffineTransform(); |
|
1126 |
return getDataset(0)[0].getAffineTransform();
|
|
1141 | 1127 |
return null; |
1142 | 1128 |
} |
1143 | 1129 |
|
1144 |
/**
|
|
1145 |
* Asigna al raster la matriz de transformaci?n para situarlo en cualquier parte de la vista
|
|
1146 |
* @param transf
|
|
1130 |
/* |
|
1131 |
* (non-Javadoc)
|
|
1132 |
* @see org.gvsig.raster.dataset.IRasterDataSource#setAffineTransform(java.awt.geom.AffineTransform)
|
|
1147 | 1133 |
*/ |
1148 | 1134 |
public void setAffineTransform(AffineTransform transf){ |
1149 | 1135 |
for (int i = 0; i < getDatasetCount(); i++) { |
1150 |
this.getDataset(i).setAffineTransform(transf); |
|
1136 |
this.getDataset(i)[0].setAffineTransform(transf);
|
|
1151 | 1137 |
} |
1152 | 1138 |
} |
1153 | 1139 |
|
... | ... | |
1162 | 1148 |
*/ |
1163 | 1149 |
public AffineTransform getOwnTransformation() { |
1164 | 1150 |
if(getDataset(0) != null) |
1165 |
return getDataset(0).getOwnTransformation(); |
|
1151 |
return getDataset(0)[0].getOwnTransformation();
|
|
1166 | 1152 |
return new AffineTransform(); |
1167 | 1153 |
} |
1168 | 1154 |
|
1169 |
/**
|
|
1170 |
* Consulta de si un raster tiene rotaci?n o no.
|
|
1171 |
* @return true si tiene rotaci?n y false si no la tiene.
|
|
1155 |
/* |
|
1156 |
* (non-Javadoc)
|
|
1157 |
* @see org.gvsig.raster.dataset.IRasterDataSource#isRotated()
|
|
1172 | 1158 |
*/ |
1173 | 1159 |
public boolean isRotated() { |
1174 | 1160 |
if(getDataset(0) != null) |
1175 |
return getDataset(0).isRotated(); |
|
1161 |
return getDataset(0)[0].isRotated();
|
|
1176 | 1162 |
return false; |
1177 | 1163 |
} |
1178 | 1164 |
} |
Also available in: Unified diff