Revision 22548 trunk/extensions/extRemoteSensing/src/org/gvsig/remotesensing/mosaic/process/FeatherProcessBuff.java

View differences:

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