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
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