Revision 461 2.1/trunk/org.gvsig.view3d/org.gvsig.view3d.swing/org.gvsig.view3d.swing.impl/src/main/java/org/gvsig/view3d/swing/impl/data/RasterTiledImageLayer.java
RasterTiledImageLayer.java | ||
---|---|---|
27 | 27 |
import gov.nasa.worldwind.avlist.AVKey; |
28 | 28 |
import gov.nasa.worldwind.avlist.AVList; |
29 | 29 |
import gov.nasa.worldwind.data.RasterServer; |
30 |
import gov.nasa.worldwind.geom.Angle; |
|
31 |
import gov.nasa.worldwind.geom.Extent; |
|
32 |
import gov.nasa.worldwind.geom.Sector; |
|
30 | 33 |
import gov.nasa.worldwind.layers.BasicTiledImageLayer; |
34 |
import gov.nasa.worldwind.layers.TextureTile; |
|
35 |
import gov.nasa.worldwind.render.DrawContext; |
|
31 | 36 |
import gov.nasa.worldwind.retrieve.RetrievalPostProcessor; |
32 | 37 |
import gov.nasa.worldwind.retrieve.Retriever; |
33 | 38 |
import gov.nasa.worldwind.retrieve.RetrieverFactory; |
39 |
import gov.nasa.worldwind.util.Logging; |
|
34 | 40 |
import gov.nasa.worldwind.util.WWUtil; |
35 | 41 |
|
36 | 42 |
import org.slf4j.Logger; |
37 | 43 |
import org.slf4j.LoggerFactory; |
38 | 44 |
import org.w3c.dom.Element; |
39 |
|
|
40 | 45 |
import org.gvsig.fmap.mapcontext.MapContext; |
41 | 46 |
import org.gvsig.fmap.mapcontext.layers.FLayer; |
42 | 47 |
import org.gvsig.view3d.swing.impl.DefaultMapControl3D; |
... | ... | |
153 | 158 |
this.setValue(AVKey.RETRIEVER_FACTORY_LOCAL, retrieverFactory); |
154 | 159 |
|
155 | 160 |
} |
161 |
|
|
162 |
protected boolean isTileVisible(DrawContext dc, TextureTile tile) { |
|
163 |
|
|
164 |
if(tile.getSector().isWithinLatLonLimits()){ |
|
165 |
return tile.getExtent(dc).intersects( |
|
166 |
dc.getView().getFrustumInModelCoordinates()) |
|
167 |
&& (dc.getVisibleSector() == null || dc.getVisibleSector() |
|
168 |
.intersects(tile.getSector())); |
|
169 |
} else { |
|
170 |
|
|
171 |
LOG.warn( |
|
172 |
"Tile sector is out of range Latitude {} {} Longitude {} {}. Trying to adjust sector", |
|
173 |
new Object[] { tile.getSector().getMinLatitude(), |
|
174 |
tile.getSector().getMaxLatitude(), |
|
175 |
tile.getSector().getMinLongitude(), |
|
176 |
tile.getSector().getMaxLongitude() }); |
|
177 |
|
|
178 |
// Try to fix extend. This is necessary to avoid problems getting if |
|
179 |
// some tile is visible or not when the tile has corrupt sector like |
|
180 |
// ~180.0000001 or -90.000000004561 |
|
181 |
Extent extend = this.fixExtend(tile, dc); |
|
182 |
return extend.intersects(dc.getView() |
|
183 |
.getFrustumInModelCoordinates()) |
|
184 |
&& (dc.getVisibleSector() == null || dc.getVisibleSector() |
|
185 |
.intersects(tile.getSector())); |
|
186 |
} |
|
187 |
} |
|
188 |
|
|
189 |
private Extent fixExtend(TextureTile tile, DrawContext dc) { |
|
190 |
|
|
191 |
if (dc == null) { |
|
192 |
String msg = Logging.getMessage("nullValue.DrawContextIsNull"); |
|
193 |
Logging.logger().severe(msg); |
|
194 |
throw new IllegalArgumentException(msg); |
|
195 |
} |
|
196 |
|
|
197 |
if ( tile.getSector().isWithinLatLonLimits()){ |
|
198 |
return Sector.computeBoundingBox(dc.getGlobe(), |
|
199 |
dc.getVerticalExaggeration(), tile.getSector()); |
|
200 |
} else { |
|
201 |
|
|
202 |
double[] degreesArray = tile.getSector().asDegreesArray(); |
|
203 |
|
|
204 |
double minLatitude = |
|
205 |
degreesArray[0] < Angle.NEG90.degrees ? Angle.NEG90.degrees |
|
206 |
: degreesArray[0]; |
|
207 |
double maxLatitude = |
|
208 |
degreesArray[1] > Angle.POS90.degrees ? Angle.POS90.degrees |
|
209 |
: degreesArray[1]; |
|
210 |
double minLongitude = |
|
211 |
degreesArray[2] < Angle.NEG180.degrees ? Angle.NEG180.degrees |
|
212 |
: degreesArray[2]; |
|
213 |
double maxLongitude = |
|
214 |
degreesArray[3] > Angle.POS180.degrees ? Angle.POS180.degrees |
|
215 |
: degreesArray[3]; |
|
216 |
|
|
217 |
Sector adjustedSector = |
|
218 |
new Sector(Angle.fromDegrees(minLatitude), |
|
219 |
Angle.fromDegrees(maxLatitude), |
|
220 |
Angle.fromDegrees(minLongitude), |
|
221 |
Angle.fromDegrees(maxLongitude)); |
|
222 |
|
|
223 |
return Sector.computeBoundingBox(dc.getGlobe(), |
|
224 |
dc.getVerticalExaggeration(), adjustedSector); |
|
225 |
} |
|
226 |
} |
|
156 | 227 |
} |
Also available in: Unified diff