Revision 387 2.1/trunk/org.gvsig.gvsig3d/org.gvsig.gvsig3d.lib/org.gvsig.gvsig3d.lib.impl/src/main/java/org/gvsig/gvsig3d/impl/map3d/MapContext3DImpl.java
MapContext3DImpl.java | ||
---|---|---|
48 | 48 |
import java.util.ArrayList; |
49 | 49 |
import java.util.Hashtable; |
50 | 50 |
import java.util.Vector; |
51 |
|
|
51 | 52 |
import org.cresques.cts.IProjection; |
52 | 53 |
import org.gvsig.fmap.dal.DataStore; |
53 | 54 |
import org.gvsig.fmap.dal.coverage.RasterLibrary; |
... | ... | |
99 | 100 |
import org.gvsig.fmap.mapcontext.rendering.legend.events.listeners.LegendListener; |
100 | 101 |
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol; |
101 | 102 |
import org.gvsig.gvsig3d.impl.legend3d.ExtrusionLegend; |
102 |
import org.gvsig.gvsig3d.impl.symbology3d.Symbol3DFactory; |
|
103 | 103 |
import org.gvsig.gvsig3d.impl.symbology3d.extrusion.impl.ExtrusionPolygonSymbol; |
104 | 104 |
import org.gvsig.gvsig3d.impl.symbology3d.fill.impl.SimpleFill3DSymbol; |
105 |
import org.gvsig.gvsig3d.impl.symbology3d.marker.impl.SimpleMarker3DSymbol; |
|
106 | 105 |
import org.gvsig.gvsig3d.map3d.Layer3DProps; |
107 | 106 |
import org.gvsig.gvsig3d.map3d.MapContext3D; |
108 | 107 |
import org.gvsig.gvsig3d.map3d.layers.FLayers3D; |
109 | 108 |
import org.gvsig.gvsig3d.symbology3d.I3DSymbol; |
110 |
import org.gvsig.gvsig3d.symbology3d.marker.ISimpleMarker3DSymbol; |
|
111 | 109 |
import org.gvsig.osgvp.core.osg.Group; |
112 | 110 |
import org.gvsig.osgvp.core.osg.Image; |
113 | 111 |
import org.gvsig.osgvp.core.osg.Matrix; |
... | ... | |
120 | 118 |
import org.gvsig.osgvp.exceptions.node.NodeException; |
121 | 119 |
import org.gvsig.osgvp.manipulator.BasicInputHandler; |
122 | 120 |
import org.gvsig.osgvp.manipulator.EditionManager; |
123 |
import org.gvsig.osgvp.symbology.ISymbol3D; |
|
124 | 121 |
import org.gvsig.osgvp.terrain.Extent; |
125 | 122 |
import org.gvsig.osgvp.terrain.HeightfieldLayer; |
126 | 123 |
import org.gvsig.osgvp.terrain.JavaDataDriver; |
... | ... | |
143 | 140 |
import org.gvsig.raster.cache.tile.TileCacheManager; |
144 | 141 |
import org.gvsig.raster.cache.tile.provider.CacheStruct; |
145 | 142 |
import org.gvsig.raster.fmap.layers.DefaultFLyrRaster; |
143 |
import org.gvsig.raster.fmap.layers.FLyrRaster; |
|
146 | 144 |
import org.gvsig.raster.impl.grid.GridImpl; |
147 | 145 |
import org.gvsig.raster.impl.provider.DefaultRasterProvider; |
148 | 146 |
import org.gvsig.symbology.fmap.mapcontext.rendering.legend.impl.AbstractIntervalLegend; |
149 | 147 |
import org.gvsig.symbology.fmap.mapcontext.rendering.legend.impl.VectorialUniqueValueLegend; |
150 |
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.fill.IFillSymbol; |
|
151 |
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.line.ILineSymbol; |
|
152 | 148 |
import org.gvsig.tools.ToolsLocator; |
153 | 149 |
import org.gvsig.tools.dynobject.DynStruct; |
154 | 150 |
import org.gvsig.tools.dynobject.exception.DynMethodException; |
... | ... | |
427 | 423 |
// Create a 2D Legend for jess |
428 | 424 |
if (((FLyrVect) (layer)).getLegend().getDefaultSymbol() instanceof I3DSymbol) |
429 | 425 |
try { |
430 |
// ((FLyrVect) layer).setLegend((IVectorLegend) MapContextLocator.getMapContextManager().getLegend(((FLyrVect) layer).getDataStore(), |
|
431 |
// MapContextLocator.getMapContextManager().getDefaultSymbologyDomain())); |
|
432 |
((FLyrVect) layer).setLegend((IVectorLegend) MapContextLocator.getMapContextManager().getLegend(((FLyrVect) layer).getDataStore())); |
|
426 |
// ((FLyrVect) layer).setLegend((IVectorLegend) |
|
427 |
// MapContextLocator.getMapContextManager().getLegend(((FLyrVect) |
|
428 |
// layer).getDataStore(), |
|
429 |
// MapContextLocator.getMapContextManager().getDefaultSymbologyDomain())); |
|
430 |
((FLyrVect) layer).setLegend((IVectorLegend) MapContextLocator |
|
431 |
.getMapContextManager().getLegend( |
|
432 |
((FLyrVect) layer).getDataStore())); |
|
433 | 433 |
} |
434 | 434 |
catch (LegendLayerException e) { |
435 | 435 |
e.printStackTrace(); |
... | ... | |
452 | 452 |
if (((FLyrVect) layer).getLegend() instanceof ISingleSymbolLegend) |
453 | 453 |
if (!(((FLyrVect) layer).getLegend().getDefaultSymbol() instanceof I3DSymbol)) { |
454 | 454 |
try { |
455 |
// ((FLyrVect) layer).setLegend((IVectorLegend) MapContextLocator
|
|
456 |
// .getMapContextManager().getLegend(
|
|
457 |
// ((FLyrVect) layer).getDataStore(),
|
|
458 |
// "project.document.view3d"));
|
|
455 |
// ((FLyrVect) layer).setLegend((IVectorLegend) MapContextLocator
|
|
456 |
// .getMapContextManager().getLegend(
|
|
457 |
// ((FLyrVect) layer).getDataStore(),
|
|
458 |
// "project.document.view3d"));
|
|
459 | 459 |
((FLyrVect) layer).setLegend((IVectorLegend) MapContextLocator |
460 | 460 |
.getMapContextManager().getLegend( |
461 | 461 |
((FLyrVect) layer).getDataStore())); |
... | ... | |
711 | 711 |
// persistence to |
712 | 712 |
// work |
713 | 713 |
((DefaultFLyrRaster) layer).init(); |
714 |
props3D.setType(Layer3DProps.layer3DImage); |
|
714 |
// props3D.setType(Layer3DProps.layer3DImage);
|
|
715 | 715 |
} |
716 | 716 |
catch (LoadLayerException e) { |
717 | 717 |
// TODO Auto-generated catch block |
... | ... | |
1129 | 1129 |
} |
1130 | 1130 |
catch (RasterDriverException e) { |
1131 | 1131 |
// System.out.println("QueryArray failed"); |
1132 |
// e.printStackTrace();
|
|
1132 |
e.printStackTrace(); |
|
1133 | 1133 |
} |
1134 | 1134 |
catch (InvalidSetViewException e) { |
1135 | 1135 |
// TODO Auto-generated catch block |
1136 | 1136 |
e.printStackTrace(); |
1137 | 1137 |
} |
1138 | 1138 |
catch (NullPointerException e) { |
1139 |
// System.out.println("NullPointer exception");
|
|
1139 |
e.printStackTrace();
|
|
1140 | 1140 |
} |
1141 | 1141 |
|
1142 | 1142 |
} |
... | ... | |
1341 | 1341 |
if (legend instanceof AbstractIntervalLegend) |
1342 | 1342 |
symbolList = ((AbstractIntervalLegend) (legend)).getSymbols(); |
1343 | 1343 |
if (legend instanceof VectorialUniqueValueLegend) { |
1344 |
// ((VectorialUniqueValueLegend) (legend))
|
|
1345 |
// .setDomain("project.document.view3d");
|
|
1344 |
// ((VectorialUniqueValueLegend) (legend))
|
|
1345 |
// .setDomain("project.document.view3d");
|
|
1346 | 1346 |
symbolList = ((VectorialUniqueValueLegend) (legend)).getSymbols(); |
1347 | 1347 |
} |
1348 | 1348 |
return symbolList; |
... | ... | |
1389 | 1389 |
|
1390 | 1390 |
query.setTileParameters(rde.getTileLevel(), rde.getTileX(), |
1391 | 1391 |
rde.getTileY(), extent, null); |
1392 |
query.setAreaOfInterest(); |
|
1392 | 1393 |
|
1393 | 1394 |
try { |
1394 | 1395 |
Object[] result = rLayer.getDataStore().queryArray(query); |
... | ... | |
1406 | 1407 |
|
1407 | 1408 |
} |
1408 | 1409 |
|
1409 |
float[] data = new float[(rBuff.getWidth() * rBuff.getHeight()) / 64];
|
|
1410 |
float[] data = new float[(rBuff.getWidth() * rBuff.getHeight())]; |
|
1410 | 1411 |
|
1411 | 1412 |
int pixelFormat = convertPixelFormat(numBands); |
1412 | 1413 |
|
... | ... | |
1415 | 1416 |
|
1416 | 1417 |
int k = getLayer3DProps(rLayer).getElevationBand(); |
1417 | 1418 |
|
1418 |
for (int i = rBuff.getWidth() - 8; i >= 0; i = i - 8) {
|
|
1419 |
for (int i = rBuff.getHeight() - 1; i >= 0; i = i - 1) {
|
|
1419 | 1420 |
// Vertical Flip needed |
1420 |
for (int j = 0; j < rBuff.getHeight(); j = j + 8) {
|
|
1421 |
for (int j = 0; j < rBuff.getWidth(); j = j + 1) {
|
|
1421 | 1422 |
|
1422 | 1423 |
switch (rBuff.getDataType()) { |
1423 | 1424 |
case Buffer.TYPE_BYTE: |
... | ... | |
1447 | 1448 |
} |
1448 | 1449 |
|
1449 | 1450 |
} |
1450 |
ude.setHeightfieldData(data, rBuff.getWidth() / 8, |
|
1451 |
rBuff.getHeight() / 8); |
|
1451 |
ude.setHeightfieldData(data, rBuff.getWidth(), rBuff.getHeight()); |
|
1452 | 1452 |
|
1453 | 1453 |
data = null; |
1454 | 1454 |
result = null; |
... | ... | |
1467 | 1467 |
} |
1468 | 1468 |
catch (NullPointerException e) { |
1469 | 1469 |
// ude.setFailData(); |
1470 |
// System.out.println("Problem getting the tile");
|
|
1470 |
e.printStackTrace();
|
|
1471 | 1471 |
} |
1472 | 1472 |
|
1473 | 1473 |
} |
1474 | 1474 |
// No cache |
1475 | 1475 |
else { |
1476 |
ude.setHeightfieldData(getLayerDrawImage(layer, envelope)); |
|
1476 |
// ude.setHeightfieldData(getLayerDrawImage(layer, envelope)); |
|
1477 |
|
|
1478 |
if (layer instanceof FLyrRaster) { |
|
1479 |
String path = ((FLyrRaster) layer).getURI(); |
|
1480 |
ude.setHeightfieldData(path, "gdal"); |
|
1481 |
} |
|
1482 |
|
|
1477 | 1483 |
} |
1478 | 1484 |
|
1479 | 1485 |
} |
... | ... | |
1773 | 1779 |
private BufferedImage getLayerDrawImage(FLayer layer, Envelope envelope) { |
1774 | 1780 |
|
1775 | 1781 |
int size = 256; |
1776 |
BufferedImage image = new BufferedImage(size, size, |
|
1777 |
BufferedImage.TYPE_4BYTE_ABGR); |
|
1782 |
Layer3DProps props = this.getLayer3DProps(layer); |
|
1783 |
int type = props.getType(); |
|
1784 |
BufferedImage image = null; |
|
1778 | 1785 |
|
1786 |
if (type == Layer3DProps.layer3DImage) { |
|
1787 |
image = new BufferedImage(size, size, BufferedImage.TYPE_4BYTE_ABGR); |
|
1788 |
} |
|
1789 |
// else if (type == Layer3DProps.layer3DElevation) { |
|
1790 |
// image = createFloatBufferedImage(size); |
|
1791 |
// } |
|
1792 |
|
|
1779 | 1793 |
ViewPort vp = new ViewPort(_viewProjection); |
1780 | 1794 |
vp.setEnvelope(envelope); // the real extent of the tile |
1781 | 1795 |
|
... | ... | |
1803 | 1817 |
|
1804 | 1818 |
} |
1805 | 1819 |
|
1820 |
// private BufferedImage createFloatBufferedImage(int size) { |
|
1821 |
// int nbands = 1; |
|
1822 |
// DataBufferFloat dbd = new DataBufferFloat(size * size * nbands); |
|
1823 |
// |
|
1824 |
// SampleModel sm = new PixelInterleavedSampleModel(DataBuffer.TYPE_FLOAT, |
|
1825 |
// size, size, nbands, size * nbands, new int[] { 0 }); |
|
1826 |
// |
|
1827 |
// WritableRaster wr = WritableRaster.createWritableRaster(sm, dbd, null); |
|
1828 |
// |
|
1829 |
// ColorModel cm = new ComponentColorModel( |
|
1830 |
// ColorSpace.getInstance(ColorSpace.CS_GRAY), false, false, |
|
1831 |
// ColorModel.TRANSLUCENT, DataBuffer.TYPE_FLOAT); |
|
1832 |
// |
|
1833 |
// BufferedImage bi = new BufferedImage(cm, wr, true, |
|
1834 |
// new Hashtable<Object, Object>()); |
|
1835 |
// return bi; |
|
1836 |
// } |
|
1837 |
|
|
1806 | 1838 |
public void nameChanged(LayerEvent e) { |
1807 | 1839 |
// System.out.println("Name change"); |
1808 | 1840 |
|
Also available in: Unified diff