Revision 6489 org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.gdal/org.gvsig.raster.gdal.provider/src/main/java/org/gvsig/raster/gdal/provider/RasterGdalStoreProviderCreateCopy.java

View differences:

RasterGdalStoreProviderCreateCopy.java
16 16

  
17 17
/**
18 18
 * Raster GDAL store provider that stores new raster through createCopy method
19
 *
19 20
 * @author dmartinezizquierdo
20 21
 *
21 22
 */
22
public class RasterGdalStoreProviderCreateCopy extends DefaultRasterGdalStoreProvider{
23
    private final static String AUX_DRIVER_NAME="MEM";
23
public class RasterGdalStoreProviderCreateCopy extends DefaultRasterGdalStoreProvider {
24 24

  
25
    private final static String AUX_DRIVER_NAME = "MEM";
26

  
25 27
    protected RasterGdalStoreProviderCreateCopy(RasterGdalFileStoreParameters params,
26
        DataStoreProviderServices storeServices, DynObject metadata)
27
        throws InitializeException {
28
        DataStoreProviderServices storeServices, DynObject metadata) throws InitializeException {
28 29
        super(params, storeServices, metadata);
29 30
    }
30 31

  
31 32
    /**
32 33
     * Constructor
34
     *
33 35
     * @param params
34 36
     * @param storeServices
35 37
     * @throws InitializeException
......
39 41
        super(params, storeServices);
40 42
    }
41 43

  
42
    protected RasterGdalStoreProviderCreateCopy(NewRasterGdalStoreParameters params,
43
        Driver gdalDriver) {
44
    protected RasterGdalStoreProviderCreateCopy(NewRasterGdalStoreParameters params, Driver gdalDriver) {
44 45
        super(params, gdalDriver);
45 46
    }
46 47

  
47 48
    @Override
48
    public void store(boolean overwrite)
49
        throws CreateException {
50
        NewRasterGdalStoreParameters newRasterParams = (NewRasterGdalStoreParameters)this.getParameters();
51
        File file=newRasterParams.getFile();
52
        Buffer buffer=newRasterParams.getBuffer();
49
    public void store(boolean overwrite) throws CreateException {
50
        NewRasterGdalStoreParameters newRasterParams = (NewRasterGdalStoreParameters) this.getParameters();
51
        File file = newRasterParams.getFile();
52
        Buffer buffer = newRasterParams.getBuffer();
53 53

  
54 54
        String[] options = getStoringOptions(newRasterParams);
55 55

  
56

  
57
        if (file.exists() && !overwrite){
58
            throw new CreateException("File already exists: "+file.toString(), null);
56
        if (file.exists() && !overwrite) {
57
            throw new CreateException("File already exists: " + file.toString(), null);
59 58
        }
60
        Dataset gdalDataset;
61
        //Provider driver doesn't support create
62
        //So we create another raster with a driver that supports it
63
        //and get its copy with our Provider driver
59
        Dataset gdalDataset = null;
60
        // Provider driver doesn't support create
61
        // So we create another raster with a driver that supports it
62
        // and get its copy with our Provider driver
64 63

  
65
        Driver auxDriver = gdal.GetDriverByName( AUX_DRIVER_NAME );
66
        Dataset auxDataset = auxDriver.Create("",buffer.getColumns(), buffer.getRows(), buffer.getBandCount());
64
        try {
65
            Driver auxDriver = gdal.GetDriverByName(AUX_DRIVER_NAME);
66
            Dataset auxDataset = auxDriver.Create("", buffer.getColumns(), buffer.getRows(), buffer.getBandCount());
67 67

  
68
        IProjection projection = buffer.getProjection();
68
            IProjection projection = buffer.getProjection();
69 69

  
70
        if (projection!=null){
71
            String wkt=projection.export(ICRSFactory.FORMAT_WKT_ESRI);
72
            auxDataset.SetProjection(wkt);
73
        }
74
        auxDataset.SetGeoTransform(createGeoTransform(buffer));
70
            if (projection != null) {
71
                String wkt = projection.export(ICRSFactory.FORMAT_WKT_ESRI);
72
                auxDataset.SetProjection(wkt);
73
            }
74
            auxDataset.SetGeoTransform(createGeoTransform(buffer));
75 75

  
76
        fillDataset(buffer, auxDataset);
76
            fillDataset(buffer, auxDataset);
77 77

  
78
        if (options.length== 0) {
79
            gdalDataset = gdalDriver.CreateCopy(file.getAbsolutePath(), auxDataset);
80
        } else {
81
            gdalDataset = gdalDriver.CreateCopy(file.getAbsolutePath(), auxDataset, options);
82
        }
83

  
84
        if (gdalDataset!=null){
78
            if (options.length == 0) {
79
                gdalDataset = gdalDriver.CreateCopy(file.getAbsolutePath(), auxDataset);
80
            } else {
81
                gdalDataset = gdalDriver.CreateCopy(file.getAbsolutePath(), auxDataset, options);
82
            }
85 83
            gdalDataset.FlushCache();
84
        } finally {
85
            if (gdalDataset != null) {
86
                gdalDataset.delete();
87
            }
86 88
        }
87
        //Create WLD
89
        // Create WLD
88 90
        try {
89
            createWorldFile(file,  buffer);
91
            createWorldFile(file, buffer);
90 92
        } catch (IOException e) {
91 93
            throw new CreateException("WLD File", e);
92 94
        }
93 95
    }
94 96

  
95

  
96 97
}

Also available in: Unified diff