Revision 6336 org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.fmap.mapcontext.raster/org.gvsig.fmap.mapcontext.raster.impl/src/main/java/org/gvsig/fmap/mapcontext/raster/impl/DefaultRasterLayer.java

View differences:

DefaultRasterLayer.java
22 22
 */
23 23
package org.gvsig.fmap.mapcontext.raster.impl;
24 24

  
25
import java.awt.Color;
26 25
import java.awt.Graphics2D;
27 26
import java.awt.image.BufferedImage;
28
import java.awt.image.ColorModel;
29
import java.awt.image.DirectColorModel;
30
import java.awt.image.IndexColorModel;
31
import java.util.ArrayList;
32
import java.util.List;
33
import java.util.Map.Entry;
27
import java.io.File;
34 28
import java.util.Observable;
35 29
import java.util.Observer;
36 30
import java.util.Set;
37 31
import java.util.TreeSet;
38 32

  
39 33
import org.cresques.cts.ICoordTrans;
40

  
41 34
import org.gvsig.compat.print.PrintAttributes;
35
import org.gvsig.fmap.crs.CRSFactory;
36
import org.gvsig.fmap.dal.DataServerExplorer;
37
import org.gvsig.fmap.dal.DataServerExplorerParameters;
42 38
import org.gvsig.fmap.dal.DataStore;
39
import org.gvsig.fmap.dal.DataStoreProviderFactory;
43 40
import org.gvsig.fmap.dal.exception.DataException;
41
import org.gvsig.fmap.dal.exception.InitializeException;
42
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
44 43
import org.gvsig.fmap.dal.exception.ReadException;
44
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
45 45
import org.gvsig.fmap.dal.file.jimi.JimiRasterStoreProvider;
46
import org.gvsig.fmap.dal.file.jimi.MemoryImage;
46
import org.gvsig.fmap.dal.file.jimi.JimiRasterStoreProviderFactory;
47
import org.gvsig.fmap.dal.file.jimi.JimiRasterStoreProviderParameters;
47 48
import org.gvsig.fmap.dal.raster.api.RasterQuery;
48
import org.gvsig.fmap.dal.raster.api.RasterSet;
49 49
import org.gvsig.fmap.dal.raster.api.RasterStore;
50 50
import org.gvsig.fmap.dal.raster.api.RasterStoreNotification;
51
import org.gvsig.fmap.dal.raster.impl.DefaultRasterStore;
51
import org.gvsig.fmap.dal.raster.spi.NewRasterStoreParameters;
52
import org.gvsig.fmap.dal.spi.DALSPILocator;
53
import org.gvsig.fmap.dal.spi.DataManagerProviderServices;
52 54
import org.gvsig.fmap.geom.Geometry.SUBTYPES;
53 55
import org.gvsig.fmap.geom.GeometryLocator;
54 56
import org.gvsig.fmap.geom.GeometryManager;
......
61 63
import org.gvsig.fmap.mapcontext.raster.api.RasterLayer;
62 64
import org.gvsig.fmap.mapcontext.raster.api.RasterLegendChangedListener;
63 65
import org.gvsig.metadata.exceptions.MetadataException;
64
import org.gvsig.raster.lib.buffer.api.Band;
65
import org.gvsig.raster.lib.buffer.api.BandInfo;
66
import org.gvsig.raster.lib.buffer.api.Buffer;
67
import org.gvsig.raster.lib.buffer.api.exceptions.BufferException;
66 68
import org.gvsig.raster.lib.legend.api.ColorInterpretation;
67
import org.gvsig.raster.lib.legend.api.ColorTable;
68
import org.gvsig.raster.lib.legend.api.ColorTableClass;
69 69
import org.gvsig.raster.lib.legend.api.RasterLegend;
70
import org.gvsig.raster.lib.legend.api.RasterLegendLocator;
71
import org.gvsig.raster.lib.legend.api.RasterLegendManager;
70 72
import org.gvsig.tools.ToolsLocator;
71 73
import org.gvsig.tools.dispose.DisposeUtils;
74
import org.gvsig.tools.dynobject.DynObject;
72 75
import org.gvsig.tools.dynobject.exception.DynMethodException;
73 76
import org.gvsig.tools.dynobject.exception.DynMethodNotSupportedException;
74 77
import org.gvsig.tools.exception.BaseException;
75 78
import org.gvsig.tools.task.Cancellable;
76 79
import org.gvsig.tools.task.SimpleTaskStatus;
77 80
import org.gvsig.tools.task.TaskStatusManager;
78

  
79 81
import org.slf4j.LoggerFactory;
80 82

  
81 83
/**
......
163 165
        }
164 166

  
165 167
        this.store = (RasterStore) dataStore;
168
        //FIXME:To test only
169
        try {
170
            copyStoreTestMethod (this.store);
171
        } catch (Exception e) {
172
            // TODO Auto-generated catch block
173
            e.printStackTrace();
174
        }
166 175
        ToolsLocator.getDisposableManager().bind(dataStore);
167 176
        initLegend();
168 177
    }
169 178

  
170 179
    /**
180
     * To test only
181
     * @param store
182
     * @throws ValidateDataParametersException
183
     * @throws DataException
184
     * @throws BufferException
185
     */
186
    private void copyStoreTestMethod(RasterStore store) throws Exception{
187
        //FIXME: To test only. Remove afterwards
188
        exportGTiff(store);
189
//        exportBMP(store);
190
//        exportNetCDF(store);
191
//        exportPNG(store);
192
//        openPOSTGIS();
193
//        openWCS();
194
//        openWMS();
195
    }
196
    /**
197
     * TO TEST ONLY
198
     * @return
199
     */
200
    private RasterStore openWMS(){
201
        DataManagerProviderServices manager=DALSPILocator.getDataManagerProviderServices();
202
        DataStoreProviderFactory providerFactory = manager.getStoreProviderFactory("WMS");
203
        DynObject params = providerFactory.createParameters();
204

  
205
        if (params.getDynClass().getDynField("crs")!=null){
206
            params.setDynValue("crs", CRSFactory.getCRS("EPSG:23030"));
207
        }
208

  
209
        RasterStore store=null;
210
        try {
211
            store = (RasterStore) manager.openStore("WMS",params);
212
        } catch (ValidateDataParametersException | InitializeException
213
            | ProviderNotRegisteredException e) {
214
            logger.info("**** error opening store *****", e);
215
        }
216
        if (store!=null){
217
            logger.info("**** ??????? O.K !!!!!!! *****");
218
        }else{
219
            logger.info("**** K.O ;_( *****");
220
        }
221
        try {
222
            exportGTiff(store);
223
        } catch (ValidateDataParametersException | DataException
224
            | BufferException e) {
225
            logger.info("failed to copy");
226
        }
227
        return store;
228

  
229
    }
230

  
231
    /**
232
     * TO TEST ONLY
233
     * @return
234
     */
235
    private RasterStore openWCS(){
236
        DataManagerProviderServices manager=DALSPILocator.getDataManagerProviderServices();
237
        DataStoreProviderFactory providerFactory = manager.getStoreProviderFactory("WCS");
238
        DynObject params = providerFactory.createParameters();
239

  
240
        if (params.getDynClass().getDynField("url")!=null){
241
            params.setDynValue("url", "http://inspire.cop.gva.es/mapserver/wcs?");
242
        }
243
        if (params.getDynClass().getDynField("coverage")!=null){
244
            params.setDynValue("coverage", "MDT");
245
        }
246
        if (params.getDynClass().getDynField("crs")!=null){
247
            params.setDynValue("crs", CRSFactory.getCRS("EPSG:23030"));
248
        }
249

  
250
        RasterStore store=null;
251
        try {
252
            store = (RasterStore) manager.openStore("WCS",params);
253
        } catch (ValidateDataParametersException | InitializeException
254
            | ProviderNotRegisteredException e) {
255
            logger.info("**** error opening store *****", e);
256
        }
257
        if (store!=null){
258
            logger.info("**** ??????? O.K !!!!!!! *****");
259
        }else{
260
            logger.info("**** K.O ;_( *****");
261
        }
262
        try {
263
            exportGTiff(store);
264
        } catch (ValidateDataParametersException | DataException
265
            | BufferException e) {
266
            logger.info("failed to copy");
267
        }
268
        return store;
269

  
270
    }
271

  
272
    /**
273
     * TO TEST ONLY
274
     * @return
275
     */
276
    private RasterStore openPOSTGIS(){
277
        DataManagerProviderServices manager=DALSPILocator.getDataManagerProviderServices();
278
        DataStoreProviderFactory providerFactory = manager.getStoreProviderFactory("PostGISRaster");
279
        DynObject params = providerFactory.createParameters();
280
        //PG:host='gvsig-training.com' port='5432'
281
        //dbname='andalucia' user='curso' password='curso' schema='public' table='tr_relieve_andalucia2'
282
        if (params.getDynClass().getDynField("host")!=null){
283
            params.setDynValue("host", "gvsig-training.com");
284
        }
285
        if (params.getDynClass().getDynField("dbname")!=null){
286
            params.setDynValue("dbname", "andalucia");
287
        }
288
        if (params.getDynClass().getDynField("table")!=null){
289
            params.setDynValue("table", "tr_relieve_andalucia2");
290
        }
291
        if (params.getDynClass().getDynField("schema")!=null){
292
            params.setDynValue("schema", "public");
293
        }
294
        if (params.getDynClass().getDynField("user")!=null){
295
            params.setDynValue("user", "curso");
296
        }
297
        if (params.getDynClass().getDynField("password")!=null){
298
            params.setDynValue("password", "curso");
299
        }
300
        if (params.getDynClass().getDynField("port")!=null){
301
            params.setDynValue("port", 5432);
302
        }
303
        if (params.getDynClass().getDynField("crs")!=null){
304
            params.setDynValue("crs", CRSFactory.getCRS("EPSG:23030"));
305
        }
306

  
307
        RasterStore store=null;
308
        try {
309
            store = (RasterStore) manager.openStore("PostGISRaster",params);
310
        } catch (ValidateDataParametersException | InitializeException
311
            | ProviderNotRegisteredException e) {
312
            logger.info("**** error opening store *****", e);
313
        }
314
        if (store!=null){
315
            logger.info("**** ??????? O.K !!!!!!! *****");
316
        }else{
317
            logger.info("**** K.O ;_( *****");
318
        }
319
        try {
320
            exportPNG(store);
321
        } catch (ValidateDataParametersException | DataException
322
            | BufferException e) {
323
            logger.info("failed to copy");
324
        }
325
        return store;
326

  
327
    }
328

  
329
    /**
330
     * TO TEST ONLY
331
     * @return
332
     */
333
    private void exportPNG(RasterStore store)
334
        throws InitializeException, ProviderNotRegisteredException,
335
        ValidateDataParametersException, DataException, BufferException {
336
        String providerName="PNG";
337
        String extension="png";
338

  
339
        DataManagerProviderServices manager=DALSPILocator.getDataManagerProviderServices();
340
        DataServerExplorerParameters eparams = manager.createServerExplorerParameters("FilesystemExplorer");
341
        int count = 0;
342
        String path = "/home/daniel/pruebas/datosPruebaRaster/copiedFile."+extension;
343
        File destFile=new File(path);
344
        while(destFile.exists()){
345
            count++;
346
            path = "/home/daniel/pruebas/datosPruebaRaster/copiedFile_"+count+"."+extension;
347
            destFile=new File(path);
348
        }
349
        eparams.setDynValue("initialpath",path);
350
        DataServerExplorer serverExplorer= manager.createServerExplorer(eparams);
351

  
352
        NewRasterStoreParameters params =(NewRasterStoreParameters) serverExplorer.getAddParameters(providerName);
353
        params.setDynValue("file",destFile);
354

  
355
        params.setDynValue("worldfile", false);
356
        params.setDynValue("zlevel", 1);
357

  
358
        Buffer buffer=store.getRasterSet().clip(store.getEnvelope());
359
        params.setBuffer(buffer);
360
        serverExplorer.add(providerName, params, true);
361
    }
362

  
363
    /**
364
     * TO TEST ONLY
365
     * @return
366
     */
367
    private void exportGTiff(RasterStore store)
368
        throws InitializeException, ProviderNotRegisteredException,
369
        ValidateDataParametersException, DataException, BufferException {
370
        String providerName="GTiff";
371
        String extension="tif";
372

  
373
        DataManagerProviderServices manager=DALSPILocator.getDataManagerProviderServices();
374
        DataServerExplorerParameters eparams = manager.createServerExplorerParameters("FilesystemExplorer");
375
        int count = 0;
376
        String path = "/home/daniel/pruebas/datosPruebaRaster/copiedFile."+extension;
377
        File destFile=new File(path);
378
        while(destFile.exists()){
379
            count++;
380
            path = "/home/daniel/pruebas/datosPruebaRaster/copiedFile_"+count+"."+extension;
381
            destFile=new File(path);
382
        }
383
        eparams.setDynValue("initialpath",path);
384
        DataServerExplorer serverExplorer= manager.createServerExplorer(eparams);
385

  
386
        NewRasterStoreParameters params =(NewRasterStoreParameters) serverExplorer.getAddParameters(providerName);
387
        params.setDynValue("file",destFile);
388

  
389

  
390
        params.setDynValue("compress", "NONE");
391
        params.setDynValue("tfw", false);
392
        params.setDynValue("photometric", "RGB");
393

  
394

  
395
        Buffer buffer=store.getRasterSet().clip(store.getEnvelope());
396
        params.setBuffer(buffer);
397
        serverExplorer.add(providerName, params, true);
398
    }
399

  
400
    /**
401
     * TO TEST ONLY
402
     * @return
403
     */
404
    private void exportBMP(RasterStore store)
405
        throws InitializeException, ProviderNotRegisteredException,
406
        ValidateDataParametersException, DataException, BufferException {
407
        String providerName="BMP";
408
        String extension="bmp";
409

  
410
        DataManagerProviderServices manager=DALSPILocator.getDataManagerProviderServices();
411
        DataServerExplorerParameters eparams = manager.createServerExplorerParameters("FilesystemExplorer");
412
        int count = 0;
413
        String path = "/home/daniel/pruebas/datosPruebaRaster/copiedFile."+extension;
414
        File destFile=new File(path);
415
        while(destFile.exists()){
416
            count++;
417
            path = "/home/daniel/pruebas/datosPruebaRaster/copiedFile_"+count+"."+extension;
418
            destFile=new File(path);
419
        }
420
        eparams.setDynValue("initialpath",path);
421
        DataServerExplorer serverExplorer= manager.createServerExplorer(eparams);
422

  
423
        NewRasterStoreParameters params =(NewRasterStoreParameters) serverExplorer.getAddParameters(providerName);
424
        params.setDynValue("file",destFile);
425

  
426

  
427
        params.setDynValue("worldfile", true);
428

  
429

  
430
        Buffer buffer=store.getRasterSet().clip(store.getEnvelope());
431
        params.setBuffer(buffer);
432
        serverExplorer.add(providerName, params, true);
433
    }
434

  
435
    /**
436
     * TO TEST ONLY
437
     * @return
438
     */
439
    private void exportNetCDF(RasterStore store)
440
        throws InitializeException, ProviderNotRegisteredException,
441
        ValidateDataParametersException, DataException, BufferException {
442
        String providerName="netCDF";
443
        String extension="nc";
444

  
445
        DataManagerProviderServices manager=DALSPILocator.getDataManagerProviderServices();
446
        DataServerExplorerParameters eparams = manager.createServerExplorerParameters("FilesystemExplorer");
447
        int count = 0;
448
        String path = "/home/daniel/pruebas/datosPruebaRaster/copiedFile."+extension;
449
        File destFile=new File(path);
450
        while(destFile.exists()){
451
            count++;
452
            path = "/home/daniel/pruebas/datosPruebaRaster/copiedFile_"+count+"."+extension;
453
            destFile=new File(path);
454
        }
455
        eparams.setDynValue("initialpath",path);
456
        DataServerExplorer serverExplorer= manager.createServerExplorer(eparams);
457

  
458
        NewRasterStoreParameters params =(NewRasterStoreParameters) serverExplorer.getAddParameters(providerName);
459
        params.setDynValue("file",destFile);
460
        //params.setDynValue("format", "NC4C");
461
//        params.setDynValue("pixeltype", "DEFAULT");
462
        params.setDynValue("chunking", false);
463

  
464
        Buffer buffer=store.getRasterSet().clip(store.getEnvelope());
465
        params.setBuffer(buffer);
466
        serverExplorer.add(providerName, params, true);
467
    }
468

  
469
    /**
171 470
     * Initializes the legend if it is not initalized yet
172 471
     * @throws LegendLayerException
173 472
     */

Also available in: Unified diff