Revision 26348 branches/v2_0_0_prep/extensions/extRemoteSensing/src-test/org/gvsig/remotesensing/processtest/TPCImageProcess.java

View differences:

TPCImageProcess.java
1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2006 Instituto de Desarrollo Regional and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 *
19
 * For more information, contact:
20
 *
21
 *  Generalitat Valenciana
22
 *   Conselleria d'Infraestructures i Transport
23
 *   Av. Blasco Iba?ez, 50
24
 *   46010 VALENCIA
25
 *   SPAIN
26
 *
27
 *      +34 963862235
28
 *   gvsig@gva.es
29
 *      www.gvsig.gva.es
30
 *
31
 *    or
32
 *
33
 *   Instituto de Desarrollo Regional (Universidad de Castilla La-Mancha)
34
 *   Campus Universitario s/n
35
 *   02071 Alabacete
36
 *   Spain
37
 *
38
 *   +34 967 599 200
39
 */
40

  
1 41
package org.gvsig.remotesensing.processtest;
2 42

  
3 43
import junit.framework.TestCase;
......
2 42

  
43
import org.gvsig.fmap.raster.layers.FLyrRasterSE;
3 44
import org.gvsig.raster.RasterLibrary;
4 45
import org.gvsig.raster.buffer.BufferFactory;
5
import org.gvsig.raster.buffer.RasterBufferInvalidAccessException;
6 46
import org.gvsig.raster.buffer.RasterBufferInvalidException;
7 47
import org.gvsig.raster.dataset.IBuffer;
8
import org.gvsig.raster.dataset.NotSupportedExtensionException;
9
import org.gvsig.raster.dataset.RasterDataset;
10
import org.gvsig.raster.dataset.io.RasterDriverException;
11 48
import org.gvsig.raster.grid.Grid;
12 49
import org.gvsig.remotesensing.principalcomponents.PCImageProcess;
13
import org.gvsig.remotesensing.principalcomponents.PCStatisticsProcess;
50
import org.gvsig.remotesensing.principalcomponents.PCStatistics;
14 51

  
52
import Jama.Matrix;
53

  
54
import com.iver.cit.gvsig.exceptions.layers.LoadLayerException;
55

  
56

  
57
/**
58
* Este test prueba el proceso de construcci?n de la imagen resultante del proceso
59
* de analisis de componentes principales de la imagen pc_CreateImageTest.tif de 
60
* dimensiones 4x4 y tres bandas. 
61
* 
62
* @author Alejandro Mu?oz Sanchez (alejandro.munoz@uclm.es)
63
* */
15 64
public class TPCImageProcess extends TestCase {
16 65

  
17
	/*
18 66
	private String baseDir = "./test-images/";
19
	private String path1 = baseDir + "PC_Recorte_ERDAS.tif";
20
	private String path2 = baseDir + "PC_Recorte.tif";
21
	private RasterDataset f1 = null;
22
	private BufferFactory ds1 = null;
23
	private RasterDataset f2 = null;
24
	private BufferFactory ds2 = null;
67
	private String path1 = baseDir + "pc_CreateImageTest.tif";
68
	FLyrRasterSE lyr = null;
69
	Grid dataGrid=null;
70
	IBuffer   result= null;
25 71
	
......
37 83
	public void setUp() {
38 84
		System.err.println("TPCImageProcess running...");
39 85
		try {
40
			f1 = RasterDataset.open(null, path1);
41
			f2 = RasterDataset.open(null, path2);
42
		} catch (NotSupportedExtensionException e) {
86
			lyr = FLyrRasterSE.createLayer(
87
					path1,
88
					path1,
89
					null
90
					);
91
			BufferFactory ds1 = new BufferFactory(lyr.getDataSource());
92
			dataGrid= new Grid(ds1);
93
		
94
		} catch (LoadLayerException e) {
95
			System.out.print("Error en la construcci?n de la capa");
96
		} catch (RasterBufferInvalidException e) {
43 97
			e.printStackTrace();
44
		} catch (RasterDriverException e) {
45
			// TODO Auto-generated catch block
46
			e.printStackTrace();
47
		} 
48
		ds1 = new BufferFactory(f1);
49
		ds2= new BufferFactory(f2);
98
		}
50 99
	}
51 100
	
52 101
	public void testStack() {
102
		
103
		PCStatistics pcStatistics = new PCStatistics(new Matrix(new double[][]{{-0.922766631036,0.2990630039783, 0.2430289371596},
104
				   {-0.030678162029,-0.685664096085, 0.7272713370632},
105
                   {0.3841361672896,0.6636460404393, 0.6418826512605}}),
106
                   new double[]{425.104,1753.227,18714.369},
107
                   null);
53 108
	
54
		Grid gridResult=null;
55
		Grid gridResultErdas=null;
56
		try {
57
			 gridResult = new Grid(ds2);
58
			 gridResultErdas = new Grid(ds1);
59
		} catch (RasterBufferInvalidException e) {
60
			e.printStackTrace();
61
		}
109
		PCImageProcess iProcess = new PCImageProcess ();
110
		iProcess.addParam("inputRasterLayer",lyr);
111
		iProcess.addParam("statistics",pcStatistics);
112
		iProcess.addParam("selectedBands", new boolean[]{true,true,true});
113
		iProcess.addParam("selectedComponents",new boolean[]{true,true,true});
114
		iProcess.run();
115
		result=iProcess.getBufferResult();
116
		compare();
117
	}
62 118
	
63
		//PCStatisticsProcess sProcess= new PCStatisticsProcess(ds1.getDataSource(),null,new boolean[]{true,true,true,true,true,true});
64
		//sProcess.calculate();
65
		//PCImageProcess iProcess = new PCImageProcess (sProcess,new boolean[]{true,true,true,true,true,true},"testPCImageProcess");
66
		//iProcess.run();
67
		try {
68
			//compare(iProcess.getBufferResult(),gridResultErdas.getRasterBuf());
69
		} catch (RasterBufferInvalidAccessException e) {
70
			e.printStackTrace();
71
		}
119
	private void compare() {
120
		
121
		// Mismo numero de bandas
122
		assertEquals(result.getBandCount(),3);
123
			
124
		//Comparaci?n de valores
125
		assertEquals(result.getElemFloat(0, 0,0),1977.6109,0.1);
126
		assertEquals(result.getElemFloat(0, 1,0),1864.9603,0.1);
127
		assertEquals(result.getElemFloat(0, 2,0),1896.0991,0.1);
128
		assertEquals(result.getElemFloat(0, 3,0),1768.2855,0.1);	
129
		
130
		assertEquals(result.getElemFloat(1, 0,0),2081.7544,0.1);
131
		assertEquals(result.getElemFloat(1, 1,0),2062.1047,0.1);
132
		assertEquals(result.getElemFloat(1, 2,0),1989.8268,0.1);
133
		assertEquals(result.getElemFloat(1, 3,0),1777.2758,0.1);
134
		
135
		assertEquals(result.getElemFloat(2, 0,0),2212.70,0.1);
136
		assertEquals(result.getElemFloat(2, 1,0),2251.86,0.1);
137
		assertEquals(result.getElemFloat(2, 2,0),2094.61,0.1);
138
		assertEquals(result.getElemFloat(2, 3,0),1907.58,0.1);	
139
		
140
		assertEquals(result.getElemFloat(3, 0,0),1986.52,0.1);
141
		assertEquals(result.getElemFloat(3, 1,0),2056.09,0.1);
142
		assertEquals(result.getElemFloat(3, 2,0),2155.27,0.1);
143
		assertEquals(result.getElemFloat(3, 3,0),2060.12,0.1);	
144
		
145
		// Comparaci?n de los resultados de la banda 2
146
		
147
		assertEquals(result.getElemFloat(0, 0,1),621.25,0.1);
148
		assertEquals(result.getElemFloat(0, 1,1),592.24,0.1);
149
		assertEquals(result.getElemFloat(0, 2,1),623.04,0.1);
150
		assertEquals(result.getElemFloat(0, 3,1),669.02,0.1);	
151
		
152
		assertEquals(result.getElemFloat(1, 0,1),639.79,0.1);
153
		assertEquals(result.getElemFloat(1, 1,1),621.29,0.1);
154
		assertEquals(result.getElemFloat(1, 2,1),632.87,0.1);
155
		assertEquals(result.getElemFloat(1, 3,1),678.50,0.1);	
156
		
157
		assertEquals(result.getElemFloat(2, 0,1),597.30,0.1);
158
		assertEquals(result.getElemFloat(2, 1,1),637.98,0.1);
159
		assertEquals(result.getElemFloat(2, 2,1),652.07,0.1);
160
		assertEquals(result.getElemFloat(2, 3,1),633.76,0.1);	
161
		
162
		assertEquals(result.getElemFloat(3, 0,1),538.32,0.1);
163
		assertEquals(result.getElemFloat(3, 1,1),610.48,0.1);
164
		assertEquals(result.getElemFloat(3, 2,1),713.41,0.1);
165
		assertEquals(result.getElemFloat(3, 3,1),704.34,0.1);	
166
		
167
		// Comparaci?n de los resultados de la banda 3
168
		
169
		assertEquals(result.getElemFloat(0, 0,2),302.79,0.1);
170
		assertEquals(result.getElemFloat(0, 1,2),301.65,0.1);
171
		assertEquals(result.getElemFloat(0, 2,2),318.75,0.1);
172
		assertEquals(result.getElemFloat(0, 3,2),335.75,0.1);	
173
		
174
		assertEquals(result.getElemFloat(1, 0,2),336.23,0.1);
175
		assertEquals(result.getElemFloat(1, 1,2),283.88,0.1);
176
		assertEquals(result.getElemFloat(1, 2,2),267.51,0.1);
177
		assertEquals(result.getElemFloat(1, 3,2),304.35,0.1);	
178
		
179
		assertEquals(result.getElemFloat(2, 0,2),315.77,0.1);
180
		assertEquals(result.getElemFloat(2, 1,2),302.42,0.1);
181
		assertEquals(result.getElemFloat(2, 2,2),301.33,0.1);
182
		assertEquals(result.getElemFloat(2, 3,2),286.24,0.1);	
183
		
184
		assertEquals(result.getElemFloat(3, 0,2),314.02,0.1);
185
		assertEquals(result.getElemFloat(3, 1,2),317.80,0.1);
186
		assertEquals(result.getElemFloat(3, 2,2),336.10,0.1);
187
		assertEquals(result.getElemFloat(3, 3,2),271.26,0.1);	
72 188

  
73 189
	}
74
	
75
	private void compare(IBuffer buffer, IBuffer buffer2) throws RasterBufferInvalidAccessException {
76
		assertEquals(buffer.getBandCount(),buffer2.getBandCount());
77
		for(int band=0; band<buffer.getBandCount();band++){
78
			for(int line = 0; line < buffer2.getHeight(); line++){
79
				for(int col = 0; col < buffer2.getWidth(); col++){
80
					assertEquals(buffer2.getElemShort(col,line,band), buffer.getElemShort(col, line,band),1);
81
				}
82
			}
83
		}
84
	}*/
85
	
86
	
87 190
}

Also available in: Unified diff