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 | ||
---|---|---|
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 |
} |
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/RasterGdalGTiffStoreProvider.java | ||
---|---|---|
181 | 181 |
Calling this method is generally not sufficient to ensure that the file is in a consistent state. You must call delete() for that |
182 | 182 |
|
183 | 183 |
*/ |
184 |
try { |
|
185 |
gdalDataset.wait(); |
|
186 |
} catch (InterruptedException e) { |
|
187 |
logger.warn("An error has ocurred waiting for the cache is flushed.", e); |
|
188 |
} |
|
184 |
// try {
|
|
185 |
// gdalDataset.wait();
|
|
186 |
// } catch (InterruptedException e) {
|
|
187 |
// logger.warn("An error has ocurred waiting for the cache is flushed.", e);
|
|
188 |
// }
|
|
189 | 189 |
gdalDataset.delete(); |
190 | 190 |
} |
191 | 191 |
|
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/RasterGdalStoreProviderCreate.java | ||
---|---|---|
55 | 55 |
if (file.exists() && !overwrite){ |
56 | 56 |
throw new CreateException("File already exists: "+file.toString(), null); |
57 | 57 |
} |
58 |
Dataset gdalDataset; |
|
59 |
if (options.length== 0) { |
|
60 |
gdalDataset = gdalDriver.Create(file.getAbsolutePath(), |
|
61 |
buffer.getColumns(), buffer.getRows(), buffer.getBandCount()); |
|
62 |
} else { |
|
63 |
gdalDataset = |
|
64 |
gdalDriver.Create(file.getAbsolutePath(), buffer.getColumns(), |
|
65 |
buffer.getRows(), buffer.getBandCount(), options); |
|
66 |
} |
|
67 |
IProjection projection = buffer.getProjection(); |
|
58 |
Dataset gdalDataset = null; |
|
59 |
try { |
|
60 |
if (options.length == 0) { |
|
61 |
gdalDataset = |
|
62 |
gdalDriver.Create(file.getAbsolutePath(), buffer.getColumns(), buffer.getRows(), |
|
63 |
buffer.getBandCount()); |
|
64 |
} else { |
|
65 |
gdalDataset = |
|
66 |
gdalDriver.Create(file.getAbsolutePath(), buffer.getColumns(), buffer.getRows(), |
|
67 |
buffer.getBandCount(), options); |
|
68 |
} |
|
69 |
IProjection projection = buffer.getProjection(); |
|
68 | 70 |
|
69 |
if (projection!=null){
|
|
70 |
String wkt=projection.export(ICRSFactory.FORMAT_WKT_ESRI);
|
|
71 |
gdalDataset.SetProjection(wkt); |
|
72 |
} |
|
73 |
gdalDataset.SetGeoTransform(createGeoTransform(buffer)); |
|
71 |
if (projection != null) {
|
|
72 |
String wkt = projection.export(ICRSFactory.FORMAT_WKT_ESRI);
|
|
73 |
gdalDataset.SetProjection(wkt);
|
|
74 |
}
|
|
75 |
gdalDataset.SetGeoTransform(createGeoTransform(buffer));
|
|
74 | 76 |
|
75 |
fillDataset(buffer, gdalDataset); |
|
76 |
|
|
77 |
if (gdalDataset!=null){ |
|
77 |
fillDataset(buffer, gdalDataset); |
|
78 | 78 |
gdalDataset.FlushCache(); |
79 |
} finally { |
|
80 |
if (gdalDataset != null) { |
|
81 |
gdalDataset.delete(); |
|
82 |
} |
|
79 | 83 |
} |
80 | 84 |
//Create WLD |
81 | 85 |
try { |
... | ... | |
84 | 88 |
throw new CreateException("WLD File", e); |
85 | 89 |
} |
86 | 90 |
} |
87 |
|
|
88 |
|
|
89 |
|
|
90 |
|
|
91 | 91 |
} |
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/RasterGdalFileStoreParameters.java | ||
---|---|---|
34 | 34 |
import org.gdal.gdal.Dataset; |
35 | 35 |
import org.gdal.gdal.gdal; |
36 | 36 |
import org.gdal.gdalconst.gdalconstConstants; |
37 |
import org.slf4j.Logger; |
|
38 |
import org.slf4j.LoggerFactory; |
|
39 |
|
|
37 | 40 |
import org.gvsig.fmap.crs.CRSFactory; |
38 | 41 |
import org.gvsig.fmap.dal.raster.spi.OpenRasterStoreParameters; |
39 | 42 |
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemStoreParameters; |
40 | 43 |
import org.gvsig.tools.dynobject.DynClass_v2; |
41 |
import org.gvsig.tools.dynobject.DynStruct_v2; |
|
42 | 44 |
import org.gvsig.tools.dynobject.Tags; |
43 |
import org.slf4j.Logger; |
|
44 |
import org.slf4j.LoggerFactory; |
|
45 | 45 |
|
46 | 46 |
/** |
47 | 47 |
* Parameters to create a GDAL Provider |
... | ... | |
99 | 99 |
} |
100 | 100 |
loadWLD(file); |
101 | 101 |
if (getCRS()==null){ |
102 |
Dataset gdalDatasSet = gdal.Open(this.getFile().getAbsolutePath(),gdalconstConstants.GA_ReadOnly); |
|
103 |
String projection=gdalDatasSet.GetProjection(); |
|
102 |
Dataset gdalDataset = null; |
|
103 |
try{ |
|
104 |
gdalDataset = gdal.Open(this.getFile().getAbsolutePath(),gdalconstConstants.GA_ReadOnly); |
|
105 |
String projection=gdalDataset.GetProjection(); |
|
104 | 106 |
if (StringUtils.isNotEmpty(projection)){ |
105 | 107 |
ICRSFactory crsFactory = CRSFactory.getCRSFactory(); |
106 | 108 |
IProjection crs=crsFactory.get(ICRSFactory.FORMAT_WKT, projection); |
107 | 109 |
setCRS(crs); |
108 | 110 |
} |
111 |
} finally { |
|
112 |
if(gdalDataset!=null){ |
|
113 |
gdalDataset.delete(); |
|
114 |
} |
|
115 |
} |
|
109 | 116 |
} |
110 | 117 |
|
111 | 118 |
} |
Also available in: Unified diff