Revision 22548 trunk/extensions/extRemoteSensing/src/org/gvsig/remotesensing/mosaic/process/FeatherProcessBuff.java
FeatherProcessBuff.java | ||
---|---|---|
49 | 49 |
import org.gvsig.fmap.raster.layers.FLyrRasterSE; |
50 | 50 |
import org.gvsig.raster.RasterProcess; |
51 | 51 |
import org.gvsig.raster.buffer.BufferFactory; |
52 |
import org.gvsig.raster.buffer.RasterBuffer; |
|
53 | 52 |
import org.gvsig.raster.buffer.RasterBufferInvalidException; |
54 | 53 |
import org.gvsig.raster.buffer.WriterBufferServer; |
55 | 54 |
import org.gvsig.raster.dataset.GeoRasterWriter; |
... | ... | |
78 | 77 |
|
79 | 78 |
private FLyrRasterSE inputRasterLayers[] = null; |
80 | 79 |
private IBuffer inputBuffers[] = null; |
81 |
private int xResolution, yResolution = 0; |
|
82 | 80 |
|
83 | 81 |
private FLyrRasterSE outputRasterLayer = null; |
84 | 82 |
|
... | ... | |
89 | 87 |
|
90 | 88 |
private Grid resultGrid = null; |
91 | 89 |
private GridExtent resultGridExtent = null; |
90 |
private int resultPxWidth, resultPxHeight= 0; |
|
92 | 91 |
private int resultbandCount = 0; |
93 | 92 |
|
94 | 93 |
private WriterBufferServer writerBufferServer = null; |
... | ... | |
100 | 99 |
private byte values[] = null; |
101 | 100 |
private double totalD = 0; |
102 | 101 |
private double result[] = null; |
102 |
|
|
103 |
private GeoRasterWriter grw; |
|
103 | 104 |
|
104 | 105 |
public void init() { |
105 | 106 |
|
107 |
insertLineLog(PluginServices.getText(this, "preparando_entrada")+"..."); |
|
106 | 108 |
// Obtener las capas que intervienen en el mosaico. |
107 | 109 |
inputRasterLayers = (FLyrRasterSE[]) getParam("inputRasterLayers"); |
108 | 110 |
|
... | ... | |
124 | 126 |
|
125 | 127 |
resultGridExtent = new GridExtent(new Extent(resultExtent), cellSizeX, |
126 | 128 |
cellSizeY); |
127 |
xResolution = resultGridExtent.getNX(); |
|
128 |
yResolution = resultGridExtent.getNY(); |
|
129 |
|
|
130 |
resultPxWidth = resultGridExtent.getNX(); |
|
131 |
resultPxHeight = resultGridExtent.getNY(); |
|
129 | 132 |
|
130 | 133 |
// Grid Resultante |
131 | 134 |
try { |
... | ... | |
144 | 147 |
} |
145 | 148 |
|
146 | 149 |
public void process() throws InterruptedException { |
147 |
// Calculara las lineas de borde (entre 0, 3 o 4 lineas)
|
|
150 |
// Calcular las lineas de borde (entre 0, 3 o 4 lineas) |
|
148 | 151 |
calculateBorders(); |
149 | 152 |
distances = new double[borders.length]; |
150 | 153 |
|
... | ... | |
161 | 164 |
bufferFactory.setDrawableBands(drawableBands); |
162 | 165 |
|
163 | 166 |
try { |
164 |
/*if (RasterBuffer.isBufferTooBig(new double[] { |
|
165 |
resultGridExtent.getMin().getX(), |
|
166 |
resultGridExtent.getMin().getY(), |
|
167 |
resultGridExtent.getMax().getX(), |
|
168 |
resultGridExtent.getMax().getY() }, |
|
169 |
drawableBands.length))*/ |
|
170 | 167 |
bufferFactory.setReadOnly(true); |
171 | 168 |
|
172 | 169 |
bufferFactory.setAreaOfInterest(resultGridExtent.getMin().getX(), resultGridExtent.getMax().getY(), |
173 | 170 |
resultGridExtent.getMax().getX(), resultGridExtent.getMin().getY(), resultGridExtent.getNX(),resultGridExtent.getNY()); |
174 | 171 |
|
175 |
/*bufferFactory.setAreaOfInterest(inputExtents[l].getMinX(), inputExtents[l].getMaxY(), |
|
176 |
inputExtents[l].getMaxX(), inputExtents[l].getMinY(),resultGridExtent.getNX(),resultGridExtent.getNY()); |
|
177 |
*/ |
|
178 |
|
|
179 |
/* |
|
180 |
bufferFactory.setAreaOfInterest(inputExtents[l].getMinX(), inputExtents[l].getMaxY(), |
|
181 |
inputExtents[l].getMaxX()- inputExtents[l].getMinX(), inputExtents[l].getMaxY() - inputExtents[l].getMinY()); |
|
182 |
*/ |
|
183 | 172 |
} catch (InvalidSetViewException e) { |
184 | 173 |
// TODO Auto-generated catch block |
185 | 174 |
e.printStackTrace(); |
... | ... | |
188 | 177 |
e.printStackTrace(); |
189 | 178 |
} |
190 | 179 |
inputBuffers[l] = bufferFactory.getRasterBuf(); |
191 |
|
|
192 |
insertLineLog(RasterToolsUtil.getText(this, "interpolando")); |
|
193 |
|
|
194 |
/*inputBuffers[l] = ((RasterBuffer) inputBuffers[l]) |
|
195 |
.getAdjustedWindow(xResolution, yResolution, |
|
196 |
GridInterpolated.INTERPOLATION_NearestNeighbour);*/ |
|
197 |
|
|
198 | 180 |
} |
199 | 181 |
|
200 | 182 |
// Recorrido del grid resultante |
201 |
// for (int band = 0; band < resultGrid.getBandCount(); band++){ |
|
202 |
// resultGrid.setBandToOperate(band); |
|
203 |
for (int col = 0; col < resultGrid.getNX(); col++) { |
|
204 |
// percent = |
|
205 |
// col*resultGrid.getBandCount()*100/resultGrid.getNX()*resultGrid.getBandCount(); |
|
206 |
for (int row = 0; row < resultGrid.getNY(); row++) { |
|
183 |
insertLineLog(PluginServices.getText(this, "realizando_degradado")+"..."); |
|
184 |
for (int col = 0; col < resultPxWidth; col++) { |
|
185 |
percent = col*100/resultPxWidth; |
|
186 |
for (int row = 0; row < resultPxHeight; row++) { |
|
207 | 187 |
try { |
208 | 188 |
setValue(col, row); |
209 |
// resultGrid.setCellValue(col, row, getValue(col, row, |
|
210 |
// band)); |
|
211 | 189 |
} catch (OutOfGridException e) { |
212 | 190 |
RasterToolsUtil.messageBoxError(PluginServices.getText( |
213 | 191 |
this, "bad_access_grid"), this, e); |
214 | 192 |
} |
215 | 193 |
} |
216 | 194 |
} |
217 |
// } |
|
195 |
|
|
196 |
// Se liberan los buffers |
|
197 |
for(int i=0; i<inputRasterLayers.length;i++) |
|
198 |
inputBuffers[i].free(); |
|
199 |
|
|
218 | 200 |
createLayer(); |
219 | 201 |
if (externalActions != null) |
220 | 202 |
externalActions.end(outputRasterLayer); |
221 | 203 |
} |
222 | 204 |
|
223 | 205 |
private void createLayer() { |
206 |
insertLineLog(PluginServices.getText(this, "escribiendo_resultado")+"..."); |
|
207 |
|
|
224 | 208 |
writerBufferServer = new WriterBufferServer(resultGrid.getRasterBuf()); |
225 | 209 |
AffineTransform aTransform = new AffineTransform(resultGridExtent |
226 | 210 |
.getCellSizeX(), 0.0, 0.0, resultGridExtent.getCellSizeY(), |
227 | 211 |
resultGridExtent.getMin().getX(), resultGridExtent.getMax() |
228 | 212 |
.getY()); |
229 |
GeoRasterWriter grw; |
|
230 | 213 |
try { |
231 | 214 |
grw = GeoRasterWriter.getWriter(writerBufferServer, fileName, |
232 | 215 |
resultGrid.getBandCount(), aTransform, resultGridExtent |
... | ... | |
235 | 218 |
.getParams(), null); |
236 | 219 |
grw.dataWrite(); |
237 | 220 |
grw.writeClose(); |
238 |
|
|
221 |
resultGrid.getRasterBuf().free(); |
|
239 | 222 |
outputRasterLayer = FLyrRasterSE.createLayer("outputLayer", |
240 | 223 |
fileName, null); |
241 | 224 |
|
... | ... | |
243 | 226 |
/* |
244 | 227 |
* DEBUG: Escritura de los buffers interpolados de las im?genes de entrada |
245 | 228 |
*/ |
246 |
|
|
229 |
/* |
|
247 | 230 |
for(int i=0; i<inputBuffers.length; i++){ |
248 | 231 |
writerBufferServer = new WriterBufferServer(inputBuffers[i]); |
249 | 232 |
aTransform = new AffineTransform(resultGridExtent |
... | ... | |
345 | 328 |
} |
346 | 329 |
|
347 | 330 |
public int getPercent() { |
348 |
// TODO Auto-generated method stub |
|
349 |
return 0; |
|
331 |
if (grw != null) |
|
332 |
return grw.getPercent(); |
|
333 |
|
|
334 |
return percent; |
|
350 | 335 |
} |
351 | 336 |
|
352 | 337 |
public String getTitle() { |
Also available in: Unified diff