Statistics
| Revision:

root / trunk / libraries / libRaster / src-test / org / gvsig / raster / buffer / TDSDoubleAdjustToExtentEcw.java @ 12162

History | View | Annotate | Download (6.12 KB)

1 11074 nacho
/* 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.dataset.IBuffer;
25
import org.gvsig.raster.dataset.NotSupportedExtensionException;
26
import org.gvsig.raster.dataset.RasterDataset;
27
import org.gvsig.raster.dataset.RasterDriverException;
28
29
/**
30
 * Este test prueba el acceso a datos a traves de un DataSource sin resampleo
31
 * para un ECW con coordenadas reales.
32
 *
33
 * Lee el raster completo y comprueba que los datos leidos sean correctos
34
 * comparando los valores de las cuatro esquinas y algunos valores dentro de la imagen.
35
 * Se lee un ?rea m?s grande que el extent completo del raster para comprobar que el ajuste
36
 * al extent lo hace correctamente.
37
 *
38
 * Despu?s hace selecciona un ?rea dentro de la imagen de 2x2 y compara que los valores
39
 * leidos sean correctos.
40
 *
41
 * @author Nacho Brodin (nachobrodin@gmail.com)
42
 *
43
 */
44
public class TDSDoubleAdjustToExtentEcw extends TestCase{
45
46
        private String baseDir = "./test-images/";
47
        private String path = baseDir + "miniraster30x30.jp2";
48
        private RasterDataset f = null;
49
        private BufferFactory ds = null;
50
51
        public void start(){
52
                this.setUp();
53
                this.testStack();
54
        }
55
56
        public void setUp() {
57
                System.err.println("TDSDoubleAdjustToExtentEcw running...");
58
                //System.out.println("TestDataSource (Real Coord) Adjust To Extent [Ecw] running...");
59
        }
60
61
        static{
62
                RasterLibrary.wakeUp();
63
        }
64
65
        public void testStack(){
66
                int[] drawableBands = {0, 1, 2};
67
                try {
68
                        f = RasterDataset.open(null, path);
69
                } catch (NotSupportedExtensionException e) {
70
                        return;
71
                } catch (RasterDriverException e) {
72
                        return;
73
                }
74
                ds = new BufferFactory(f);
75 12151 nacho
                ds.setDrawableBands(drawableBands);
76 11074 nacho
                //Se selecciona un ?rea mayor que el extent para probar que lo ajusta a este
77 12162 nacho
                ds.setAreaOfInterest(645860.0, 4923870.0, 130, 130);
78 11074 nacho
                dataTest1();
79
                //print();
80
81 12162 nacho
                ds.setAreaOfInterest(645889.0, 4923858.0, 5, 5);
82 11074 nacho
                dataTest2();
83
                //print();
84
        }
85
86
        private void dataTest2(){
87
                IBuffer raster = ds.getRasterBuf();
88
                //Upper Left
89
                assertEquals((int)(raster.getElemByte(0, 0, 0) & 0xff), 121);
90
                assertEquals((int)(raster.getElemByte(0, 0, 1) & 0xff), 135);
91
                assertEquals((int)(raster.getElemByte(0, 0, 2) & 0xff), 110);
92
                //Upper Right
93
                assertEquals((int)(raster.getElemByte(0, 1, 0) & 0xff), 235);
94
                assertEquals((int)(raster.getElemByte(0, 1, 1) & 0xff), 224);
95
                assertEquals((int)(raster.getElemByte(0, 1, 2) & 0xff), 192);
96
                //Lower Left
97
                assertEquals((int)(raster.getElemByte(1, 0, 0) & 0xff), 102);
98
                assertEquals((int)(raster.getElemByte(1, 0, 1) & 0xff), 104);
99
                assertEquals((int)(raster.getElemByte(1, 0, 2) & 0xff), 83);
100
                //Lower Right
101
                assertEquals((int)(raster.getElemByte(1, 1, 0) & 0xff), 95);
102
                assertEquals((int)(raster.getElemByte(1, 1, 1) & 0xff), 77);
103
                assertEquals((int)(raster.getElemByte(1, 1, 2) & 0xff), 99);
104
        }
105
106
        private void dataTest1(){
107
                IBuffer raster = ds.getRasterBuf();
108
                //Upper Left
109
                assertEquals((int)(raster.getElemByte(0, 0, 0) & 0xff), 43);
110
                assertEquals((int)(raster.getElemByte(0, 0, 1) & 0xff), 53);
111
                assertEquals((int)(raster.getElemByte(0, 0, 2) & 0xff), 26);
112
                //Upper Right
113
                assertEquals((int)(raster.getElemByte(0, 29, 0) & 0xff), 255);
114
                assertEquals((int)(raster.getElemByte(0, 29, 1) & 0xff), 252);
115
                assertEquals((int)(raster.getElemByte(0, 29, 2) & 0xff), 246);
116
                //Lower Left
117
                assertEquals((int)(raster.getElemByte(29, 0, 0) & 0xff), 175);
118
                assertEquals((int)(raster.getElemByte(29, 0, 1) & 0xff), 175);
119
                assertEquals((int)(raster.getElemByte(29, 0, 2) & 0xff), 147);
120
                //Lower Right
121
                assertEquals((int)(raster.getElemByte(29, 29, 0) & 0xff), 126);
122
                assertEquals((int)(raster.getElemByte(29, 29, 1) & 0xff), 134);
123
                assertEquals((int)(raster.getElemByte(29, 29, 2) & 0xff), 111);
124
125
                assertEquals((int)(raster.getElemByte(6, 6, 0) & 0xff), 61);
126
                assertEquals((int)(raster.getElemByte(6, 6, 1) & 0xff), 84);
127
                assertEquals((int)(raster.getElemByte(6, 6, 2) & 0xff), 64);
128
129
                assertEquals((int)(raster.getElemByte(6, 23, 0) & 0xff), 168);
130
                assertEquals((int)(raster.getElemByte(6, 23, 1) & 0xff), 171);
131
                assertEquals((int)(raster.getElemByte(6, 23, 2) & 0xff), 164);
132
133
                assertEquals((int)(raster.getElemByte(23, 6, 0) & 0xff), 46);
134
                assertEquals((int)(raster.getElemByte(23, 6, 1) & 0xff), 64);
135
                assertEquals((int)(raster.getElemByte(23, 6, 2) & 0xff), 26);
136
137
                assertEquals((int)(raster.getElemByte(23, 23, 0) & 0xff), 54);
138
                assertEquals((int)(raster.getElemByte(23, 23, 1) & 0xff), 57);
139
                assertEquals((int)(raster.getElemByte(23, 23, 2) & 0xff), 36);
140
141
                assertEquals((int)(raster.getElemByte(11, 13, 0) & 0xff), 203);
142
                assertEquals((int)(raster.getElemByte(11, 13, 1) & 0xff), 182);
143
                assertEquals((int)(raster.getElemByte(11, 13, 2) & 0xff), 181);
144
145
                assertEquals((int)(raster.getElemByte(22, 21, 0) & 0xff), 71);
146
                assertEquals((int)(raster.getElemByte(22, 21, 1) & 0xff), 97);
147
                assertEquals((int)(raster.getElemByte(22, 21, 2) & 0xff), 62);
148
        }
149
150
        /**
151
         * Imprime todos los pixels de la fuente de datos en RGB
152
         */
153
        private void print(){
154
                IBuffer raster = ds.getRasterBuf();
155
                for(int line = 0; line < raster.getHeight(); line++){
156
                        for(int col = 0; col < raster.getWidth(); col++)
157
                                System.out.print("(" + (int)(raster.getElemByte(line, col, 0) & 0xff) + " " + (int)(raster.getElemByte(line, col, 1) & 0xff) + " " + (int)(raster.getElemByte(line, col, 2) & 0xff) + ")");
158
                        System.out.println();
159
                }
160
        }
161
162
}