Revision 1028 org.gvsig.raster.tools/trunk/org.gvsig.raster.tools/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/raster/process/ClippingProcess.java
ClippingProcess.java | ||
---|---|---|
31 | 31 |
import org.gvsig.app.project.ProjectManager; |
32 | 32 |
import org.gvsig.app.project.documents.Document; |
33 | 33 |
import org.gvsig.app.project.documents.view.BaseViewDocument; |
34 |
import org.gvsig.fmap.dal.DALLocator; |
|
35 |
import org.gvsig.fmap.dal.DataManager; |
|
36 |
import org.gvsig.fmap.dal.DataServerExplorer; |
|
37 |
import org.gvsig.fmap.dal.DataServerExplorerParameters; |
|
34 | 38 |
import org.gvsig.fmap.dal.coverage.RasterLibrary; |
35 | 39 |
import org.gvsig.fmap.dal.coverage.RasterLocator; |
36 | 40 |
import org.gvsig.fmap.dal.coverage.RasterManager; |
... | ... | |
39 | 43 |
import org.gvsig.fmap.dal.coverage.datastruct.NoData; |
40 | 44 |
import org.gvsig.fmap.dal.coverage.datastruct.Params; |
41 | 45 |
import org.gvsig.fmap.dal.coverage.exception.InvalidSetViewException; |
42 |
import org.gvsig.fmap.dal.coverage.exception.NotSupportedExtensionException; |
|
43 | 46 |
import org.gvsig.fmap.dal.coverage.exception.ProcessInterruptedException; |
44 | 47 |
import org.gvsig.fmap.dal.coverage.exception.RasterDriverException; |
45 | 48 |
import org.gvsig.fmap.dal.coverage.exception.RmfSerializerException; |
46 | 49 |
import org.gvsig.fmap.dal.coverage.process.IncrementableTask; |
47 |
import org.gvsig.fmap.dal.coverage.store.DataServerWriter; |
|
48 | 50 |
import org.gvsig.fmap.dal.coverage.store.RasterDataStore; |
49 | 51 |
import org.gvsig.fmap.dal.coverage.store.RasterQuery; |
50 |
import org.gvsig.fmap.dal.coverage.store.RasterWriter;
|
|
52 |
import org.gvsig.fmap.dal.coverage.store.parameter.NewRasterStoreParameters;
|
|
51 | 53 |
import org.gvsig.fmap.dal.coverage.store.parameter.RemoteStoreParameters; |
52 | 54 |
import org.gvsig.fmap.dal.coverage.store.props.ColorInterpretation; |
53 | 55 |
import org.gvsig.fmap.dal.coverage.store.props.ColorTable; |
54 | 56 |
import org.gvsig.fmap.dal.coverage.util.RasterUtils; |
55 | 57 |
import org.gvsig.fmap.dal.exception.CloseException; |
58 |
import org.gvsig.fmap.dal.exception.DataException; |
|
59 |
import org.gvsig.fmap.dal.exception.InitializeException; |
|
60 |
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException; |
|
61 |
import org.gvsig.fmap.dal.exception.ValidateDataParametersException; |
|
56 | 62 |
import org.gvsig.fmap.mapcontext.layers.FLayer; |
57 | 63 |
import org.gvsig.fmap.mapcontext.layers.FLayers; |
58 | 64 |
import org.gvsig.raster.fmap.layers.DefaultFLyrRaster; |
... | ... | |
70 | 76 |
*/ |
71 | 77 |
public class ClippingProcess extends RasterProcess { |
72 | 78 |
private String fileName = ""; |
73 |
private DataServerWriter writerBufferServer = null; |
|
74 | 79 |
private FLyrRaster rasterSE = null; |
75 |
private AffineTransform affineTransform = new AffineTransform(); |
|
76 | 80 |
private boolean oneLayerPerBand = false; |
77 | 81 |
private int[] drawableBands = { 0, 1, 2 }; |
78 | 82 |
private double[] pValues = null; |
79 |
private RasterWriter rw = null; |
|
80 | 83 |
private int interpolationMethod = Buffer.INTERPOLATION_Undefined; |
81 | 84 |
private String viewName = ""; |
82 | 85 |
private Params params = null; |
83 | 86 |
private ColorInterpretation colorInterp = null; |
84 | 87 |
private ArrayList<VectorialROI> selectedRois = null; |
85 |
|
|
88 |
private AffineTransform affineTransform = null; |
|
86 | 89 |
private double[] wcValues = null; |
87 | 90 |
private RasterManager rManager = RasterLocator.getManager(); |
91 |
private NewRasterStoreParameters sparams = null; |
|
88 | 92 |
|
89 | 93 |
/** |
90 | 94 |
* Variables de la resoluci?n de salida |
... | ... | |
113 | 117 |
@SuppressWarnings("unchecked") |
114 | 118 |
public void init() { |
115 | 119 |
fileName = getStringParam("filename"); |
116 |
writerBufferServer = (DataServerWriter) getParam("datawriter"); |
|
117 | 120 |
viewName = getStringParam("viewname"); |
118 | 121 |
pValues = getDoubleArrayParam("pixelcoordinates"); |
119 | 122 |
wcValues = getDoubleArrayParam("realcoordinates"); |
... | ... | |
268 | 271 |
|
269 | 272 |
|
270 | 273 |
insertLineLog(RasterToolsUtil.getText(this, "salvando_imagen")); |
271 |
|
|
274 |
|
|
275 |
DataManager manager = DALLocator.getDataManager(); |
|
276 |
String provider = "Gdal Store"; |
|
277 |
DataServerExplorerParameters eparams = manager.createServerExplorerParameters("FilesystemExplorer"); |
|
278 |
|
|
272 | 279 |
String finalFileName = ""; |
273 | 280 |
if (oneLayerPerBand) { |
274 | 281 |
long[] milis = new long[drawableBands.length]; |
275 | 282 |
String[] fileNames = new String[drawableBands.length]; |
276 | 283 |
for (int i = 0; i < drawableBands.length; i++) { |
277 | 284 |
fileNames[i] = fileName + "_B" + drawableBands[i] + ".tif"; |
278 |
writerBufferServer.setBuffer(buffer, i); |
|
279 |
Params p = null; |
|
280 |
if (params == null) |
|
281 |
p = rManager.createWriter(fileNames[i]).getParams(); |
|
282 |
else |
|
283 |
p = params; |
|
284 |
rw = rManager.createWriter(writerBufferServer, fileNames[i], 1, |
|
285 |
affineTransform, buffer.getWidth(), buffer.getHeight(), |
|
286 |
buffer.getDataType(), p, null); |
|
287 |
rw.setColorBandsInterpretation(new String[]{ColorInterpretation.GRAY_BAND}); |
|
288 |
rw.setWkt(dstoreCopy.getWktProjection()); |
|
289 |
rw.dataWrite(); |
|
290 |
rw.writeClose(); |
|
285 |
|
|
286 |
int index = fileNames[i].lastIndexOf(File.separator); |
|
287 |
if(index < 0) |
|
288 |
index = fileNames[i].length(); |
|
289 |
String path = fileNames[i].substring(0, index); |
|
290 |
String file = fileNames[i].substring(index + 1, fileNames[i].length()); |
|
291 |
|
|
292 |
eparams.setDynValue("initialpath", path); |
|
293 |
DataServerExplorer serverExplorer = manager.openServerExplorer(eparams.getExplorerName(), eparams); |
|
294 |
|
|
295 |
sparams = (NewRasterStoreParameters)serverExplorer.getAddParameters(provider); |
|
296 |
sparams.setDestination(path, file); |
|
297 |
sparams.setBuffer(buffer); |
|
298 |
sparams.setColorInterpretation(new String[]{ColorInterpretation.GRAY_BAND}); |
|
299 |
sparams.setWktProjection(dstoreCopy.getWktProjection()); |
|
300 |
sparams.setBand(i); |
|
301 |
sparams.setAffineTransform(affineTransform); |
|
302 |
|
|
303 |
serverExplorer.add(provider, sparams, true); |
|
304 |
|
|
305 |
// writerBufferServer.setBuffer(buffer, i); |
|
306 |
// Params p = null; |
|
307 |
// if (params == null) |
|
308 |
// p = rManager.createWriter(fileNames[i]).getParams(); |
|
309 |
// else |
|
310 |
// p = params; |
|
311 |
// rw = rManager.createWriter(writerBufferServer, fileNames[i], 1, |
|
312 |
// affineTransform, buffer.getWidth(), buffer.getHeight(), |
|
313 |
// buffer.getDataType(), p, null); |
|
314 |
// rw.setColorBandsInterpretation(new String[]{ColorInterpretation.GRAY_BAND}); |
|
315 |
// rw.setWkt(dstoreCopy.getWktProjection()); |
|
316 |
// rw.dataWrite(); |
|
317 |
// rw.writeClose(); |
|
291 | 318 |
saveToRmf(fileNames[i]); |
292 | 319 |
t2 = new java.util.Date().getTime(); |
293 | 320 |
milis[i] = (t2 - t1); |
... | ... | |
325 | 352 |
f.delete(); |
326 | 353 |
} |
327 | 354 |
f = null; |
328 |
writerBufferServer.setBuffer(buffer, -1); |
|
329 |
if (params == null) { |
|
330 |
finalFileName = fileName + ".tif"; |
|
331 |
params = rManager.createWriter(finalFileName).getParams(); |
|
332 |
} else |
|
333 |
finalFileName = fileName; |
|
334 |
rw = rManager.createWriter(writerBufferServer, finalFileName, |
|
335 |
buffer.getBandCount(), affineTransform, buffer.getWidth(), |
|
336 |
buffer.getHeight(), buffer.getDataType(), params, null); |
|
355 |
|
|
356 |
finalFileName = fileName + ".tif"; |
|
357 |
|
|
358 |
int index = finalFileName.lastIndexOf(File.separator); |
|
359 |
if(index < 0) |
|
360 |
index = finalFileName.length(); |
|
361 |
String path = finalFileName.substring(0, index); |
|
362 |
String file = finalFileName.substring(index + 1, finalFileName.length()); |
|
363 |
|
|
364 |
eparams.setDynValue("initialpath", path); |
|
365 |
DataServerExplorer serverExplorer = manager.openServerExplorer(eparams.getExplorerName(), eparams); |
|
366 |
|
|
367 |
sparams = (NewRasterStoreParameters)serverExplorer.getAddParameters(provider); |
|
368 |
sparams.setDestination(path, file); |
|
369 |
sparams.setBuffer(buffer); |
|
337 | 370 |
if(colorInterp != null) |
338 |
rw.setColorBandsInterpretation(colorInterp.getValues()); |
|
339 |
rw.setWkt(dstoreCopy.getWktProjection()); |
|
340 |
rw.dataWrite(); |
|
341 |
rw.writeClose(); |
|
371 |
sparams.setColorInterpretation(colorInterp.getValues()); |
|
372 |
sparams.setWktProjection(dstoreCopy.getWktProjection()); |
|
373 |
sparams.setAffineTransform(affineTransform); |
|
374 |
|
|
375 |
serverExplorer.add(provider, sparams, true); |
|
376 |
|
|
377 |
// writerBufferServer.setBuffer(buffer, -1); |
|
378 |
// if (params == null) { |
|
379 |
// finalFileName = fileName + ".tif"; |
|
380 |
// params = rManager.createWriter(finalFileName).getParams(); |
|
381 |
// } else |
|
382 |
// finalFileName = fileName; |
|
383 |
// rw = rManager.createWriter(writerBufferServer, finalFileName, |
|
384 |
// buffer.getBandCount(), affineTransform, buffer.getWidth(), |
|
385 |
// buffer.getHeight(), buffer.getDataType(), params, null); |
|
386 |
// if(colorInterp != null) |
|
387 |
// rw.setColorBandsInterpretation(colorInterp.getValues()); |
|
388 |
// rw.setWkt(dstoreCopy.getWktProjection()); |
|
389 |
// rw.dataWrite(); |
|
390 |
// rw.writeClose(); |
|
342 | 391 |
saveToRmf(finalFileName); |
392 |
|
|
393 |
|
|
343 | 394 |
t2 = new java.util.Date().getTime(); |
344 | 395 |
if (incrementableTask != null) { |
345 | 396 |
incrementableTask.processFinalize(); |
... | ... | |
355 | 406 |
cutFinalize(finalFileName, (t2 - t1)); |
356 | 407 |
} |
357 | 408 |
|
358 |
} catch (NotSupportedExtensionException e) { |
|
359 |
RasterToolsUtil.messageBoxError("error_not_suported_extension", this, e); |
|
360 | 409 |
} catch (RasterDriverException e) { |
361 | 410 |
RasterToolsUtil.messageBoxError("error_writer", this, e); |
362 |
} catch (IOException e) {
|
|
411 |
} catch (ValidateDataParametersException e) {
|
|
363 | 412 |
RasterToolsUtil.messageBoxError("error_georasterwriter", this, e); |
413 |
} catch (ProviderNotRegisteredException e) { |
|
414 |
RasterToolsUtil.messageBoxError("error_georasterwriter", this, e); |
|
415 |
} catch (InitializeException e) { |
|
416 |
RasterToolsUtil.messageBoxError("error_georasterwriter", this, e); |
|
417 |
} catch (DataException e) { |
|
418 |
RasterToolsUtil.messageBoxError("error_georasterwriter", this, e); |
|
419 |
} catch (Exception e) { |
|
420 |
e.printStackTrace(); |
|
364 | 421 |
} finally { |
365 | 422 |
if (dstoreCopy != null) |
366 | 423 |
try { |
... | ... | |
477 | 534 |
return task.getPercent(); |
478 | 535 |
} |
479 | 536 |
|
480 |
return (writerBufferServer != null) ? writerBufferServer.getPercent() : 0;
|
|
537 |
return (sparams != null) ? sparams.getPercent() : 0;
|
|
481 | 538 |
} |
482 | 539 |
|
483 | 540 |
/* |
Also available in: Unified diff