Statistics
| Revision:

gvsig-raster / org.gvsig.raster.cache / trunk / org.gvsig.raster.cache / org.gvsig.raster.cache.lib.impl / deprecated / buffer / test / impl / rocache / TestAssignBand.java @ 1965

History | View | Annotate | Download (2.42 KB)

1
package org.gvsig.raster.cache.buffer.impl.rocache;
2

    
3
import java.io.IOException;
4

    
5
import junit.framework.TestCase;
6

    
7
import org.gvsig.jgdal.GdalException;
8
import org.gvsig.raster.cache.buffer.Band;
9
import org.gvsig.raster.cache.buffer.Buffer;
10
import org.gvsig.raster.cache.buffer.BufferDataSource;
11
import org.gvsig.raster.cache.buffer.exception.BandNotCompatibleException;
12
import org.gvsig.raster.cache.buffer.impl.io.BufferDataSourceImpl;
13
import org.gvsig.raster.cache.buffer.impl.io.GdalRead;
14
import org.gvsig.raster.cache.buffer.impl.io.GdalWrite;
15

    
16
/**
17
 * Assign by reference a band in a Buffer
18
 * @author Nacho Brodin (nachobrodin@gmail.com)
19
 */
20
public class TestAssignBand extends TestCase {
21
        private String rasterIn = "./src/test/resources/image/001m09_1_0.tif";
22
        private String rasterOut = "/tmp/out-4bands.tif";
23
        
24
        public void start() {
25
                this.setUp();
26
                this.testStack();
27
        }
28

    
29
        public void setUp() {
30
                System.err.println("ROCache TestAssignBand running...");
31
        }
32
        
33
        public void testStack() {
34
                long t1 = System.currentTimeMillis();
35
                GdalRead input1 = null;
36

    
37
                GdalWrite out = null;
38
                try {
39
                                                
40
                        //Read input data
41
                        input1 = new GdalRead(rasterIn);
42
                                                
43
                        BufferDataSource ds = null;
44
                        try {
45
                                ds = new BufferDataSourceImpl(rasterIn);
46
                        } catch (IOException e) {
47
                                e.printStackTrace();
48
                        }
49
                        Buffer buf1 = new RasterReadOnlyBuffer(ds);
50
                        
51
                        BufferDataSource ds1 = null;
52
                        try {
53
                                ds1 = new BufferDataSourceImpl(rasterIn);
54
                        } catch (IOException e) {
55
                                e.printStackTrace();
56
                        }
57
                        Buffer buf2 = new RasterReadOnlyBuffer(ds1);
58
                        
59
                        Band rb = buf2.getBand(2);
60
                        try {
61
                                buf1.assignBand(1, rb);
62
                        } catch (BandNotCompatibleException e) {
63
                                e.printStackTrace();
64
                        }
65
                        
66
                        //Write output file 
67
                        out = new GdalWrite(rasterOut, 4, input1.getDataType(), input1.getWidth(), input1.getHeight(), GdalWrite.COLOR_INTERP_GRAY);
68
                        out.writeBands(buf1.getBands());
69
                        out.close();        
70
                        
71
                        Band band1 = buf1.getBand(1);
72
                        Band band2 = buf1.getBand(3);
73
                        for (int i = 0; i < band1.getHeight(); i++) {
74
                                for (int j = 0; j < band1.getWidth(); j++) {
75
                                        byte b1 = band1.getElemByte(i, j);
76
                                        byte b2 = band2.getElemByte(i, j);
77
                                        assertEquals(b1, b2);
78
                                }
79
                        }
80
                        
81
                        buf1.free();
82
                        buf2.free();
83
                } catch (GdalException e) {
84
                        e.printStackTrace();
85
                } catch (IOException e) {
86
                        e.printStackTrace();
87
                }
88
                long t2 = System.currentTimeMillis();
89
                System.out.println("Tiempo ROCache TestAssignBand: " + (t2 - t1) + " milisegundos");
90
        }
91
}