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

View differences:

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