Statistics
| Revision:

root / trunk / libraries / libRaster / src-test / org / gvsig / raster / buffer / TestGdalByteMultiBandHistogram.java @ 11074

History | View | Annotate | Download (6.02 KB)

1
/* gvSIG. Sistema de Informaci�n Geogr�fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2007 IVER T.I. 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
package org.gvsig.raster.buffer;
20

    
21
import junit.framework.TestCase;
22

    
23
import org.gvsig.raster.RasterLibrary;
24
import org.gvsig.raster.buffer.BufferFactory;
25
import org.gvsig.raster.dataset.NotSupportedExtensionException;
26
import org.gvsig.raster.dataset.RasterDataset;
27
import org.gvsig.raster.dataset.RasterDriverException;
28
import org.gvsig.raster.dataset.RasterMultiDataset;
29
import org.gvsig.raster.util.Histogram;
30
import org.gvsig.raster.util.HistogramException;
31

    
32
/**
33
 * Test a un histograma de una imagen de 3 bandas de un byte por dato leido con gdal. 
34
 * El test comprueba valores a lo largo de todo el histograma
35
 * @author Nacho Brodin (nachobrodin@gmail.com)
36
 *
37
 */
38
public class TestGdalByteMultiBandHistogram extends TestCase{
39

    
40
        private String baseDir = "./test-images/";
41
        private String path1 = baseDir + "band1-30x28byte.tif";
42
        private String path2 = baseDir + "band2-30x28byte.tif";
43
        private String path3 = baseDir + "band3-30x28byte.tif";
44
        private RasterDataset f1 = null, f2 = null, f3 = null;        
45
        private BufferFactory ds = null;
46
        
47
        public void start(){
48
                this.setUp();
49
                this.testStack();
50
        }
51
        
52
        public void setUp() {
53
                System.err.println("TestGdalByteMultiBandHistogram running...");
54
        }
55

    
56
        static{
57
                RasterLibrary.wakeUp();
58
        }
59
        
60
        public void testStack(){
61
                try {
62
                        f1 = RasterDataset.open(null, path1);
63
                        f2 = RasterDataset.open(null, path2);
64
                        f3 = RasterDataset.open(null, path3);
65
                } catch (NotSupportedExtensionException e) {
66
                        return;
67
                } catch (RasterDriverException e) {
68
                        return;
69
                }
70
                ds = new BufferFactory(f1);
71
                ds.addFile(f2);
72
                ds.addFile(f3);
73
                RasterMultiDataset rmd = ds.getGeoRasterMultiFile();
74
                
75
                Histogram histogram = null;
76
                
77
                try {
78
                        histogram = rmd.getHistogram();
79
                } catch (HistogramException e) {
80
                        e.printStackTrace();
81
                } 
82
                //print(histogram);
83
                resultTestR(histogram);
84
                resultTestG(histogram);
85
                resultTestB(histogram);
86
        }
87
        
88
        private void resultTestR(Histogram histogram){
89
                assertEquals(histogram.getHistogramValue(0, 87), 33);
90
                assertEquals(histogram.getHistogramValue(0, 88), 32);
91
                assertEquals(histogram.getHistogramValue(0, 90), 17);
92
                assertEquals(histogram.getHistogramValue(0, 91), 29);
93
                assertEquals(histogram.getHistogramValue(0, 92), 11);
94
                assertEquals(histogram.getHistogramValue(0, 93), 9);
95
                assertEquals(histogram.getHistogramValue(0, 94), 9);
96
                assertEquals(histogram.getHistogramValue(0, 95), 8);
97
                assertEquals(histogram.getHistogramValue(0, 96), 3);
98
                assertEquals(histogram.getHistogramValue(0, 97), 3);
99
                assertEquals(histogram.getHistogramValue(0, 98), 3);
100
                
101
        } 
102
        
103
        private void resultTestG(Histogram histogram){
104
                assertEquals(histogram.getHistogramValue(1, 0), 0);
105
                assertEquals(histogram.getHistogramValue(1, 1), 0);
106
                assertEquals(histogram.getHistogramValue(1, 2), 0);
107
                assertEquals(histogram.getHistogramValue(1, 3), 0);
108
                assertEquals(histogram.getHistogramValue(1, 4), 0);
109
                assertEquals(histogram.getHistogramValue(1, 5), 0);
110
                assertEquals(histogram.getHistogramValue(1, 6), 0);
111
                assertEquals(histogram.getHistogramValue(1, 7), 0);
112
                assertEquals(histogram.getHistogramValue(1, 8), 0);
113
                assertEquals(histogram.getHistogramValue(1, 9), 0);
114
                assertEquals(histogram.getHistogramValue(1, 10), 0);
115
        
116
                assertEquals(histogram.getHistogramValue(1, 155), 4);
117
                assertEquals(histogram.getHistogramValue(1, 156), 3);
118
                assertEquals(histogram.getHistogramValue(1, 157), 2);
119
                assertEquals(histogram.getHistogramValue(1, 158), 0);
120
                assertEquals(histogram.getHistogramValue(1, 159), 2);
121
                
122
                assertEquals(histogram.getHistogramValue(1, 111), 21);
123
                assertEquals(histogram.getHistogramValue(1, 112), 13);
124
                assertEquals(histogram.getHistogramValue(1, 113), 22);
125
                assertEquals(histogram.getHistogramValue(1, 114), 16);
126
                assertEquals(histogram.getHistogramValue(1, 115), 13);
127
                assertEquals(histogram.getHistogramValue(1, 116), 13);
128
        } 
129
        
130
        private void resultTestB(Histogram histogram){
131
                assertEquals(histogram.getHistogramValue(2, 28), 1);
132
                assertEquals(histogram.getHistogramValue(2, 34), 4);
133
                assertEquals(histogram.getHistogramValue(2, 36), 6);
134
                assertEquals(histogram.getHistogramValue(2, 37), 14);
135
                assertEquals(histogram.getHistogramValue(2, 38), 31);
136
                assertEquals(histogram.getHistogramValue(2, 39), 28);
137
                assertEquals(histogram.getHistogramValue(2, 47), 2);
138
                assertEquals(histogram.getHistogramValue(2, 48), 5);
139
                assertEquals(histogram.getHistogramValue(2, 49), 3);
140
                assertEquals(histogram.getHistogramValue(2, 50), 1);
141
                assertEquals(histogram.getHistogramValue(2, 51), 2);
142
                
143
                assertEquals(histogram.getHistogramValue(2, 53), 4);
144
                assertEquals(histogram.getHistogramValue(2, 151), 8);
145
                assertEquals(histogram.getHistogramValue(2, 152), 7);
146
                assertEquals(histogram.getHistogramValue(2, 153), 8);
147
                assertEquals(histogram.getHistogramValue(2, 158), 8);
148
        
149
                assertEquals(histogram.getHistogramValue(2, 225), 1);
150
                assertEquals(histogram.getHistogramValue(2, 226), 2);
151
                assertEquals(histogram.getHistogramValue(2, 227), 0);
152
                assertEquals(histogram.getHistogramValue(2, 231), 1);
153
                assertEquals(histogram.getHistogramValue(2, 232), 1);
154
        } 
155
        
156
        private void print(Histogram histogram){
157
                for (int i = 0; i < histogram.getNumBands(); i++) {
158
                        for (int j = 0; j < histogram.getBandLenght(i); j++){
159
                                System.out.print(histogram.getHistogramValue(i, j) + " ");
160
                        }
161
                        System.out.println("");
162
                }
163
        }
164
        
165

    
166
}