Revision 13328 trunk/libraries/libRaster/src/org/gvsig/raster/dataset/MultiRasterDataset.java

View differences:

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