Statistics
| Revision:

root / trunk / extensions / extRasterTools-SE / src-test-ui / org / gvsig / imagenavigator / TestImageNavigator.java @ 11507

History | View | Annotate | Download (4.19 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.imagenavigator;
20

    
21
import java.awt.Dimension;
22
import java.awt.Graphics2D;
23
import java.awt.geom.AffineTransform;
24
import java.awt.geom.Dimension2D;
25

    
26
import javax.swing.JFrame;
27

    
28
import org.gvsig.gui.beans.imagenavigator.IClientImageNavigator;
29
import org.gvsig.gui.beans.imagenavigator.ImageNavigator;
30
import org.gvsig.raster.RasterLibrary;
31
import org.gvsig.raster.buffer.BufferFactory;
32
import org.gvsig.raster.dataset.NotSupportedExtensionException;
33
import org.gvsig.raster.dataset.RasterDataset;
34
import org.gvsig.raster.dataset.RasterDriverException;
35
import org.gvsig.raster.grid.render.Rendering;
36
import org.gvsig.raster.shared.Extent;
37
import org.gvsig.raster.shared.ViewPortData;
38

    
39
import com.iver.cit.gvsig.fmap.ViewPort;
40

    
41
/**
42
 * Este test prueba el acceso a datos a traves de un DataSource sin resampleo
43
 * para un raster leido con Gdal con coordenadas pixel. 
44
 * 
45
 * Lee el raster completo y comprueba que los datos leidos sean correctos 
46
 * comparando los valores de las cuatro esquinas y algunos valores dentro de la imagen.
47
 * Despu?s hace selecciona un ?rea dentro de la imagen de 2x2 y compara que los valores
48
 * leidos sean correctos.
49
 * 
50
 * @author Nacho Brodin (nachobrodin@gmail.com)
51
 *
52
 */
53
public class TestImageNavigator implements IClientImageNavigator {
54
        private String baseDir = "./test-images/";
55
        private String path = baseDir + "03AUG23153350-M2AS-000000122423_01_P001-BROWSE.jpg";        
56
        private RasterDataset f = null;        
57
        private BufferFactory ds = null;
58
        private Rendering rendering = null;
59
        private Extent extent2 = null;
60

    
61
        private JFrame jFrame = null;
62
        private ImageNavigator imageNavigator = null;
63

    
64
        static {
65
                RasterLibrary.wakeUp();
66
        }
67

    
68
        public TestImageNavigator() {
69
                int[] drawableBands = {0, 1, 2};
70
                try {
71
                        f = RasterDataset.open(null, path);
72
                } catch (NotSupportedExtensionException e) {
73
                        e.printStackTrace();
74
                        return;
75
                } catch (RasterDriverException e) {
76
                        e.printStackTrace();
77
                        return;
78
                }
79
                ds = new BufferFactory(f);
80
                ds.addDrawableBands(drawableBands);
81
                
82
                //ds.setAreaOfInterest(645817.0, 4923851.0, 645853.0, 4923815.0, 100, 100, true);
83
                rendering = new Rendering(ds);
84
                extent2 = ds.getExtent();
85
//                a.draw(g, vp)
86
                initialize();
87
        }
88
        
89
        private void initialize() {
90
                jFrame = new JFrame();
91
                jFrame.setSize(new Dimension(600, 600));
92
                jFrame.setContentPane(getImageNavigator());
93
                jFrame.show();
94

    
95
                getImageNavigator().setViewDimensions(extent2.getMin().getX(), extent2.getMax().getY(), extent2.getMax().getX(), extent2.getMin().getY());
96
                getImageNavigator().setZoom(1.0/ds.getXCellSize());
97
                getImageNavigator().updateBuffer();
98
                jFrame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
99
        }
100

    
101
        private ImageNavigator getImageNavigator() {
102
                if (imageNavigator == null) {
103
                        imageNavigator = new ImageNavigator(this);
104
                }
105
                return imageNavigator;
106
        }
107

    
108
        public static void main(String[] args) {
109
                new TestImageNavigator();
110
        }
111

    
112
        public void drawImage(Graphics2D g, double x1, double y1, double x2, double y2, double zoom, int width, int height) {
113
                if ((rendering == null) || ((x2 - x1) == 0.0) || ((y2 - y1) == 0.0))
114
                        return;
115
                ViewPort vp = new ViewPort(null);
116

    
117
                Dimension2D dimension = new Dimension(width, height);
118
                Extent extent = new Extent(x1, y1, x2, y2);
119

    
120
                ViewPortData vp2 = new ViewPortData(vp.getProjection(), extent, dimension);
121
                vp2.setMat(new AffineTransform(zoom, 0.0, 0.0, zoom, -x1*zoom, -y1*zoom));
122
                rendering.draw(g, vp2);
123
        }
124
}