/[schmitzm]/trunk/src/skrueger/geotools/StyledGridCoverageReader.java
ViewVC logotype

Annotation of /trunk/src/skrueger/geotools/StyledGridCoverageReader.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 315 - (hide annotations)
Wed Aug 26 11:03:27 2009 UTC (15 years, 6 months ago) by mojays
Original Path: branches/1.0-gt2-2.6/src/skrueger/geotools/StyledGridCoverageReader.java
File size: 10318 byte(s)
Branch created from SCHMITZM 1.0 (rev 313) to switch to gt2-2.6.x.
1 alfonx 244 /*******************************************************************************
2     * Copyright (c) 2009 Martin O. J. Schmitz.
3     *
4     * This file is part of the SCHMITZM library - a collection of utility
5 alfonx 256 * classes based on Java 1.6, focusing (not only) on Java Swing
6 alfonx 244 * and the Geotools library.
7     *
8     * The SCHMITZM project is hosted at:
9     * http://wald.intevation.org/projects/schmitzm/
10     *
11     * This program is free software; you can redistribute it and/or
12     * modify it under the terms of the GNU Lesser General Public License
13     * as published by the Free Software Foundation; either version 3
14     * of the License, or (at your option) any later version.
15     *
16     * This program is distributed in the hope that it will be useful,
17     * but WITHOUT ANY WARRANTY; without even the implied warranty of
18     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19     * GNU General Public License for more details.
20     *
21     * You should have received a copy of the GNU Lesser General Public License (license.txt)
22     * along with this program; if not, write to the Free Software
23     * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
24     * or try this link: http://www.gnu.org/licenses/lgpl.html
25     *
26     * Contributors:
27     * Martin O. J. Schmitz - initial API and implementation
28     * Stefan A. Krüger - additional utility classes
29     ******************************************************************************/
30     package skrueger.geotools;
31    
32     import java.net.URL;
33    
34     import javax.swing.ImageIcon;
35    
36     import org.geotools.coverage.grid.GridCoverage2D;
37     import org.geotools.coverage.grid.io.AbstractGridCoverage2DReader;
38     import org.geotools.styling.Style;
39    
40     import schmitzm.geotools.JTSUtil;
41     import schmitzm.geotools.grid.GridUtil;
42     import skrueger.RasterLegendData;
43     import skrueger.i8n.Translation;
44    
45     /**
46     * This class provides a simple implementation of {@link StyledLayerInterface}
47     * for {@link AbstractGridCoverage2DReader}. The uncache functionality is not supported,
48     * because if the coverage is read once this class bases on an existing {@link GridCoverage2D}
49     * object in memory.
50     * @author <a href="mailto:[email protected]">Martin Schmitz</a> (University of Bonn/Germany)
51     * @version 1.0
52     */
53     public class StyledGridCoverageReader extends AbstractStyledLayer<AbstractGridCoverage2DReader> implements StyledGridCoverageReaderInterface {
54    
55     /** Holds the meta data for displaying a legend. */
56     protected RasterLegendData legendData = null;
57    
58     /**
59     * Creates a styled grid with language-specific informations.
60     * @param gcr the grid reader
61     * @param id a unique ID for the object
62     * @param title a (language-specific) short description
63     * @param desc a (language-specific) long description
64     * @param keywords (language-specific) keywords for the geo objects
65     * @param style a display style (if {@code null}, a default style is created)
66     * @param legendData meta data for displaying a legend
67     * @param icon an icon for the object (can be {@code null})
68     * @exception IllegalArgumentException if {@code null} is given as ID or geo object
69     */
70     public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr, String id, Translation title, Translation desc, Translation keywords, Style style, RasterLegendData legendData, ImageIcon icon) {
71     super(gcr, JTSUtil.createEnvelope(gcr.getOriginalEnvelope()), gcr.getCrs(), id, title, desc, keywords, style, icon);
72     setLegendMetaData(legendData);
73     }
74    
75     /**
76     * Creates a styled grid with language-specific informations.
77     * @param gcr the grid reader
78     * @param id a unique ID for the object
79     * @param title a (language-specific) short description
80     * @param desc a (language-specific) long description
81     * @param keywords (language-specific) keywords for the geo objects
82     * @param style a display style with legend information
83     * @param icon an icon for the object (can be {@code null})
84     * @exception IllegalArgumentException if {@code null} is given as ID or geo object
85     */
86     public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr, String id, Translation title, Translation desc, Translation keywords, StyledLayerStyle<RasterLegendData> style, ImageIcon icon) {
87     super(gcr, JTSUtil.createEnvelope(gcr.getOriginalEnvelope()), gcr.getCrs(), id, title, desc, keywords, style != null ? style.getGeoObjectStyle() : null, icon);
88     setLegendMetaData( style != null ? style.getMetaData() : null );
89     }
90    
91     /**
92     * Creates a styled grid with a language-specific title, no long description, no
93     * keywords and no icon.
94     * @param gcr the grid reader
95     * @param id a unique ID for the object
96     * @param title a short description
97     * @param style a display style (if {@code null}, a default style is created)
98     * @param legendData meta data for displaying a legend
99     * @exception IllegalArgumentException if {@code null} is given as ID or geo object
100     */
101     public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr, String id, Translation title, Style style, RasterLegendData legendData) {
102     this(gcr, id, title, null, null, style, legendData, null);
103     }
104    
105     /**
106     * Creates a styled grid with non-translated informations.
107     * @param gcr the grid reader
108     * @param id a unique ID for the object
109     * @param title a short description
110     * @param desc a long description
111     * @param keywords keywords for the geo objects
112     * @param style a display style (if {@code null}, a default style is created)
113     * @param legendData meta data for displaying a legend
114     * @param icon an icon for the object (can be {@code null})
115     * @exception IllegalArgumentException if {@code null} is given as ID or geo object
116     */
117     public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr, String id, String title, String desc, String keywords, Style style, RasterLegendData legendData, ImageIcon icon) {
118     this(gcr, id, (Translation)null, null, null, style, legendData, icon);
119     setTitle(title);
120     setDesc(desc);
121     setKeywords(keywords);
122     }
123    
124     /**
125     * Creates a styled grid with non-translated informations.
126     * @param gcr the grid reader
127     * @param id a unique ID for the object
128     * @param title a short description
129     * @param desc a long description
130     * @param keywords keywords for the geo objects
131     * @param style a display style with legend information
132     * @param icon an icon for the object (can be {@code null})
133     * @exception IllegalArgumentException if {@code null} is given as ID or geo object
134     */
135     public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr, String id, String title, String desc, String keywords, StyledLayerStyle<RasterLegendData> style, ImageIcon icon) {
136     this(gcr,
137     id,
138     title,
139     desc,
140     keywords,
141     style != null ? style.getGeoObjectStyle() : null,
142     style != null ? style.getMetaData() : null,
143     icon
144     );
145     }
146    
147     /**
148     * Creates a styled grid with a non-translated title, no long description, no
149     * keywords and no icon.
150     * @param gcr the grid reader
151     * @param id a unique ID for the object
152     * @param title a short description
153     * @param style a display style (if {@code null}, a default style is created)
154     * @exception IllegalArgumentException if {@code null} is given as ID or geo object
155     */
156     public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr, String id, String title, Style style, RasterLegendData legendData) {
157     this(gcr, id, title, null, null, style, legendData, null);
158     }
159    
160     /**
161     * Creates a styled grid with a non-translated title, no long description, no
162     * keywords and no icon.
163     * @param gcr the grid reader
164     * @param id a unique ID for the object
165     * @param title a short description
166     * @param style a display style with legend information
167     * @exception IllegalArgumentException if {@code null} is given as ID or geo object
168     */
169     public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr, String id, String title, StyledLayerStyle<RasterLegendData> style) {
170     this(gcr,
171     id,
172     title,
173     null,
174     null,
175     style != null ? style.getGeoObjectStyle() : null,
176     style != null ? style.getMetaData() : null,
177     null
178     );
179     }
180    
181     /**
182     * Creates a default style for a {@link GridCoverage2D}.
183     * @see GridUtil#createDefaultStyle()
184     */
185     protected Style createDefaultStyle() {
186     return GridUtil.createDefaultStyle();
187     }
188    
189     /**
190     * Returns the meta data needed for displaying a legend.
191     */
192     public RasterLegendData getLegendMetaData() {
193     return legendData;
194     }
195    
196     /**
197     * Sets the meta data needed for displaying a legend.
198     * If {@code legendData} is {@code null} an empty {@link RasterLegendData}
199     * (without gaps) is set, so {@link #getLegendMetaData()} never returns {@code null}.
200     * @param legendData legend meta data
201     */
202     public void setLegendMetaData(RasterLegendData legendData) {
203     this.legendData = (legendData != null) ? legendData : new RasterLegendData(false);
204     }
205    
206     /**
207     * Simply sets the {@link #geoObject}, {@link #crs}, {@link #envelope} and
208     * {@link #legendData} to {@code null}.
209     */
210     public void dispose() {
211     this.geoObject = null;
212     this.envelope = null;
213     this.crs = null;
214     this.legendData = null;
215     }
216    
217     /**
218     * Tests whether the geo object is disposed.
219     * @return boolean
220     */
221     public boolean isDisposed() {
222     return geoObject == null;
223     }
224    
225     /**
226     * Does nothing, because the {@link AbstractStyledLayer} bases on existing
227     * objects (in memory) which can not be uncached and reloaded.
228     */
229     public void uncache() {
230     LOGGER.warn("Uncache functionality is not supported. Object remains in memory.");
231     }
232    
233     /*
234     * (non-Javadoc)
235     * @see skrueger.geotools.StyledLayerInterface#getInfoURL()
236     */
237     public URL getInfoURL() {
238     return null;
239     }
240    
241     /**
242     * If true, this layer will not be shown in the legend. Default = false
243     */
244     /**
245     *
246     * Killed by SK: 6. April 09: Ein Layer soll nicht generell auf
247     * verstecken/nicht verstecken gestellt werden können. Das sind
248     * Eigenschaften der Karte/MapContext, ebenso wie die Reihenfolge der Layer.
249     * Im Atlas verwaltet deshalb nun die Klasse skrueger.atlas.Map welche Layer
250     * nicht in der Legende auftauchen sollen. Meines Wissens hat keiner bisher
251     * die Funktion genutzt.
252     *
253     public boolean isHideInLegend() {
254     return false;
255     }
256     */
257    
258     }

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26