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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 685 - (show annotations)
Wed Feb 10 15:04:02 2010 UTC (15 years ago) by alfonx
File size: 10318 byte(s)
copy RC2 to trunk
1 /*******************************************************************************
2 * Copyright (c) 2009 Martin O. J. Schmitz.
3 *
4 * This file is part of the SCHMITZM library - a collection of utility
5 * classes based on Java 1.6, focusing (not only) on Java Swing
6 * 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