gvsig-3d / org.gvsig.netcdf3d / trunk / org.gvsig.netcdf3d / org.gvsig.netcdf3d.lib / org.gvsig.netcdf3d.lib.impl / src / main / java / org / gvsig / netcdf3d / lib / impl / DefaultNetCDFTiledImageLayer.java @ 727
History | View | Annotate | Download (7.3 KB)
1 | 727 | fdiaz | /* gvSIG. Desktop Geographic Information System.
|
---|---|---|---|
2 | *
|
||
3 | * Copyright ? 2007-2016 gvSIG Association
|
||
4 | *
|
||
5 | * This program is free software; you can redistribute it and/or
|
||
6 | * modify it under the terms of the GNU General Public License
|
||
7 | * as published by the Free Software Foundation; either version 2
|
||
8 | * of the License, or (at your option) any later version.
|
||
9 | *
|
||
10 | * This program is distributed in the hope that it will be useful,
|
||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
13 | * GNU General Public License for more details.
|
||
14 | *
|
||
15 | * You should have received a copy of the GNU General Public License
|
||
16 | * along with this program; if not, write to the Free Software
|
||
17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||
18 | * MA 02110-1301, USA.
|
||
19 | *
|
||
20 | * For any additional information, do not hesitate to contact us
|
||
21 | * at info AT gvsig.com, or visit our website www.gvsig.com.
|
||
22 | */
|
||
23 | |||
24 | package org.gvsig.netcdf3d.lib.impl; |
||
25 | |||
26 | import gov.nasa.worldwind.WWObjectImpl; |
||
27 | import gov.nasa.worldwind.avlist.AVKey; |
||
28 | import gov.nasa.worldwind.layers.Layer; |
||
29 | import gov.nasa.worldwind.layers.TiledImageLayer; |
||
30 | import gov.nasa.worldwind.render.DrawContext; |
||
31 | |||
32 | import java.awt.Point; |
||
33 | import java.awt.event.ActionEvent; |
||
34 | import java.awt.event.ActionListener; |
||
35 | import java.beans.PropertyChangeEvent; |
||
36 | |||
37 | import javax.swing.Timer; |
||
38 | |||
39 | import org.gvsig.fmap.dal.raster.api.RasterQuery; |
||
40 | import org.gvsig.fmap.mapcontext.raster.api.RasterLayer; |
||
41 | import org.gvsig.netcdf3d.lib.api.NetCDFLoaderParameters; |
||
42 | import org.gvsig.view3d.lib.api.View3DLocator; |
||
43 | import org.gvsig.view3d.lib.api.View3DManager; |
||
44 | import org.gvsig.view3d.lib.api.exception.FactoryNotRegisteredException; |
||
45 | import org.gvsig.view3d.lib.api.exception.LoadException; |
||
46 | import org.gvsig.view3d.lib.api.loader.Loader; |
||
47 | import org.gvsig.view3d.lib.api.loader.LoaderFactory; |
||
48 | import org.gvsig.view3d.lib.api.loader.RasterLoaderParameters; |
||
49 | |||
50 | import org.slf4j.Logger; |
||
51 | import org.slf4j.LoggerFactory; |
||
52 | |||
53 | /**
|
||
54 | * @author <a href="mailto:lmarques@disid.com">Lluis Marques</a>
|
||
55 | *
|
||
56 | */
|
||
57 | public class DefaultNetCDFTiledImageLayer extends WWObjectImpl implements Layer { |
||
58 | |||
59 | private static final Logger LOG = LoggerFactory.getLogger(DefaultNetCDFTiledImageLayer.class); |
||
60 | |||
61 | private NetCDFLoaderParameters parameters;
|
||
62 | private TiledImageLayer rasterLayer;
|
||
63 | private Timer timer; |
||
64 | |||
65 | /**
|
||
66 | *
|
||
67 | * @param parameters
|
||
68 | */
|
||
69 | public DefaultNetCDFTiledImageLayer(NetCDFLoaderParameters parameters) {
|
||
70 | this.parameters = parameters;
|
||
71 | |||
72 | // Create Raster tiled image layer
|
||
73 | try {
|
||
74 | this.createRaserTiledImageLayer();
|
||
75 | } catch (FactoryNotRegisteredException | LoadException e) {
|
||
76 | LOG.error("Can not create raster tiled image layer", e);
|
||
77 | return;
|
||
78 | } |
||
79 | |||
80 | this.timer = new Timer((int)(this.parameters.getLapse() * 1000), new DefaultNetCDFTimerTask(this, parameters)); |
||
81 | this.timer.start();
|
||
82 | } |
||
83 | |||
84 | private void createRaserTiledImageLayer() |
||
85 | throws FactoryNotRegisteredException, LoadException {
|
||
86 | View3DManager manager = View3DLocator.getManager(); |
||
87 | LoaderFactory loaderFactory = null;
|
||
88 | loaderFactory = manager.getLoaderFactory(RasterLoaderParameters.NAME); |
||
89 | Loader rasterLoader = loaderFactory.createLoader(); |
||
90 | this.rasterLayer = (TiledImageLayer) rasterLoader.load(parameters);
|
||
91 | // this.rasterLayer.setForceLevelZeroLoads(true);
|
||
92 | } |
||
93 | |||
94 | /**
|
||
95 | * @param rasterQuery
|
||
96 | *
|
||
97 | */
|
||
98 | public void setBaseQuery(RasterQuery rasterQuery) { |
||
99 | RasterLayer rasterLayer = |
||
100 | (RasterLayer) this.rasterLayer.getValue(View3DManager.GVSIG_LAYER);
|
||
101 | rasterLayer.setBaseQuery(rasterQuery); |
||
102 | |||
103 | long timeMillis = System.currentTimeMillis(); |
||
104 | this.setExpiryTime(timeMillis);
|
||
105 | this.rasterLayer.setExpiryTime(timeMillis);
|
||
106 | this.propertyChange(new PropertyChangeEvent(this, AVKey.LAYER, null, this)); |
||
107 | } |
||
108 | |||
109 | @Override
|
||
110 | public void dispose() { |
||
111 | this.parameters = null; |
||
112 | this.timer.stop();
|
||
113 | this.timer = null; |
||
114 | this.rasterLayer.dispose();
|
||
115 | } |
||
116 | |||
117 | @Override
|
||
118 | public String getRestorableState() { |
||
119 | return this.rasterLayer.getRestorableState(); |
||
120 | } |
||
121 | |||
122 | @Override
|
||
123 | public void restoreState(String stateInXml) { |
||
124 | this.rasterLayer.restoreState(stateInXml);
|
||
125 | } |
||
126 | |||
127 | @Override
|
||
128 | public boolean isEnabled() { |
||
129 | return this.rasterLayer.isEnabled(); |
||
130 | } |
||
131 | |||
132 | @Override
|
||
133 | public void setEnabled(boolean enabled) { |
||
134 | this.rasterLayer.setEnabled(enabled);
|
||
135 | } |
||
136 | |||
137 | @Override
|
||
138 | public String getName() { |
||
139 | return this.rasterLayer.getName(); |
||
140 | } |
||
141 | |||
142 | @Override
|
||
143 | public void setName(String name) { |
||
144 | this.rasterLayer.setName(name);
|
||
145 | } |
||
146 | |||
147 | @Override
|
||
148 | public double getOpacity() { |
||
149 | return this.rasterLayer.getOpacity(); |
||
150 | } |
||
151 | |||
152 | @Override
|
||
153 | public void setOpacity(double opacity) { |
||
154 | this.rasterLayer.setOpacity(opacity);
|
||
155 | } |
||
156 | |||
157 | @Override
|
||
158 | public boolean isPickEnabled() { |
||
159 | return this.rasterLayer.isPickEnabled(); |
||
160 | } |
||
161 | |||
162 | @Override
|
||
163 | public void setPickEnabled(boolean isPickable) { |
||
164 | this.rasterLayer.setPickEnabled(isPickable);
|
||
165 | } |
||
166 | |||
167 | @Override
|
||
168 | public void preRender(DrawContext dc) { |
||
169 | this.rasterLayer.preRender(dc);
|
||
170 | } |
||
171 | |||
172 | @Override
|
||
173 | public void render(DrawContext dc) { |
||
174 | this.rasterLayer.render(dc);
|
||
175 | } |
||
176 | |||
177 | @Override
|
||
178 | public void pick(DrawContext dc, Point pickPoint) { |
||
179 | this.rasterLayer.pick(dc, pickPoint);
|
||
180 | } |
||
181 | |||
182 | @Override
|
||
183 | public boolean isAtMaxResolution() { |
||
184 | return this.rasterLayer.isAtMaxResolution(); |
||
185 | } |
||
186 | |||
187 | @Override
|
||
188 | public boolean isMultiResolution() { |
||
189 | return this.rasterLayer.isMultiResolution(); |
||
190 | } |
||
191 | |||
192 | @Override
|
||
193 | public double getScale() { |
||
194 | return this.rasterLayer.getScale(); |
||
195 | } |
||
196 | |||
197 | @Override
|
||
198 | public boolean isNetworkRetrievalEnabled() { |
||
199 | return this.rasterLayer.isNetworkRetrievalEnabled(); |
||
200 | } |
||
201 | |||
202 | @Override
|
||
203 | public void setNetworkRetrievalEnabled(boolean networkRetrievalEnabled) { |
||
204 | this.rasterLayer.setNetworkRetrievalEnabled(networkRetrievalEnabled);
|
||
205 | } |
||
206 | |||
207 | @Override
|
||
208 | public void setExpiryTime(long expiryTime) { |
||
209 | this.rasterLayer.setExpiryTime(expiryTime);
|
||
210 | } |
||
211 | |||
212 | @Override
|
||
213 | public long getExpiryTime() { |
||
214 | return this.rasterLayer.getExpiryTime(); |
||
215 | } |
||
216 | |||
217 | @Override
|
||
218 | public double getMinActiveAltitude() { |
||
219 | return this.rasterLayer.getMinActiveAltitude(); |
||
220 | } |
||
221 | |||
222 | @Override
|
||
223 | public void setMinActiveAltitude(double minActiveAltitude) { |
||
224 | this.rasterLayer.setMinActiveAltitude(minActiveAltitude);
|
||
225 | } |
||
226 | |||
227 | @Override
|
||
228 | public double getMaxActiveAltitude() { |
||
229 | return this.rasterLayer.getMaxActiveAltitude(); |
||
230 | } |
||
231 | |||
232 | @Override
|
||
233 | public void setMaxActiveAltitude(double maxActiveAltitude) { |
||
234 | this.rasterLayer.setMaxActiveAltitude(maxActiveAltitude);
|
||
235 | } |
||
236 | |||
237 | @Override
|
||
238 | public boolean isLayerInView(DrawContext dc) { |
||
239 | return this.rasterLayer.isLayerInView(dc); |
||
240 | } |
||
241 | |||
242 | @Override
|
||
243 | public boolean isLayerActive(DrawContext dc) { |
||
244 | return this.rasterLayer.isLayerActive(dc); |
||
245 | } |
||
246 | |||
247 | @Override
|
||
248 | public Double getMaxEffectiveAltitude(Double radius) { |
||
249 | return this.rasterLayer.getMaxEffectiveAltitude(radius); |
||
250 | } |
||
251 | |||
252 | @Override
|
||
253 | public Double getMinEffectiveAltitude(Double radius) { |
||
254 | return this.rasterLayer.getMaxEffectiveAltitude(radius); |
||
255 | } |
||
256 | |||
257 | } |