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 @ 6220

History | View | Annotate | Download (5.1 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.raster.lib.buffer.api.Buffer;
35
import org.gvsig.raster.lib.buffer.api.exceptions.BufferException;
36
import org.gvsig.raster.lib.legend.api.ColorInterpretation;
37
import org.gvsig.raster.lib.legend.api.RasterLegend;
38
import org.gvsig.raster.lib.legend.api.RasterLegendLocator;
39
import org.gvsig.raster.lib.legend.api.RasterLegendManager;
40
import org.gvsig.tools.junit.AbstractLibraryAutoInitTestCase;
41
import org.gvsig.tools.task.Cancellable;
42

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

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

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

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

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

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

    
79

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

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

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

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

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

    
108

    
109

    
110

    
111
    public class CancelDraw implements Cancellable {
112

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

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

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

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

    
148
}