Revision 12749 trunk/libraries/libRaster/src/org/gvsig/raster/dataset/io/MrSidDriver.java
MrSidDriver.java | ||
---|---|---|
186 | 186 |
return file.isSupersampling; |
187 | 187 |
} |
188 | 188 |
|
189 |
public IBuffer getWindowRaster(double ulx, double uly, double lrx, double lry, BandList bandList, IBuffer rasterBuf) { |
|
190 |
//TODO: FUNCIONALIDAD: Hacer caso del bandList |
|
191 |
int width = rasterBuf.getWidth(); |
|
192 |
int height = rasterBuf.getHeight(); |
|
193 |
|
|
194 |
//Impedimos que los valores de ancho y alto de la im?gen sean menores que 1 |
|
195 |
if (width <= 0) |
|
196 |
width = 1; |
|
197 |
|
|
198 |
if (height <= 0) |
|
199 |
height = 1; |
|
200 |
|
|
201 |
setView(new Extent(ulx, uly, lrx, lry)); |
|
202 |
file.setView(viewRequest.minX(), viewRequest.maxY(), viewRequest.maxX(), viewRequest.minY(), width, height); |
|
203 |
|
|
204 |
int[] pRGBArray = new int[width * height]; |
|
205 |
|
|
206 |
try { |
|
207 |
file.readScene(pRGBArray); |
|
208 |
int wBuf = rasterBuf.getWidth(); |
|
209 |
for (int row = 0; row < rasterBuf.getHeight(); row++) { |
|
210 |
for(int col = 0; col < wBuf; col ++) { |
|
211 |
rasterBuf.setElem(row, col, 0, (byte)((pRGBArray[(row * wBuf) + col] & 0x00ff0000) >> 16)); |
|
212 |
rasterBuf.setElem(row, col, 1, (byte)((pRGBArray[(row * wBuf) + col] & 0x0000ff00) >> 8)); |
|
213 |
rasterBuf.setElem(row, col, 2, (byte)(pRGBArray[(row * wBuf) + col] & 0x000000ff)); |
|
214 |
} |
|
215 |
} |
|
216 |
} catch (Exception e) { |
|
217 |
e.printStackTrace(); |
|
218 |
} |
|
219 |
return rasterBuf; |
|
220 |
} |
|
221 |
|
|
189 | 222 |
/* |
190 | 223 |
* (non-Javadoc) |
191 | 224 |
* @see org.gvsig.raster.dataset.RasterDataset#getWindowRaster(double, double, double, double, org.gvsig.raster.dataset.BandList, org.gvsig.raster.dataset.IBuffer, boolean) |
Also available in: Unified diff