Revision 2167 branches/gvSIG_GisPlanet/applications/appgvSIG/src/com/iver/cit/gvsig/RasterizerLayer.java
RasterizerLayer.java | ||
---|---|---|
51 | 51 |
import java.awt.Graphics2D; |
52 | 52 |
import java.awt.geom.Rectangle2D; |
53 | 53 |
import java.awt.image.BufferedImage; |
54 |
import java.util.ArrayList; |
|
54 | 55 |
|
55 | 56 |
import javax.swing.JProgressBar; |
56 | 57 |
|
57 | 58 |
import org.cresques.io.Rasterizer; |
59 |
import org.cresques.io.raster.RasterBuf; |
|
60 |
import org.cresques.io.raster.RasterStats; |
|
61 |
import org.cresques.io.raster.RasterStats.History; |
|
58 | 62 |
|
59 | 63 |
import com.iver.cit.gvsig.fmap.DriverException; |
60 | 64 |
import com.iver.cit.gvsig.fmap.MapControl; |
61 | 65 |
import com.iver.cit.gvsig.fmap.ViewPort; |
62 | 66 |
import com.iver.cit.gvsig.fmap.layers.FLayers; |
67 |
import com.iver.cit.gvsig.fmap.layers.FLyrRaster; |
|
63 | 68 |
import com.iver.cit.gvsig.fmap.operations.Cancellable; |
64 | 69 |
|
65 | 70 |
/** |
... | ... | |
78 | 83 |
private Color backgroundColor = null; |
79 | 84 |
private JProgressBar progressBar = null; |
80 | 85 |
private double incrProgressBar = 0; |
81 |
|
|
86 |
private boolean firstRead = true; |
|
87 |
private int nBlocks = 0; |
|
88 |
|
|
82 | 89 |
/** |
83 | 90 |
* Calculo del viewPort |
84 | 91 |
* @param vp |
... | ... | |
131 | 138 |
|
132 | 139 |
calcViewPort(viewPort); |
133 | 140 |
|
134 |
int nBlocks = (int)(vp.getImageHeight()/sizeBlock);
|
|
141 |
nBlocks = (int)(vp.getImageHeight()/sizeBlock); |
|
135 | 142 |
incrProgressBar = 100.0/((double)nBlocks); |
136 |
System.out.println("===>NBLOCKS="+nBlocks+" INCR="+incrProgressBar); |
|
143 |
//System.out.println("===>NBLOCKS="+nBlocks+" INCR="+incrProgressBar);
|
|
137 | 144 |
|
138 | 145 |
//Tama?o de ?ltimo bloque en pixeles |
139 | 146 |
lastBlock = Math.round(vp.getImageHeight()-(nBlocks*sizeBlock)); |
... | ... | |
162 | 169 |
g.setColor(backgroundColor); |
163 | 170 |
g.fillRect(0, 0, viewPortBlock.getImageWidth(), viewPortBlock.getImageHeight()); |
164 | 171 |
try{ |
172 |
//Si es la primera lectura salvamos los valores de m?ximo y m?nimo para la aplicaci?n |
|
173 |
//de realce si la imagen es de 16 bits. |
|
174 |
if(firstRead){ |
|
175 |
for(int i=0;i<flayers.getLayersCount();i++){ |
|
176 |
if(flayers.getLayer(i) instanceof FLyrRaster){ |
|
177 |
FLyrRaster raster = (FLyrRaster)flayers.getLayer(i); |
|
178 |
if( raster.getSource().getDataType() == RasterBuf.TYPE_SHORT || |
|
179 |
raster.getSource().getDataType() == RasterBuf.TYPE_USHORT){ |
|
180 |
RasterStats stats = raster.getSource().getFilterStack().getStats(); |
|
181 |
stats.history.add(stats.new History(raster.getName(), stats.minBandValue, stats.maxBandValue, stats.secondMinBandValue, stats.secondMaxBandValue)); |
|
182 |
} |
|
183 |
} |
|
184 |
} |
|
185 |
firstRead = false; |
|
186 |
} |
|
187 |
|
|
165 | 188 |
flayers.draw(img, g, viewPortBlock,new Cancellable() { |
166 | 189 |
public boolean isCanceled() { |
167 | 190 |
return false; |
168 | 191 |
} |
169 | 192 |
}); |
193 |
|
|
194 |
//Si es el ?ltimo bloque vaciamos el historial de m?ximos y m?nimos |
|
195 |
if((contBlocks+1)==nBlocks){ |
|
196 |
for(int i=0;i<flayers.getLayersCount();i++){ |
|
197 |
if(flayers.getLayer(i) instanceof FLyrRaster){ |
|
198 |
FLyrRaster raster = (FLyrRaster)flayers.getLayer(i); |
|
199 |
if( raster.getSource().getDataType() == RasterBuf.TYPE_SHORT || |
|
200 |
raster.getSource().getDataType() == RasterBuf.TYPE_USHORT){ |
|
201 |
raster.getSource().getFilterStack().getStats().history.clear(); |
|
202 |
RasterStats stats = raster.getSource().getFilterStack().getStats(); |
|
203 |
} |
|
204 |
} |
|
205 |
} |
|
206 |
} |
|
207 |
|
|
208 |
|
|
170 | 209 |
}catch (DriverException e) { |
171 | 210 |
e.printStackTrace(); |
172 | 211 |
} |
Also available in: Unified diff