/[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 1203 - (show annotations)
Tue Nov 2 22:53:55 2010 UTC (14 years, 3 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 /*******************************************************************************
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. Tzeggai - 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.geometry.jts.ReferencedEnvelope;
39 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 @Override
56 public ReferencedEnvelope getReferencedEnvelope() {
57 return new ReferencedEnvelope(getEnvelope(), getCrs());
58 }
59
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
247 /**
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