Statistics
| Revision:

gvsig-raster / org.gvsig.raster.tools / trunk / org.gvsig.raster.tools / org.gvsig.raster.tools.app.basic / src / main / java / org / gvsig / raster / tools / app / basic / raster / process / OverviewsProcess.java @ 2123

History | View | Annotate | Download (4.25 KB)

1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
* 
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
* 
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
* 
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
* MA  02110-1301, USA.
20
* 
21
*/
22
package org.gvsig.raster.tools.app.basic.raster.process;
23

    
24
import org.gvsig.andami.PluginServices;
25
import org.gvsig.fmap.dal.coverage.RasterLocator;
26
import org.gvsig.fmap.dal.coverage.exception.OverviewException;
27
import org.gvsig.fmap.dal.coverage.process.BaseIncrementableTask;
28
import org.gvsig.fmap.dal.coverage.process.overview.OverviewBuilder;
29
import org.gvsig.raster.fmap.layers.FLyrRaster;
30
import org.gvsig.raster.mainplugin.config.Configuration;
31

    
32

    
33
/**
34
 * Proceso para la generaci?n de overviews.
35
 *
36
 * 10/12/2007
37
 * @author Nacho Brodin nachobrodin@gmail.com
38
 */
39
public class OverviewsProcess extends RasterProcess implements BaseIncrementableTask {
40
        private FLyrRaster   rasterSE      = null;
41
        private int          value         = 0;
42
        private int          resamplingAlg = OverviewBuilder.AVERAGE;
43
        private int[]        overviews     = new int[] { 2, 4, 8, 16 };
44
        private String       builder       = "GDAL";
45
        
46
        /*
47
         * (non-Javadoc)
48
         * @see org.gvsig.rastertools.RasterProcess#init()
49
         */
50
        public void init() {
51
                rasterSE = getLayerParam("layer");
52
                builder = getStringParam("builder") != null ? getStringParam("builder") : builder;
53

    
54
                int overviewsRate = 2;
55
                int nOverviews = 4;
56
                overviewsRate = Configuration.getValue("overviews_rate", new Integer(overviewsRate)).intValue();
57
                nOverviews = Configuration.getValue("overviews_number", new Integer(nOverviews)).intValue();
58
                resamplingAlg = Configuration.getValue("overviews_resampling_algorithm", new Integer(resamplingAlg)).intValue();
59

    
60
                // Leemos de la configuraci?n los valores de algoritmo a usar,
61
                // n?mero de overviews a generar y proporci?n de la primera overview
62

    
63
                overviews = new int[nOverviews];
64
                overviews[0] = overviewsRate;
65
                for (int i = 1; i < nOverviews; i++)
66
                        overviews[i] = overviewsRate * overviews[i - 1];
67
        }
68

    
69
        /**
70
         * M?todo donde se ejecutar? el Thread, aqu? se generaran las
71
         * overviews
72
         * @throws ProcessException 
73
         */
74
        public void process() throws ProcessException {
75
                insertLineLog(PluginServices.getText(this, "overviews_generating"));
76
                OverviewBuilder overviewBuilder = RasterLocator.getManager().getOverviewBuilder(builder);
77
                
78
                overviewBuilder.setIncrementListener(this);
79
                try {
80
                        String[] uri = rasterSE.getDataStore().getURIByProvider();
81

    
82
                        for (int i = 0; i < uri.length; i++) {
83
                                insertLineLog(" Dataset: " + i);
84
                                overviewBuilder.buildOverviews(resamplingAlg, uri[i], overviews);
85
                        }
86

    
87
                        if (externalActions != null)
88
                                externalActions.end(rasterSE);
89
                } catch (OverviewException e) {
90
                        if (incrementableTask != null)
91
                                incrementableTask.hideWindow();
92
                        throw new ProcessException("error_write_overviews", e);
93
                }
94
        }
95

    
96
        /*
97
         * (non-Javadoc)
98
         * @see org.gvsig.gui.beans.incrementabletask.IIncrementable#getPercent()
99
         */
100
        public int getPercent() {
101
                return value;
102
        }
103

    
104
        /*
105
         * (non-Javadoc)
106
         * @see org.gvsig.addo.IOverviewIncrement#setPercent(int)
107
         */
108
        public void setPercent(int value) {
109
                this.value = value;
110
        }
111

    
112
        /*
113
         * (non-Javadoc)
114
         * @see org.gvsig.gui.beans.incrementabletask.IIncrementable#getTitle()
115
         */
116
        public String getTitle() {
117
                return PluginServices.getText(this, "incremento_overview");
118
        }
119
        
120
        /*
121
         * (non-Javadoc)
122
         * @see java.lang.Object#finalize()
123
         */
124
        protected void finalize() throws Throwable {
125
                rasterSE           = null;
126
                overviews           = null;
127
                super.finalize();
128
        }
129
}