36 |
36 |
import org.gvsig.fmap.dal.spi.DataStoreProviderServices;
|
37 |
37 |
import org.gvsig.metadata.MetadataLocator;
|
38 |
38 |
import org.gvsig.raster.cache.tile.provider.TileServer;
|
|
39 |
import org.gvsig.raster.impl.buffer.DefaultRasterQuery;
|
39 |
40 |
import org.gvsig.raster.impl.buffer.SpiRasterQuery;
|
40 |
41 |
import org.gvsig.raster.impl.datastruct.BandListImpl;
|
41 |
42 |
import org.gvsig.raster.impl.datastruct.DatasetBandImpl;
|
... | ... | |
653 |
654 |
AbstractRasterProvider driver = DefaultProviderServices.loadProvider(new File(lastRequest.getPath()));
|
654 |
655 |
DefaultRasterStore store = new DefaultRasterStore();
|
655 |
656 |
store.setProvider(driver);
|
|
657 |
query.createBuffer(store);
|
656 |
658 |
store.query((RasterQuery)query);
|
657 |
659 |
} catch (ProviderNotRegisteredException e) {
|
658 |
660 |
throw new RasterDriverException("Error building GdalDriver", e);
|
... | ... | |
664 |
666 |
|
665 |
667 |
}
|
666 |
668 |
|
667 |
|
/*public void getWindow(Extent ex, int bufWidth, int bufHeight,
|
668 |
|
BandList bandList, TileListener listener, TaskStatus status) throws ProcessInterruptedException, RasterDriverException {
|
669 |
|
|
670 |
|
Buffer raster = DefaultRasterManager.getInstance().createBuffer(getDataType()[0], bufWidth, bufHeight, 3, true);
|
671 |
|
getWindow(ex, bufWidth, bufHeight, bandList, raster, true, null);
|
672 |
|
raster.setDataExtent(ex.toRectangle2D());
|
673 |
|
|
674 |
|
TileCacheManager m = TileCacheLocator.getManager();
|
675 |
|
org.gvsig.raster.cache.tile.Tile t = m.createTile(-1, 0, 0);
|
676 |
|
t.setData(new Object[]{raster});
|
677 |
|
t.setUl(new Point2D.Double(ex.getULX(), ex.getULY()));
|
678 |
|
t.setLr(new Point2D.Double(ex.getLRX(), ex.getLRY()));
|
679 |
|
t.setDownloaderParams("AffineTransform", getAffineTransform());
|
680 |
|
t.setDownloaderParams("Tiling", new Boolean(false));
|
681 |
|
try {
|
682 |
|
listener.tileReady(t);
|
683 |
|
} catch (TileGettingException e) {
|
684 |
|
throw new RasterDriverException("Error throwing a tile", e);
|
685 |
|
}
|
686 |
|
|
687 |
|
//listener.nextBuffer(raster, null, new ExtentImpl(minX, minY, maxX, maxY), getAffineTransform(), null, false);
|
688 |
|
listener.endReading();
|
689 |
|
|
690 |
|
}*/
|
691 |
|
|
692 |
|
/*public Buffer getWindow(Extent ex, BandList bandList, Buffer rasterBuf, TaskStatus status)
|
693 |
|
throws ProcessInterruptedException, RasterDriverException {
|
694 |
|
Rectangle2D bBox = ex.toRectangle2D();
|
695 |
|
WCSStatus wcsStatus = loadWCSStatus(bBox);
|
696 |
|
|
697 |
|
lastRequest = downloadFile(wcsStatus, ex.getULX(), ex.getULY(), ex.getLRX(), ex.getLRY(), rasterBuf.getWidth(), rasterBuf.getHeight());
|
698 |
|
|
699 |
|
if (lastRequest == null) {
|
700 |
|
return rasterBuf;
|
701 |
|
}
|
702 |
|
|
703 |
|
try {
|
704 |
|
AbstractRasterProvider driver = DefaultProviderServices.loadProvider(new File(lastRequest.getPath()));
|
705 |
|
|
706 |
|
//El nombre de fichero que ha puesto en el bandList es el del servidor y no el del fichero en disco
|
707 |
|
String serverName = bandList.getBand(0).getFileName();
|
708 |
|
for (int i = 0; i < bandList.getBandCount(); i++) {
|
709 |
|
bandList.getBand(i).setFileName(lastRequest.getPath());
|
710 |
|
}
|
711 |
|
|
712 |
|
DefaultRasterQuery q = (DefaultRasterQuery)RasterLocator.getManager().createQuery();
|
713 |
|
q.setAreaOfInterest(ex);
|
714 |
|
q.setBandList(bandList);
|
715 |
|
q.setBuffer(rasterBuf);
|
716 |
|
Buffer buf = driver.getDataSet(q);
|
717 |
|
|
718 |
|
for (int i = 0; i < bandList.getBandCount(); i++) {
|
719 |
|
bandList.getBand(i).setFileName(serverName);
|
720 |
|
}
|
721 |
|
driver.close();
|
722 |
|
return buf;
|
723 |
|
} catch (ProviderNotRegisteredException e) {
|
724 |
|
throw new RasterDriverException("Error building GdalDriver", e);
|
725 |
|
} catch (InitializeException e) {
|
726 |
|
throw new RasterDriverException("Error building GdalDriver", e);
|
727 |
|
}
|
728 |
|
}*/
|
729 |
|
|
730 |
|
/*public Buffer getWindow(double ulx, double uly, double w, double h,
|
731 |
|
BandList bandList, Buffer rasterBuf, boolean adjustToExtent, TaskStatus status) throws ProcessInterruptedException, RasterDriverException {
|
732 |
|
Rectangle2D bBox = new Rectangle2D.Double(ulx, uly, w, h);
|
733 |
|
WCSStatus wcsStatus = loadWCSStatus(bBox);
|
734 |
|
|
735 |
|
lastRequest = downloadFile(wcsStatus, ulx, uly, ulx + w, uly - h, rasterBuf.getWidth(), rasterBuf.getHeight());
|
736 |
|
|
737 |
|
if (lastRequest == null) {
|
738 |
|
return rasterBuf;
|
739 |
|
}
|
740 |
|
|
741 |
|
try {
|
742 |
|
AbstractRasterProvider driver = DefaultProviderServices.loadProvider(new File(lastRequest.getPath()));
|
743 |
|
|
744 |
|
//El nombre de fichero que ha puesto en el bandList es el del servidor y no el del fichero en disco
|
745 |
|
String serverName = bandList.getBand(0).getFileName();
|
746 |
|
for (int i = 0; i < bandList.getBandCount(); i++) {
|
747 |
|
bandList.getBand(i).setFileName(lastRequest.getPath());
|
748 |
|
}
|
749 |
|
|
750 |
|
DefaultRasterQuery q = (DefaultRasterQuery)RasterLocator.getManager().createQuery();
|
751 |
|
q.setAreaOfInterest(ulx, uly, w, h);
|
752 |
|
q.setBandList(bandList);
|
753 |
|
q.setBuffer(rasterBuf);
|
754 |
|
q.setAdjustToExtent(adjustToExtent);
|
755 |
|
|
756 |
|
Buffer buf = driver.getDataSet(q);
|
757 |
|
|
758 |
|
for (int i = 0; i < bandList.getBandCount(); i++) {
|
759 |
|
bandList.getBand(i).setFileName(serverName);
|
760 |
|
}
|
761 |
|
driver.close();
|
762 |
|
return buf;
|
763 |
|
} catch (ProviderNotRegisteredException e) {
|
764 |
|
throw new RasterDriverException("Error building GdalDriver", e);
|
765 |
|
} catch (InitializeException e) {
|
766 |
|
throw new RasterDriverException("Error building GdalDriver", e);
|
767 |
|
}
|
768 |
|
}*/
|
769 |
|
|
770 |
|
/*public Buffer getWindow(Extent extent, int bufWidth, int bufHeight,
|
771 |
|
BandList bandList, Buffer rasterBuf, boolean adjustToExtent, TaskStatus status) throws ProcessInterruptedException, RasterDriverException {
|
772 |
|
WCSDataParametersImpl p = (WCSDataParametersImpl)parameters;
|
773 |
|
Rectangle2D bBox = null;
|
774 |
|
p.setWidth(bufWidth);
|
775 |
|
p.setHeight(bufHeight);
|
776 |
|
|
777 |
|
bBox = extent.toRectangle2D();
|
778 |
|
|
779 |
|
//extent.toRectangle2D();//new Rectangle2D.Double(ulx, lry, Math.abs(lrx - ulx), Math.abs(lry - uly));
|
780 |
|
WCSStatus wcsStatus = loadWCSStatus(bBox);
|
781 |
|
lastRequest = downloadFile(wcsStatus, extent.getULX(), extent.getULY(), extent.getLRX(), extent.getLRY(), rasterBuf.getWidth(), rasterBuf.getHeight());
|
782 |
|
|
783 |
|
if (lastRequest == null) {
|
784 |
|
return rasterBuf;
|
785 |
|
}
|
786 |
|
|
787 |
|
try {
|
788 |
|
AbstractRasterProvider driver = DefaultProviderServices.loadProvider(new File(lastRequest.getPath()));
|
789 |
|
|
790 |
|
//El nombre de fichero que ha puesto en el bandList es el del servidor y no el del fichero en disco
|
791 |
|
String serverName = bandList.getBand(0).getFileName();
|
792 |
|
for (int i = 0; i < bandList.getBandCount(); i++) {
|
793 |
|
bandList.getBand(i).setFileName(lastRequest.getPath());
|
794 |
|
}
|
795 |
|
|
796 |
|
DefaultRasterQuery q = (DefaultRasterQuery)RasterLocator.getManager().createQuery();
|
797 |
|
q.setAreaOfInterest(extent, bufWidth, bufHeight);
|
798 |
|
q.setBandList(bandList);
|
799 |
|
q.setBuffer(rasterBuf);
|
800 |
|
q.setAdjustToExtent(adjustToExtent);
|
801 |
|
|
802 |
|
Buffer buf = driver.getDataSet(q);
|
803 |
|
|
804 |
|
for (int i = 0; i < bandList.getBandCount(); i++) {
|
805 |
|
bandList.getBand(i).setFileName(serverName);
|
806 |
|
}
|
807 |
|
driver.close();
|
808 |
|
return buf;
|
809 |
|
} catch (ProviderNotRegisteredException e) {
|
810 |
|
throw new RasterDriverException("Error building GdalDriver", e);
|
811 |
|
} catch (InitializeException e) {
|
812 |
|
throw new RasterDriverException("Error building GdalDriver", e);
|
813 |
|
}
|
814 |
|
}*/
|
815 |
|
|
816 |
669 |
/**
|
817 |
670 |
* When a WCS provider is opened the information of data type and number of bands is not
|
818 |
671 |
* available. Only after the first time a raster has been downloaded it can be know.
|