26 |
26 |
import java.awt.Graphics2D;
|
27 |
27 |
import java.awt.Image;
|
28 |
28 |
import java.awt.Point;
|
|
29 |
import java.awt.Rectangle;
|
|
30 |
import java.awt.geom.AffineTransform;
|
29 |
31 |
import java.awt.geom.Point2D;
|
30 |
32 |
import java.awt.geom.Rectangle2D;
|
31 |
33 |
import java.awt.image.BufferedImage;
|
... | ... | |
66 |
68 |
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
|
67 |
69 |
import org.gvsig.fmap.dal.exception.ReadException;
|
68 |
70 |
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
|
69 |
|
import org.gvsig.fmap.dal.raster.spi.CoverageStoreProvider;
|
70 |
71 |
import org.gvsig.fmap.dal.spi.DataManagerProviderServices;
|
71 |
72 |
import org.gvsig.fmap.geom.GeometryLocator;
|
72 |
73 |
import org.gvsig.fmap.geom.GeometryManager;
|
... | ... | |
77 |
78 |
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException;
|
78 |
79 |
import org.gvsig.fmap.mapcontext.exceptions.UnsupportedVersionLayerException;
|
79 |
80 |
import org.gvsig.fmap.mapcontext.layers.FLayer;
|
|
81 |
import org.gvsig.fmap.mapcontext.layers.Tiling;
|
80 |
82 |
import org.gvsig.fmap.mapcontext.layers.operations.ComposedLayer;
|
81 |
83 |
import org.gvsig.fmap.mapcontext.layers.operations.IHasImageLegend;
|
82 |
84 |
import org.gvsig.fmap.mapcontext.rendering.legend.ILegend;
|
... | ... | |
134 |
136 |
private static final GeometryManager geomManager = GeometryLocator.getGeometryManager();
|
135 |
137 |
private static final Logger logger = LoggerFactory.getLogger(FLyrWMS.class);
|
136 |
138 |
private boolean isPrinting = false;
|
137 |
|
private boolean mustTileDraw = true;
|
|
139 |
private boolean mustTileDraw = false;
|
138 |
140 |
private final int maxTileDrawWidth = 1023;
|
139 |
141 |
private final int maxTileDrawHeight = 1023;
|
140 |
142 |
private final int maxTilePrintWidth = 1023;
|
... | ... | |
389 |
391 |
// the Layout.
|
390 |
392 |
Envelope vpEnvelope = viewPort.getAdjustedExtent();
|
391 |
393 |
|
|
394 |
if(mustTileDraw) {
|
|
395 |
Rectangle r = new Rectangle((int) p.getX(), (int) p.getY(), viewPort.getImageWidth(), viewPort.getImageHeight());
|
|
396 |
Tiling tiles = new Tiling(maxTileDrawWidth, maxTileDrawHeight, r);
|
|
397 |
tiles.setAffineTransform((AffineTransform) viewPort.getAffineTransform().clone());
|
392 |
398 |
|
393 |
|
//if (getParameters().isSizeFixed()) {
|
394 |
|
// This condition handles those situations in which the server can
|
395 |
|
// only give static extent and resolution maps despite we need
|
396 |
|
// a specific BBOX and pixel WIDTH and HEIGHT
|
397 |
|
//try {
|
398 |
|
//visualStatus.fileNames = new String[1];
|
399 |
|
//drawFixedSize(g, viewPort, cancellable, scale);
|
400 |
|
//drawTile(g, viewPort, cancel, scale);
|
401 |
|
/*if(layerRaster != null && layerRaster[0] != null) {
|
402 |
|
dataset = layerRaster[0].getDataSource();
|
403 |
|
initializeRasterLayer(null, new IBuffer[][]{{layerRaster[0].getRender().getLastRenderBuffer()}});
|
404 |
|
getRender().setLastRenderBuffer(layerRaster[0].getRender().getLastRenderBuffer());
|
405 |
|
}*/
|
406 |
|
//} catch (LoadLayerException e) {
|
407 |
|
// throw new ReadException("Error cargando la capa.", e);
|
408 |
|
//}
|
409 |
|
|
410 |
|
// } else {
|
411 |
|
/*if(mustTileDraw) {
|
412 |
|
Rectangle r = new Rectangle((int) p.getX(), (int) p.getY(), viewPort.getImageWidth(), viewPort.getImageHeight());
|
413 |
|
Tiling tiles = new Tiling(maxTileDrawWidth, maxTileDrawHeight, r);
|
414 |
|
tiles.setAffineTransform((AffineTransform) viewPort.getAffineTransform().clone());
|
415 |
|
visualStatus.fileNames = new String[tiles.getNumTiles()];
|
416 |
|
MultiRasterDataset[][] datasets = new MultiRasterDataset[tiles.getNumRows()][tiles.getNumCols()];
|
417 |
|
IBuffer[][] buf = new IBuffer[tiles.getNumRows()][tiles.getNumCols()];
|
418 |
|
layerRaster = new FLyrRasterSE[tiles.getNumTiles()];
|
419 |
|
lastNColumns = tiles.getNumCols();
|
420 |
|
lastNRows = tiles.getNumRows();
|
421 |
|
for (int tileNr = 0; tileNr < tiles.getNumTiles(); tileNr++) {
|
422 |
|
// drawing part
|
423 |
|
try {
|
424 |
|
ViewPort vp = tiles.getTileViewPort(viewPort, tileNr);
|
425 |
|
boolean painted = drawTile(g, vp, cancel, tileNr, scale, tileNr);
|
426 |
|
if( layerRaster != null &&
|
427 |
|
layerRaster[tileNr] != null &&
|
428 |
|
painted) {
|
429 |
|
datasets[(int)(tileNr / tiles.getNumCols())][tileNr % tiles.getNumCols()] = (MultiRasterDataset)layerRaster[tileNr].getDataSource().newDataset();
|
430 |
|
buf[(int)(tileNr / tiles.getNumCols())][tileNr % tiles.getNumCols()] = layerRaster[tileNr].getRender().getLastRenderBuffer();
|
431 |
|
}
|
432 |
|
} catch (NoninvertibleTransformException e) {
|
433 |
|
e.printStackTrace();
|
434 |
|
} catch (LoadLayerException e) {
|
435 |
|
// TODO Auto-generated catch block
|
436 |
|
e.printStackTrace();
|
437 |
|
}
|
438 |
|
}
|
|
399 |
/*MultiRasterDataset[][] datasets = new MultiRasterDataset[tiles.getNumRows()][tiles.getNumCols()];
|
|
400 |
Buffer[][] buf = new Buffer[tiles.getNumRows()][tiles.getNumCols()];
|
|
401 |
layerRaster = new FLyrRasterSE[tiles.getNumTiles()];
|
|
402 |
lastNColumns = tiles.getNumCols();
|
|
403 |
lastNRows = tiles.getNumRows();
|
|
404 |
for (int tileNr = 0; tileNr < tiles.getNumTiles(); tileNr++) {
|
|
405 |
// drawing part
|
439 |
406 |
try {
|
440 |
|
if(datasets != null && datasets[0][0] != null) {
|
441 |
|
dataset = new CompositeDataset(datasets);
|
442 |
|
initializeRasterLayer(datasets, buf);
|
443 |
|
buf = null;
|
|
407 |
ViewPort vp = tiles.getTileViewPort(viewPort, tileNr);
|
|
408 |
boolean painted = drawTile(g, vp, cancel, tileNr, scale, tileNr);
|
|
409 |
if( layerRaster != null &&
|
|
410 |
layerRaster[tileNr] != null &&
|
|
411 |
painted) {
|
|
412 |
datasets[(int)(tileNr / tiles.getNumCols())][tileNr % tiles.getNumCols()] = (MultiRasterDataset)layerRaster[tileNr].getDataSource().newDataset();
|
|
413 |
buf[(int)(tileNr / tiles.getNumCols())][tileNr % tiles.getNumCols()] = layerRaster[tileNr].getRender().getLastRenderBuffer();
|
444 |
414 |
}
|
445 |
|
} catch (MosaicNotValidException e) {
|
446 |
|
throw new ReadException(
|
447 |
|
"No hay continuidad en el mosaico.", e);
|
|
415 |
} catch (NoninvertibleTransformException e) {
|
|
416 |
e.printStackTrace();
|
448 |
417 |
} catch (LoadLayerException e) {
|
449 |
|
throw new ReadException("Error inicializando la capa.",
|
450 |
|
e);
|
451 |
|
}
|
452 |
|
} else {*/
|
453 |
|
try {
|
454 |
|
drawTile(g, viewPort, cancellable, scale);
|
455 |
|
} catch (LoadLayerException e) {
|
456 |
418 |
// TODO Auto-generated catch block
|
457 |
419 |
e.printStackTrace();
|
458 |
420 |
}
|
459 |
|
//}
|
460 |
|
//}
|
|
421 |
}
|
|
422 |
try {
|
|
423 |
if(datasets != null && datasets[0][0] != null) {
|
|
424 |
dataset = new CompositeDataset(datasets);
|
|
425 |
initializeRasterLayer(datasets, buf);
|
|
426 |
buf = null;
|
|
427 |
}
|
|
428 |
} catch (MosaicNotValidException e) {
|
|
429 |
throw new ReadException(
|
|
430 |
"No hay continuidad en el mosaico.", e);
|
|
431 |
} catch (LoadLayerException e) {
|
|
432 |
throw new ReadException("Error inicializando la capa.",
|
|
433 |
e);
|
|
434 |
}*/
|
|
435 |
} else {
|
|
436 |
try {
|
|
437 |
drawTile(g, viewPort, cancellable, scale);
|
|
438 |
} catch (LoadLayerException e) {
|
|
439 |
// TODO Auto-generated catch block
|
|
440 |
e.printStackTrace();
|
|
441 |
}
|
|
442 |
}
|
|
443 |
|
461 |
444 |
}
|
462 |
445 |
disableStopped();
|
463 |
446 |
}
|
... | ... | |
933 |
916 |
case IRasterLayerActions.SAVE_COLORINTERP:
|
934 |
917 |
case IRasterLayerActions.CLIPPING:
|
935 |
918 |
case IRasterLayerActions.SAVEAS:
|
|
919 |
case IRasterLayerActions.BANDS_RGB:
|
936 |
920 |
return false;
|
937 |
921 |
case IRasterLayerActions.REMOTE_ACTIONS:
|
938 |
922 |
return true;
|
... | ... | |
1032 |
1016 |
|
1033 |
1017 |
/*
|
1034 |
1018 |
* (non-Javadoc)
|
|
1019 |
* @see org.gvsig.raster.fmap.layers.FLyrRaster#getFileFormat()
|
|
1020 |
*/
|
|
1021 |
@Override
|
|
1022 |
public String getFileFormat() {
|
|
1023 |
return "WMS";
|
|
1024 |
}
|
|
1025 |
|
|
1026 |
/*
|
|
1027 |
* (non-Javadoc)
|
1035 |
1028 |
* @see org.gvsig.raster.fmap.layers.DefaultFLyrRaster#getFileLayer()
|
1036 |
1029 |
*/
|
1037 |
1030 |
@Override
|