Revision 2236 org.gvsig.raster/branches/org.gvsig.raster_dataaccess_refactoring/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/provider/tile/TileDownloaderForFiles.java
TileDownloaderForFiles.java | ||
---|---|---|
38 | 38 |
import org.gvsig.raster.cache.tile.exception.TileGettingException; |
39 | 39 |
import org.gvsig.raster.cache.tile.provider.CacheStruct; |
40 | 40 |
import org.gvsig.raster.impl.DefaultRasterManager; |
41 |
import org.gvsig.raster.impl.buffer.DefaultRasterQuery; |
|
42 | 41 |
import org.gvsig.raster.impl.datastruct.ExtentImpl; |
43 | 42 |
|
44 | 43 |
/** |
... | ... | |
86 | 85 |
if(newBufHeight == this.tilePxHeight && newBufWidth == this.tilePxWidth) { |
87 | 86 |
bufResult = readSupersampledBuffer(tileExtent, newBandList, this.tilePxWidth, this.tilePxHeight, nBandsBuffer); |
88 | 87 |
if(bufResult == null) { |
89 |
RasterQuery q = (DefaultRasterQuery)RasterLocator.getManager().createQuery();
|
|
88 |
RasterQuery q = RasterLocator.getManager().createQuery(); |
|
90 | 89 |
q.setAreaOfInterest(tileExtent, this.tilePxWidth, this.tilePxHeight); |
91 | 90 |
q.setAdjustToExtent(true); |
92 | 91 |
bufResult = store.query(q); |
... | ... | |
103 | 102 |
Buffer smallBuf = readSupersampledBuffer(ex, newBandList, newBufWidth, newBufHeight, nBandsBuffer); |
104 | 103 |
|
105 | 104 |
if(smallBuf == null) { //No ha habido resampleo |
106 |
smallBuf = DefaultRasterManager.getInstance().createMemoryBuffer(store.getDataType()[0], newBufWidth, newBufHeight, nBandsBuffer, true);
|
|
107 |
RasterQuery q = (DefaultRasterQuery)RasterLocator.getManager().createQuery();
|
|
108 |
q.setAreaOfInterest(tileExtent, newBufWidth, newBufHeight);
|
|
105 |
RasterQuery q = RasterLocator.getManager().createQuery();
|
|
106 |
q.setAreaOfInterest(ex, newBufWidth, newBufHeight);
|
|
107 |
q.setAllDrawableBands();
|
|
109 | 108 |
q.setAdjustToExtent(true); |
110 | 109 |
smallBuf = store.query(q); |
111 | 110 |
} |
111 |
|
|
112 |
bufResult = buildTileBuffer(nBandsBuffer, this.tilePxWidth, this.tilePxHeight); |
|
112 | 113 |
RasterLocator.getManager().getRasterUtils().copyToBuffer( |
113 | 114 |
bufResult, |
114 | 115 |
tileExtent, |
... | ... | |
118 | 119 |
store.getColorInterpretation().hasAlphaBand()); |
119 | 120 |
} |
120 | 121 |
|
121 |
saveTile(bufResult, pixelSize, extension, |
|
122 |
alphaBand, tile, tileExtent, ci); |
|
122 |
saveTile(bufResult, pixelSize, extension, alphaBand, tile, tileExtent, ci); |
|
123 | 123 |
//Si borramos el rmf no se puede leer la etiqueta Alpha. En caso de que se modifique jgdal para |
124 | 124 |
//poder guardar esta etiqueta deberiamos borrar el rmf para ahorrar ficheros |
125 | 125 |
//File rmf = new File(tile.getFile().getAbsolutePath() + ".rmf"); |
... | ... | |
139 | 139 |
return tile; |
140 | 140 |
} |
141 | 141 |
|
142 |
/** |
|
143 |
* When the buffer of the request is greater than the original raster (> scale 1:1) then the request |
|
144 |
* has to be resampled. |
|
145 |
* @param tileExtent |
|
146 |
* @param newBandList |
|
147 |
* @param bufWidth |
|
148 |
* @param bufHeight |
|
149 |
* @param nBands |
|
150 |
* @return |
|
151 |
* @throws ProcessInterruptedException |
|
152 |
* @throws TileGettingException |
|
153 |
*/ |
|
142 | 154 |
private Buffer readSupersampledBuffer(Extent tileExtent, BandList newBandList, int bufWidth, int bufHeight, int nBands) throws ProcessInterruptedException, TileGettingException { |
143 | 155 |
int widthImgPx = (int)Math.abs(tileExtent.width() / store.getPixelSizeX()); |
144 | 156 |
int heightImgPx = (int)Math.abs(tileExtent.height() / store.getPixelSizeY()); |
... | ... | |
147 | 159 |
if(supersampling) { |
148 | 160 |
RasterQuery q = RasterLocator.getManager().createQuery(); |
149 | 161 |
q.setAreaOfInterest(tileExtent, widthImgPx, heightImgPx); |
162 |
q.setAllDrawableBands(); |
|
150 | 163 |
q.setAdjustToExtent(true); |
151 | 164 |
Buffer buf = null; |
152 | 165 |
try { |
... | ... | |
167 | 180 |
* @param nbands |
168 | 181 |
* @return |
169 | 182 |
*/ |
170 |
/*private Buffer buildTileBuffer(int nbands, int w, int h) {
|
|
171 |
Buffer bufResult = DefaultRasterManager.getInstance().createMemoryBuffer(prov.getDataType()[0], w, h, nbands, true);
|
|
172 |
if(prov.getDataType()[0] != Buffer.TYPE_BYTE) {
|
|
183 |
private Buffer buildTileBuffer(int nbands, int w, int h) { |
|
184 |
Buffer bufResult = DefaultRasterManager.getInstance().createMemoryBuffer(store.getDataType()[0], w, h, nbands, true);
|
|
185 |
if(store.getDataType()[0] != Buffer.TYPE_BYTE) {
|
|
173 | 186 |
for (int i = 0; i < bufResult.getBandCount(); i++) { |
174 | 187 |
clearMaskBuffer(bufResult, i); |
175 | 188 |
} |
176 | 189 |
} else |
177 | 190 |
clearMaskBuffer(bufResult, nbands - 1); |
178 | 191 |
return bufResult; |
179 |
}*/
|
|
192 |
} |
|
180 | 193 |
} |
Also available in: Unified diff