Revision 198
org.gvsig.raster.app/trunk/org.gvsig.raster.app/org.gvsig.raster.app.tools/src/main/java/org/gvsig/raster/app/extension/raster/bean/createlayer/CreateLayerPanel.java | ||
---|---|---|
60 | 60 |
} |
61 | 61 |
|
62 | 62 |
/** |
63 |
* Disables the new layer option. It is useful for remote |
|
64 |
* services |
|
65 |
*/ |
|
66 |
public void disableNewLayer() { |
|
67 |
getRadioOnlyView().setSelected(true); |
|
68 |
getRadioNewLayer().setEnabled(false); |
|
69 |
} |
|
70 |
|
|
71 |
/** |
|
63 | 72 |
* Devuelve el panel principal |
64 | 73 |
* @return |
65 | 74 |
*/ |
org.gvsig.raster.app/trunk/org.gvsig.raster.app/org.gvsig.raster.app.tools/src/main/java/org/gvsig/raster/app/extension/tool/enhanced/ui/EnhancedDialog.java | ||
---|---|---|
134 | 134 |
public CreateLayerPanel getNewOrSaveLayerPanel() { |
135 | 135 |
if (layerPanel == null) { |
136 | 136 |
layerPanel = new CreateLayerPanel(lyr); |
137 |
if(lyr.isRemote()) |
|
138 |
layerPanel.disableNewLayer(); |
|
137 | 139 |
} |
138 | 140 |
return layerPanel; |
139 | 141 |
} |
org.gvsig.raster.app/trunk/org.gvsig.raster.app/org.gvsig.raster.app.tools/src/main/java/org/gvsig/raster/app/extension/tool/filter/ui/FilterPanel.java | ||
---|---|---|
169 | 169 |
public CreateLayerPanel getNewLayerPanel() { |
170 | 170 |
if (newLayerPanel == null) { |
171 | 171 |
newLayerPanel = new CreateLayerPanel(layer); |
172 |
if(layer.isRemote()) |
|
173 |
newLayerPanel.disableNewLayer(); |
|
172 | 174 |
} |
173 | 175 |
return newLayerPanel; |
174 | 176 |
} |
org.gvsig.raster.app/trunk/org.gvsig.raster.app/org.gvsig.raster.app.wmsclient/src/main/java/org/gvsig/raster/app/extension/wmsclient/layer/FLyrWMS.java | ||
---|---|---|
28 | 28 |
import java.awt.Point; |
29 | 29 |
import java.awt.Rectangle; |
30 | 30 |
import java.awt.geom.AffineTransform; |
31 |
import java.awt.geom.NoninvertibleTransformException; |
|
31 | 32 |
import java.awt.geom.Point2D; |
32 | 33 |
import java.awt.geom.Rectangle2D; |
33 | 34 |
import java.awt.image.BufferedImage; |
... | ... | |
45 | 46 |
|
46 | 47 |
import org.cresques.cts.ICoordTrans; |
47 | 48 |
import org.cresques.cts.IProjection; |
49 |
import org.gvsig.andami.PluginServices; |
|
48 | 50 |
import org.gvsig.compat.net.ICancellable; |
49 | 51 |
import org.gvsig.fmap.dal.DALLocator; |
50 | 52 |
import org.gvsig.fmap.dal.DataStore; |
... | ... | |
82 | 84 |
import org.gvsig.fmap.mapcontext.layers.operations.ComposedLayer; |
83 | 85 |
import org.gvsig.fmap.mapcontext.layers.operations.IHasImageLegend; |
84 | 86 |
import org.gvsig.fmap.mapcontext.rendering.legend.ILegend; |
87 |
import org.gvsig.raster.app.extension.wmsclient.wmc.WebMapContextTags; |
|
88 |
import org.gvsig.raster.app.extension.wmsclient.wmc.XmlBuilder; |
|
85 | 89 |
import org.gvsig.raster.fmap.layers.DefaultFLyrRaster; |
86 | 90 |
import org.gvsig.raster.fmap.layers.IRasterLayerActions; |
87 | 91 |
import org.gvsig.raster.fmap.layers.NotAvailableStateException; |
92 |
import org.gvsig.raster.impl.datastruct.WMSLayerNode; |
|
88 | 93 |
import org.gvsig.raster.impl.provider.RemoteRasterProvider; |
89 | 94 |
import org.gvsig.raster.impl.store.DefaultRemoteRasterStore; |
90 | 95 |
import org.gvsig.raster.util.CancelTaskImpl; |
... | ... | |
136 | 141 |
private static final GeometryManager geomManager = GeometryLocator.getGeometryManager(); |
137 | 142 |
private static final Logger logger = LoggerFactory.getLogger(FLyrWMS.class); |
138 | 143 |
private boolean isPrinting = false; |
139 |
private boolean mustTileDraw = false; |
|
144 |
private boolean mustTileDraw = true; |
|
145 |
private boolean mustTilePrint = true; |
|
140 | 146 |
private final int maxTileDrawWidth = 1023; |
141 | 147 |
private final int maxTileDrawHeight = 1023; |
142 | 148 |
private final int maxTilePrintWidth = 1023; |
... | ... | |
369 | 375 |
* (non-Javadoc) |
370 | 376 |
* @see org.gvsig.raster.fmap.layers.DefaultFLyrRaster#draw(java.awt.image.BufferedImage, java.awt.Graphics2D, org.gvsig.fmap.mapcontext.ViewPort, org.gvsig.tools.task.Cancellable, double) |
371 | 377 |
*/ |
372 |
@SuppressWarnings("deprecation") |
|
373 | 378 |
public void draw(BufferedImage image, Graphics2D g, ViewPort viewPort, |
374 | 379 |
Cancellable cancel, double scale) throws ReadException { |
375 | 380 |
CancelTaskImpl cancellable = new CancelTaskImpl(cancel); |
... | ... | |
386 | 391 |
enableStopped(); |
387 | 392 |
|
388 | 393 |
if (isWithinScale(scale)) { |
389 |
Point2D p = viewPort.getOffset(); |
|
390 |
// p will be (0, 0) when drawing a view or other when painting onto |
|
391 |
// the Layout. |
|
392 |
Envelope vpEnvelope = viewPort.getAdjustedExtent(); |
|
393 | 394 |
|
394 | 395 |
if(mustTileDraw) { |
396 |
Point2D p = viewPort.getOffset(); |
|
395 | 397 |
Rectangle r = new Rectangle((int) p.getX(), (int) p.getY(), viewPort.getImageWidth(), viewPort.getImageHeight()); |
396 | 398 |
Tiling tiles = new Tiling(maxTileDrawWidth, maxTileDrawHeight, r); |
397 | 399 |
tiles.setAffineTransform((AffineTransform) viewPort.getAffineTransform().clone()); |
398 | 400 |
|
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 | 401 |
lastNColumns = tiles.getNumCols(); |
403 | 402 |
lastNRows = tiles.getNumRows(); |
404 | 403 |
for (int tileNr = 0; tileNr < tiles.getNumTiles(); tileNr++) { |
405 | 404 |
// drawing part |
406 | 405 |
try { |
407 | 406 |
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(); |
|
414 |
} |
|
415 |
} catch (NoninvertibleTransformException e) { |
|
416 |
e.printStackTrace(); |
|
407 |
drawTile(g, vp, cancellable, scale); |
|
417 | 408 |
} catch (LoadLayerException e) { |
418 |
// TODO Auto-generated catch block |
|
419 |
e.printStackTrace(); |
|
409 |
throw new ReadException(e.getMessage(), e); |
|
410 |
} catch (NoninvertibleTransformException e) { |
|
411 |
throw new ReadException(e.getMessage(), e); |
|
420 | 412 |
} |
421 | 413 |
} |
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 | 414 |
} else { |
436 | 415 |
try { |
437 | 416 |
drawTile(g, viewPort, cancellable, scale); |
438 | 417 |
} catch (LoadLayerException e) { |
439 |
// TODO Auto-generated catch block |
|
440 |
e.printStackTrace(); |
|
418 |
throw new ReadException(e.getMessage(), e); |
|
441 | 419 |
} |
442 | 420 |
} |
443 | 421 |
|
... | ... | |
452 | 430 |
* @throws ReadDriverException |
453 | 431 |
* @return true when a tile has been painted |
454 | 432 |
*/ |
455 |
private boolean drawTile(Graphics2D g, ViewPort vp, ICancellable cancel, double scale) throws LoadLayerException, ReadException { |
|
433 |
@SuppressWarnings("deprecation") |
|
434 |
private void drawTile(Graphics2D g, ViewPort vp, ICancellable cancel, double scale) throws LoadLayerException, ReadException { |
|
456 | 435 |
callCount++; |
457 | 436 |
|
458 | 437 |
// Compute the query geometry |
... | ... | |
460 | 439 |
Envelope envelope = getFullEnvelope(); |
461 | 440 |
Envelope vpEnv = vp.getAdjustedExtent(); |
462 | 441 |
if (!vpEnv.intersects(envelope)) { |
463 |
return false;
|
|
442 |
return; |
|
464 | 443 |
} |
465 | 444 |
|
466 | 445 |
// 2. Compute extent to be requested. |
... | ... | |
477 | 456 |
Dimension sz = new Dimension(wImg, hImg); |
478 | 457 |
|
479 | 458 |
if ((wImg <= 0) || (hImg <= 0)) { |
480 |
return false;
|
|
459 |
return; |
|
481 | 460 |
} |
482 | 461 |
|
483 | 462 |
try { |
... | ... | |
486 | 465 |
Rectangle2D.Double vpExtent = this.getRectable2DFromEnvelope(vpEnv); |
487 | 466 |
Rectangle2D.intersect(vpExtent, bBox, extent); |
488 | 467 |
|
489 |
Extent ex = rManager.getDataStructFactory().createExtent(vp.getAdjustedEnvelope().getMinimum(0), |
|
468 |
Extent ex = rManager.getDataStructFactory().createExtent( |
|
469 |
vp.getAdjustedEnvelope().getMinimum(0), |
|
490 | 470 |
vp.getAdjustedEnvelope().getMaximum(1), |
491 | 471 |
vp.getAdjustedEnvelope().getMaximum(0), |
492 | 472 |
vp.getAdjustedEnvelope().getMinimum(1)); |
... | ... | |
526 | 506 |
} |
527 | 507 |
} |
528 | 508 |
callCount--; |
529 |
return true;
|
|
509 |
return; |
|
530 | 510 |
} |
531 | 511 |
|
532 | 512 |
/** |
... | ... | |
536 | 516 |
*/ |
537 | 517 |
public void print(Graphics2D g, ViewPort viewPort, Cancellable cancel, double scale, PrintRequestAttributeSet properties) |
538 | 518 |
throws ReadException { |
539 |
|
|
519 |
CancelTaskImpl cancellable = new CancelTaskImpl(cancel); |
|
520 |
|
|
521 |
if (isVisible() && isWithinScale(scale)){ |
|
522 |
isPrinting = true; |
|
523 |
if (!mustTilePrint) { |
|
524 |
draw(null, g, viewPort, cancel,scale); |
|
525 |
} else { |
|
526 |
Tiling tiles = new Tiling(maxTilePrintWidth, maxTilePrintHeight, g.getClipBounds()); |
|
527 |
tiles.setAffineTransform((AffineTransform) viewPort.getAffineTransform().clone()); |
|
528 |
for (int tileNr = 0; tileNr < tiles.getNumTiles(); tileNr++) { |
|
529 |
// Parte que dibuja |
|
530 |
try { |
|
531 |
ViewPort vp = tiles.getTileViewPort(viewPort, tileNr); |
|
532 |
drawTile(g, vp, cancellable, scale); |
|
533 |
} catch (NoninvertibleTransformException e) { |
|
534 |
throw new ReadException(e.getMessage(), e); |
|
535 |
} catch (LoadLayerException e) { |
|
536 |
throw new ReadException(e.getMessage(), e); |
|
537 |
} |
|
538 |
} |
|
539 |
} |
|
540 |
isPrinting = false; |
|
541 |
} |
|
540 | 542 |
} |
541 | 543 |
|
542 | 544 |
public void _print(Graphics2D g, ViewPort viewPort, Cancellable cancel, |
... | ... | |
617 | 619 |
HashMap xmlAttrs = new HashMap(); |
618 | 620 |
|
619 | 621 |
// <Layer> |
620 |
xmlAttrs.put(WebMapContextTags.HIDDEN, !isVisible()+"");
|
|
621 |
xmlAttrs.put(WebMapContextTags.QUERYABLE, queryable+"");
|
|
622 |
xmlAttrs.put(WebMapContextTags.HIDDEN, !isVisible() + "");
|
|
623 |
xmlAttrs.put(WebMapContextTags.QUERYABLE, queryable + "");
|
|
622 | 624 |
xml.openTag(WebMapContextTags.LAYER, xmlAttrs); |
623 | 625 |
xmlAttrs.clear(); |
624 | 626 |
if (mapContextVersion.equals("1.1.0") || mapContextVersion.equals("1.0.0")) { |
625 | 627 |
// <Server> |
626 | 628 |
xmlAttrs.put(WebMapContextTags.SERVICE, WebMapContextTags.WMS); |
627 |
xmlAttrs.put(WebMapContextTags.VERSION, drv.getVersion());
|
|
628 |
xmlAttrs.put(WebMapContextTags.SERVER_TITLE, drv.getServiceTitle());
|
|
629 |
xmlAttrs.put(WebMapContextTags.VERSION, explorer.getVersion());
|
|
630 |
xmlAttrs.put(WebMapContextTags.SERVER_TITLE, explorer.getServiceTitle());
|
|
629 | 631 |
xml.openTag(WebMapContextTags.SERVER, xmlAttrs); |
630 | 632 |
xmlAttrs.clear(); |
631 | 633 |
|
632 | 634 |
// <OnlineResource> |
633 | 635 |
xmlAttrs.put(WebMapContextTags.XLINK_TYPE, "simple"); |
634 |
xmlAttrs.put(WebMapContextTags.XLINK_HREF, getHost().toString()); |
|
636 |
xmlAttrs.put(WebMapContextTags.XLINK_HREF, getParameters().getHost().toString());
|
|
635 | 637 |
xml.writeTag(WebMapContextTags.ONLINE_RESOURCE, xmlAttrs); |
636 | 638 |
xmlAttrs.clear(); |
637 | 639 |
// </OnlineResource> |
... | ... | |
665 | 667 |
|
666 | 668 |
// <FormatList> |
667 | 669 |
xml.openTag(WebMapContextTags.FORMAT_LIST); |
668 |
strings = (String[]) drv.getFormats().toArray(new String[0]);
|
|
670 |
strings = (String[]) explorer.getFormats().toArray(new String[0]);
|
|
669 | 671 |
for (int j = 0; j < strings.length; j++) { |
670 | 672 |
// <Format> |
671 | 673 |
String str = strings[j].trim(); |
672 |
if (str.equals(getFormat())) { |
|
674 |
if (str.equals(explorer.getFormat())) {
|
|
673 | 675 |
xml.writeTag(WebMapContextTags.FORMAT, str, WebMapContextTags.CURRENT, "1"); |
674 | 676 |
} else { |
675 | 677 |
xml.writeTag(WebMapContextTags.FORMAT, str); |
... | ... | |
721 | 723 |
|
722 | 724 |
// <Title> |
723 | 725 |
xml.writeTag(WebMapContextTags.TITLE, "default"); |
724 |
// </Title> |
|
725 |
|
|
726 |
// // <LegendURL width="180" format="image/gif" height="50"> |
|
727 |
// xmlAttrs.put(WebMapContextTags.WIDTH, "0"); |
|
728 |
// xmlAttrs.put(WebMapContextTags.HEIGHT, "0"); |
|
729 |
// xmlAttrs.put(WebMapContextTags.FORMAT.toLowerCase(), "image/gif"); |
|
730 |
// xml.openTag(WebMapContextTags.LEGEND_URL, xmlAttrs); |
|
731 |
// xmlAttrs.clear(); |
|
732 |
// // <OnlineResource xlink:type="simple" xlink:href="http://globe.digitalearth.gov/globe/en/icons/colorbars/NATIONAL.gif"/> |
|
733 |
// xmlAttrs.put(WebMapContextTags.XLINK_TYPE, "simple"); |
|
734 |
// xmlAttrs.put(WebMapContextTags.XLINK_HREF, "http://globe.digitalearth.gov/globe/en/icons/colorbars/NATIONAL.gif"); |
|
735 |
// xml.writeTag(WebMapContextTags.ONLINE_RESOURCE, xmlAttrs); |
|
736 |
// // </OnlineResource> |
|
737 |
// // </LegendURL> |
|
738 |
// xml.closeTag(); |
|
739 |
// </Style> |
|
740 | 726 |
xml.closeTag(); |
741 | 727 |
} |
742 | 728 |
// </StyleList> |
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.api/src/main/java/org/gvsig/fmap/dal/coverage/explorer/WMSServerExplorer.java | ||
---|---|---|
125 | 125 |
public Rectangle2D getBoundingBox(String[] layerNames, String srs); |
126 | 126 |
|
127 | 127 |
public boolean isQueryable(); |
128 |
|
|
129 |
/** |
|
130 |
* @return The title of the service offered by the WMS server. |
|
131 |
*/ |
|
132 |
public String getServiceTitle(); |
|
128 | 133 |
|
129 | 134 |
} |
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.io/org.gvsig.raster.io.base/src/main/java/org/gvsig/fmap/dal/coverage/dataset/io/server/WMSServerExplorerImpl.java | ||
---|---|---|
302 | 302 |
public String getTitle() { |
303 | 303 |
return null; |
304 | 304 |
} |
305 |
|
|
306 |
/** |
|
307 |
* @return The title of the service offered by the WMS server. |
|
308 |
*/ |
|
309 |
public String getServiceTitle() { |
|
310 |
return connector.getServiceTitle(); |
|
311 |
} |
|
305 | 312 |
|
306 | 313 |
public DataServerExplorerProviderServices getServerExplorerProviderServices() { |
307 | 314 |
// TODO Auto-generated method stub |
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.io/org.gvsig.raster.io.base/src/main/java/org/gvsig/fmap/dal/coverage/dataset/io/wms/WMSConnector.java | ||
---|---|---|
321 | 321 |
public String getHost(){ |
322 | 322 |
return client.getHost(); |
323 | 323 |
} |
324 |
|
|
324 | 325 |
} |
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.io/org.gvsig.raster.io.base/src/main/java/org/gvsig/fmap/dal/coverage/dataset/io/wms/WMSDriver.java | ||
---|---|---|
367 | 367 |
|
368 | 368 |
/** |
369 | 369 |
* When the remote layer has fixed size this method downloads the file and return its reference. |
370 |
* File layer has in the long side FIXED_SIZE pixels and the bounding box is complete. |
|
370 |
* File layer has in the long side FIXED_SIZE pixels and the bounding box is complete. This file could be |
|
371 |
* useful to build an histogram or calculate statistics. This represents a sample of data. |
|
371 | 372 |
* @return |
372 | 373 |
* @throws RasterDriverException |
373 | 374 |
*/ |
... | ... | |
376 | 377 |
return fileLayerPixelSize; |
377 | 378 |
|
378 | 379 |
WMSStoreParametersImpl p = (WMSStoreParametersImpl)parameters; |
379 |
if(p.isSizeFixed()) { |
|
380 |
Extent e = getExtent(); |
|
381 |
Rectangle2D bBox = new Rectangle2D.Double(e.getULX(), e.getULY(), e.width(), e.height()); |
|
382 |
WMSStatus wmsStatus = loadWMSStatus(bBox); |
|
380 |
Extent e = getExtent(); |
|
381 |
Rectangle2D bBox = new Rectangle2D.Double(e.getULX(), e.getLRY(), e.width(), e.height()); |
|
382 |
WMSStatus wmsStatus = loadWMSStatus(bBox); |
|
383 |
|
|
384 |
if(!p.isSizeFixed()) { |
|
383 | 385 |
int w = 0; |
384 | 386 |
int h = 0; |
385 | 387 |
if(e.width() > e.height()) { |
... | ... | |
389 | 391 |
h = FIXED_SIZE; |
390 | 392 |
w = (int)((e.width() * FIXED_SIZE) / e.height()); |
391 | 393 |
} |
392 |
|
|
394 |
wmsStatus.setWidth(w); |
|
395 |
wmsStatus.setHeight(h); |
|
393 | 396 |
fileLayerPixelSize = downloadFile(wmsStatus, e.getULX(), e.getULY(), e.getLRX(), e.getLRY(), w, h); |
397 |
} else { |
|
398 |
fileLayerPixelSize = downloadFile(wmsStatus, e.getULX(), e.getULY(), e.getLRX(), e.getLRY(), |
|
399 |
p.getFixedSize().width, p.getFixedSize().height); |
|
394 | 400 |
} |
395 |
return null;
|
|
401 |
return fileLayerPixelSize;
|
|
396 | 402 |
} |
397 | 403 |
|
398 |
/* |
|
399 |
* (non-Javadoc) |
|
400 |
* @see org.gvsig.raster.impl.provider.DefaultRasterProvider#readBlock(int, int) |
|
404 |
/** |
|
405 |
* Reads a complete block of data and returns an tridimensional array of the right type. This function is useful |
|
406 |
* to read a file very fast without setting a view. In a WMS service when the size is fixed then it will read the |
|
407 |
* entire image but when the source hasn't pixel size it will read a sample of data. This set of data will have |
|
408 |
* the size defined in FIXED_SIZE. |
|
409 |
* |
|
410 |
* @param pos Posici?n donde se empieza a leer |
|
411 |
* @param blockHeight Altura m?xima del bloque leido |
|
412 |
* @return Object que es un array tridimendional del tipo de datos del raster. (Bandas X Filas X Columnas) |
|
413 |
* @throws InvalidSetViewException |
|
414 |
* @throws FileNotOpenException |
|
415 |
* @throws RasterDriverException |
|
401 | 416 |
*/ |
402 | 417 |
public Object readBlock(int pos, int blockHeight) |
403 |
throws InvalidSetViewException, FileNotOpenException, RasterDriverException, ProcessInterruptedException {
|
|
418 |
throws InvalidSetViewException, FileNotOpenException, RasterDriverException, ProcessInterruptedException { |
|
404 | 419 |
WMSStoreParametersImpl p = (WMSStoreParametersImpl)parameters; |
405 |
if(p.isSizeFixed()) { |
|
406 |
File lastFile = getFileLayer(); |
|
407 |
BandList bandList = new BandListImpl(); |
|
408 |
for (int i = 0; i < 3; i++) { |
|
409 |
try { |
|
410 |
bandList.addBand(new DatasetBandImpl(lastFile.getPath(), pos, Buffer.TYPE_BYTE), pos); |
|
411 |
} catch (BandNotFoundInListException e1) { |
|
412 |
} |
|
413 |
} |
|
414 |
bandList.setDrawableBands(new int[]{0, 1, 2}); |
|
415 |
|
|
420 |
//if(p.isSizeFixed()) { |
|
421 |
File lastFile = getFileLayer(); |
|
422 |
BandList bandList = new BandListImpl(); |
|
423 |
for (int i = 0; i < 3; i++) { |
|
416 | 424 |
try { |
417 |
GdalDriver driver = new GdalDriver(lastFile.getPath()); |
|
418 |
return driver.readBlock(pos, blockHeight); |
|
419 |
} catch (NotSupportedExtensionException exc) { |
|
420 |
throw new RasterDriverException("Error building GdalDriver", exc); |
|
425 |
bandList.addBand(new DatasetBandImpl(lastFile.getPath(), pos, Buffer.TYPE_BYTE), pos); |
|
426 |
} catch (BandNotFoundInListException e1) { |
|
421 | 427 |
} |
422 | 428 |
} |
423 |
return null; |
|
429 |
bandList.setDrawableBands(new int[]{0, 1, 2}); |
|
430 |
|
|
431 |
try { |
|
432 |
GdalDriver driver = new GdalDriver(lastFile.getPath()); |
|
433 |
return driver.readBlock(pos, blockHeight); |
|
434 |
} catch (NotSupportedExtensionException exc) { |
|
435 |
throw new RasterDriverException("Error building GdalDriver", exc); |
|
436 |
} |
|
437 |
/*} else { |
|
438 |
getFileLayer(); |
|
439 |
} |
|
440 |
return null;*/ |
|
424 | 441 |
} |
425 | 442 |
|
426 | 443 |
/* |
... | ... | |
500 | 517 |
} catch (WMSException e) { |
501 | 518 |
throw new RasterDriverException(e.getMessage(), e); |
502 | 519 |
} |
520 |
|
|
521 |
if(lastRequest == null) |
|
522 |
return null; |
|
523 |
|
|
503 | 524 |
String nameWorldFile = getWorldFile(lastRequest.getPath()); |
504 | 525 |
try { |
505 | 526 |
if(p.isSizeFixed()) { |
Also available in: Unified diff