Statistics
| Revision:

gvsig-raster / org.gvsig.raster / branches / org.gvsig.raster.2.4 / org.gvsig.raster / org.gvsig.fmap.mapcontext.raster / org.gvsig.fmap.mapcontext.raster.impl / src / test / java / org / gvsig / fmap / mapcontext / raster / impl / DefaultRasterLayerTest.java @ 6287

History | View | Annotate | Download (5.16 KB)

1
package org.gvsig.fmap.mapcontext.raster.impl;
2

    
3

    
4
import java.awt.Dimension;
5
import java.awt.Graphics2D;
6
import java.awt.image.BufferedImage;
7
import java.io.File;
8
import java.io.IOException;
9
import java.net.URISyntaxException;
10
import java.net.URL;
11

    
12
import javax.imageio.ImageIO;
13

    
14
import org.cresques.cts.IProjection;
15
import org.gvsig.fmap.crs.CRSFactory;
16
import org.gvsig.fmap.dal.DALLocator;
17
import org.gvsig.fmap.dal.DataManager;
18
import org.gvsig.fmap.dal.DataStoreParameters;
19
import org.gvsig.fmap.dal.exception.InitializeException;
20
import org.gvsig.fmap.dal.exception.OpenException;
21
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
22
import org.gvsig.fmap.dal.exception.ReadException;
23
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
24
import org.gvsig.fmap.dal.feature.impl.DefaultFeatureStore;
25
import org.gvsig.fmap.dal.file.jimi.JimiRasterStoreProvider;
26
import org.gvsig.fmap.dal.file.jimi.JimiRasterStoreProviderFactory;
27
import org.gvsig.fmap.dal.file.jimi.JimiRasterStoreProviderParameters;
28
import org.gvsig.fmap.dal.raster.api.RasterStore;
29
import org.gvsig.fmap.dal.raster.impl.DefaultRasterStore;
30
import org.gvsig.fmap.geom.jts.primitive.Envelope2D;
31
import org.gvsig.fmap.geom.primitive.Envelope;
32
import org.gvsig.fmap.mapcontext.ViewPort;
33
import org.gvsig.fmap.mapcontext.raster.api.RasterLayer;
34
import org.gvsig.fmap.mapcontext.rendering.legend.IRasterLegend;
35
import org.gvsig.raster.lib.buffer.api.Buffer;
36
import org.gvsig.raster.lib.buffer.api.exceptions.BufferException;
37
import org.gvsig.raster.lib.legend.api.ColorInterpretation;
38
import org.gvsig.raster.lib.legend.api.RasterLegend;
39
import org.gvsig.raster.lib.legend.api.RasterLegendLocator;
40
import org.gvsig.raster.lib.legend.api.RasterLegendManager;
41
import org.gvsig.tools.junit.AbstractLibraryAutoInitTestCase;
42
import org.gvsig.tools.task.Cancellable;
43

    
44
/**
45
 * @author <a href="mailto:lmarques@disid.com">Lluis Marques</a>
46
 *
47
 */
48
public class DefaultRasterLayerTest extends AbstractLibraryAutoInitTestCase {
49

    
50
    @Override
51
    protected void doSetUp() throws Exception {
52
        //Do nothing
53
    }
54

    
55
    /**
56
     * Tests to create a rasterLayer
57
     */
58
    public void testCreateLayer() {
59
        IProjection projection = CRSFactory.getCRS("EPSG:25830");
60
        final URL url = this.getClass().getResource("/pathcv.png");
61

    
62
        //The store is created
63
        DataManager dataManager = DALLocator.getDataManager();
64
        try {
65
            File file=new File(url.toURI());
66
            JimiRasterStoreProviderFactory jimiFactory=
67
                (JimiRasterStoreProviderFactory)dataManager.getStoreProviderFactory(JimiRasterStoreProvider.NAME);
68
            JimiRasterStoreProviderParameters params = jimiFactory.createJimiParameters();
69
            params.setFile(file);
70
            params.setCRS(projection);
71

    
72
            RasterStore store=null;
73
            store = (RasterStore) dataManager.openStore(JimiRasterStoreProvider.NAME,params);
74

    
75
            RasterLegendManager legendManager=RasterLegendLocator.getRasterLegendManager();
76
            ColorInterpretation colorInterpretation =
77
                legendManager.createColorInterpretation(ColorInterpretation.RGB);
78
            RasterLegend legend= legendManager.createLegend(colorInterpretation);
79

    
80

    
81
            RasterLayer layer=new DefaultRasterLayer(store, legend);
82
            assertNotNull(layer);
83

    
84
            //589 x 467
85
            //1178 x 934
86
            //294 x 233
87
            BufferedImage image = new BufferedImage(589, 467, BufferedImage.TYPE_INT_ARGB);
88
            ViewPort viewPort = new ViewPort(projection);
89
            Envelope envelope = new Envelope2D(-100, -100, 1000, 1000);
90
            viewPort.setEnvelope(envelope);
91
//            viewPort.setEnvelope(layer.getFullEnvelope());
92
            viewPort.setImageSize(new Dimension(589, 467));
93
            viewPort.refreshExtent();
94

    
95
            layer.draw(image, (Graphics2D)image.getGraphics(), viewPort, new CancelDraw(), 1.0);
96

    
97
            try {
98
                File output = File.createTempFile("test", ".png");
99
                ImageIO.write(image, "png", output);
100
            } catch (IOException e) {
101
                fail("Exception happened: "+e.getMessage());
102
            }
103

    
104
        } catch (InitializeException | URISyntaxException | ReadException | ValidateDataParametersException | ProviderNotRegisteredException e) {
105
            fail("Exception happened: "+e.getMessage());
106
        }
107
    }
108

    
109

    
110

    
111

    
112
    public class CancelDraw implements Cancellable {
113

    
114
        /**
115
         * <p>
116
         * Determines if the drawing task must be canceled or not.
117
         * </p>
118
         *
119
         * @see #isCanceled()
120
         * @see #setCanceled(boolean)
121
         */
122
        private boolean cancel = false;
123

    
124
        /**
125
         * Creates a new <code>CancelDraw</code> object.
126
         */
127
        public CancelDraw() {
128
        }
129

    
130
        /*
131
         * (non-Javadoc)
132
         *
133
         * @see com.iver.utiles.swing.threads.Cancellable#setCanceled(boolean)
134
         */
135
        public void setCanceled(boolean b) {
136
            cancel = b;
137
        }
138

    
139
        /*
140
         * (non-Javadoc)
141
         *
142
         * @see com.iver.utiles.swing.threads.Cancellable#isCanceled()
143
         */
144
        public boolean isCanceled() {
145
            return cancel;
146
        }
147
    }
148

    
149
}