Revision 26348 branches/v2_0_0_prep/extensions/extRemoteSensing/src-test/org/gvsig/remotesensing/processtest/TPCImageProcess.java
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