/[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 1203 - (hide annotations)
Tue Nov 2 22:53:55 2010 UTC (14 years, 4 months ago) by alfonx
File size: 10497 byte(s)
When adding a layer to a map, the AtlasMapView stops if it's outside of the allowed max map extend.
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 alfonx 862 * Stefan A. Tzeggai - additional utility classes
29 alfonx 244 ******************************************************************************/
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 alfonx 1203 import org.geotools.geometry.jts.ReferencedEnvelope;
39 alfonx 244 import org.geotools.styling.Style;
40    
41     import schmitzm.geotools.JTSUtil;
42     import schmitzm.geotools.grid.GridUtil;
43     import skrueger.RasterLegendData;
44     import skrueger.i8n.Translation;
45    
46     /**
47     * This class provides a simple implementation of {@link StyledLayerInterface}
48     * for {@link AbstractGridCoverage2DReader}. The uncache functionality is not supported,
49     * because if the coverage is read once this class bases on an existing {@link GridCoverage2D}
50     * object in memory.
51     * @author <a href="mailto:[email protected]">Martin Schmitz</a> (University of Bonn/Germany)
52     * @version 1.0
53     */
54     public class StyledGridCoverageReader extends AbstractStyledLayer<AbstractGridCoverage2DReader> implements StyledGridCoverageReaderInterface {
55 alfonx 1203 @Override
56     public ReferencedEnvelope getReferencedEnvelope() {
57     return new ReferencedEnvelope(getEnvelope(), getCrs());
58     }
59 alfonx 244
60     /** Holds the meta data for displaying a legend. */
61     protected RasterLegendData legendData = null;
62    
63     /**
64     * Creates a styled grid with language-specific informations.
65     * @param gcr the grid reader
66     * @param id a unique ID for the object
67     * @param title a (language-specific) short description
68     * @param desc a (language-specific) long description
69     * @param keywords (language-specific) keywords for the geo objects
70     * @param style a display style (if {@code null}, a default style is created)
71     * @param legendData meta data for displaying a legend
72     * @param icon an icon for the object (can be {@code null})
73     * @exception IllegalArgumentException if {@code null} is given as ID or geo object
74     */
75     public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr, String id, Translation title, Translation desc, Translation keywords, Style style, RasterLegendData legendData, ImageIcon icon) {
76     super(gcr, JTSUtil.createEnvelope(gcr.getOriginalEnvelope()), gcr.getCrs(), id, title, desc, keywords, style, icon);
77     setLegendMetaData(legendData);
78     }
79    
80     /**
81     * Creates a styled grid with language-specific informations.
82     * @param gcr the grid reader
83     * @param id a unique ID for the object
84     * @param title a (language-specific) short description
85     * @param desc a (language-specific) long description
86     * @param keywords (language-specific) keywords for the geo objects
87     * @param style a display style with legend information
88     * @param icon an icon for the object (can be {@code null})
89     * @exception IllegalArgumentException if {@code null} is given as ID or geo object
90     */
91     public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr, String id, Translation title, Translation desc, Translation keywords, StyledLayerStyle<RasterLegendData> style, ImageIcon icon) {
92     super(gcr, JTSUtil.createEnvelope(gcr.getOriginalEnvelope()), gcr.getCrs(), id, title, desc, keywords, style != null ? style.getGeoObjectStyle() : null, icon);
93     setLegendMetaData( style != null ? style.getMetaData() : null );
94     }
95    
96     /**
97     * Creates a styled grid with a language-specific title, no long description, no
98     * keywords and no icon.
99     * @param gcr the grid reader
100     * @param id a unique ID for the object
101     * @param title a short description
102     * @param style a display style (if {@code null}, a default style is created)
103     * @param legendData meta data for displaying a legend
104     * @exception IllegalArgumentException if {@code null} is given as ID or geo object
105     */
106     public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr, String id, Translation title, Style style, RasterLegendData legendData) {
107     this(gcr, id, title, null, null, style, legendData, null);
108     }
109    
110     /**
111     * Creates a styled grid with non-translated informations.
112     * @param gcr the grid reader
113     * @param id a unique ID for the object
114     * @param title a short description
115     * @param desc a long description
116     * @param keywords keywords for the geo objects
117     * @param style a display style (if {@code null}, a default style is created)
118     * @param legendData meta data for displaying a legend
119     * @param icon an icon for the object (can be {@code null})
120     * @exception IllegalArgumentException if {@code null} is given as ID or geo object
121     */
122     public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr, String id, String title, String desc, String keywords, Style style, RasterLegendData legendData, ImageIcon icon) {
123     this(gcr, id, (Translation)null, null, null, style, legendData, icon);
124     setTitle(title);
125     setDesc(desc);
126     setKeywords(keywords);
127     }
128    
129     /**
130     * Creates a styled grid with non-translated informations.
131     * @param gcr the grid reader
132     * @param id a unique ID for the object
133     * @param title a short description
134     * @param desc a long description
135     * @param keywords keywords for the geo objects
136     * @param style a display style with legend information
137     * @param icon an icon for the object (can be {@code null})
138     * @exception IllegalArgumentException if {@code null} is given as ID or geo object
139     */
140     public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr, String id, String title, String desc, String keywords, StyledLayerStyle<RasterLegendData> style, ImageIcon icon) {
141     this(gcr,
142     id,
143     title,
144     desc,
145     keywords,
146     style != null ? style.getGeoObjectStyle() : null,
147     style != null ? style.getMetaData() : null,
148     icon
149     );
150     }
151    
152     /**
153     * Creates a styled grid with a non-translated title, no long description, no
154     * keywords and no icon.
155     * @param gcr the grid reader
156     * @param id a unique ID for the object
157     * @param title a short description
158     * @param style a display style (if {@code null}, a default style is created)
159     * @exception IllegalArgumentException if {@code null} is given as ID or geo object
160     */
161     public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr, String id, String title, Style style, RasterLegendData legendData) {
162     this(gcr, id, title, null, null, style, legendData, null);
163     }
164    
165     /**
166     * Creates a styled grid with a non-translated title, no long description, no
167     * keywords and no icon.
168     * @param gcr the grid reader
169     * @param id a unique ID for the object
170     * @param title a short description
171     * @param style a display style with legend information
172     * @exception IllegalArgumentException if {@code null} is given as ID or geo object
173     */
174     public StyledGridCoverageReader(AbstractGridCoverage2DReader gcr, String id, String title, StyledLayerStyle<RasterLegendData> style) {
175     this(gcr,
176     id,
177     title,
178     null,
179     null,
180     style != null ? style.getGeoObjectStyle() : null,
181     style != null ? style.getMetaData() : null,
182     null
183     );
184     }
185    
186     /**
187     * Creates a default style for a {@link GridCoverage2D}.
188     * @see GridUtil#createDefaultStyle()
189     */
190     protected Style createDefaultStyle() {
191     return GridUtil.createDefaultStyle();
192     }
193    
194     /**
195     * Returns the meta data needed for displaying a legend.
196     */
197     public RasterLegendData getLegendMetaData() {
198     return legendData;
199     }
200    
201     /**
202     * Sets the meta data needed for displaying a legend.
203     * If {@code legendData} is {@code null} an empty {@link RasterLegendData}
204     * (without gaps) is set, so {@link #getLegendMetaData()} never returns {@code null}.
205     * @param legendData legend meta data
206     */
207     public void setLegendMetaData(RasterLegendData legendData) {
208     this.legendData = (legendData != null) ? legendData : new RasterLegendData(false);
209     }
210    
211     /**
212     * Simply sets the {@link #geoObject}, {@link #crs}, {@link #envelope} and
213     * {@link #legendData} to {@code null}.
214     */
215     public void dispose() {
216     this.geoObject = null;
217     this.envelope = null;
218     this.crs = null;
219     this.legendData = null;
220     }
221    
222     /**
223     * Tests whether the geo object is disposed.
224     * @return boolean
225     */
226     public boolean isDisposed() {
227     return geoObject == null;
228     }
229    
230     /**
231     * Does nothing, because the {@link AbstractStyledLayer} bases on existing
232     * objects (in memory) which can not be uncached and reloaded.
233     */
234     public void uncache() {
235     LOGGER.warn("Uncache functionality is not supported. Object remains in memory.");
236     }
237    
238     /*
239     * (non-Javadoc)
240     * @see skrueger.geotools.StyledLayerInterface#getInfoURL()
241     */
242     public URL getInfoURL() {
243     return null;
244     }
245    
246 alfonx 1203
247 alfonx 244 /**
248     * If true, this layer will not be shown in the legend. Default = false
249     */
250     /**
251     *
252     * Killed by SK: 6. April 09: Ein Layer soll nicht generell auf
253     * verstecken/nicht verstecken gestellt werden können. Das sind
254     * Eigenschaften der Karte/MapContext, ebenso wie die Reihenfolge der Layer.
255     * Im Atlas verwaltet deshalb nun die Klasse skrueger.atlas.Map welche Layer
256     * nicht in der Legende auftauchen sollen. Meines Wissens hat keiner bisher
257     * die Funktion genutzt.
258     *
259     public boolean isHideInLegend() {
260     return false;
261     }
262     */
263    
264     }

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26