Revision 2241
org.gvsig.raster.tools/branches/org.gvsig.raster.tools_dataaccess_refactoring/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/tool/viewexport/Export.java | ||
---|---|---|
1 |
/* gvSIG. Geographic Information System of the Valencian Government |
|
2 |
* |
|
3 |
* Copyright (C) 2007-2008 Infrastructures and Transports Department |
|
4 |
* of the Valencian Government (CIT) |
|
5 |
* |
|
6 |
* This program is free software; you can redistribute it and/or |
|
7 |
* modify it under the terms of the GNU General Public License |
|
8 |
* as published by the Free Software Foundation; either version 2 |
|
9 |
* of the License, or (at your option) any later version. |
|
10 |
* |
|
11 |
* This program is distributed in the hope that it will be useful, |
|
12 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
13 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
14 |
* GNU General Public License for more details. |
|
15 |
* |
|
16 |
* You should have received a copy of the GNU General Public License |
|
17 |
* along with this program; if not, write to the Free Software |
|
18 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, |
|
19 |
* MA 02110-1301, USA. |
|
20 |
* |
|
21 |
*/ |
|
22 | 1 |
package org.gvsig.raster.tools.app.basic.tool.viewexport; |
23 | 2 |
|
24 | 3 |
import java.awt.Component; |
... | ... | |
34 | 13 |
import javax.swing.filechooser.FileFilter; |
35 | 14 |
|
36 | 15 |
import org.gvsig.andami.PluginServices; |
37 |
import org.gvsig.andami.messages.NotificationManager; |
|
38 | 16 |
import org.gvsig.andami.plugins.Extension; |
39 | 17 |
import org.gvsig.andami.ui.mdiManager.IWindow; |
40 | 18 |
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel; |
... | ... | |
48 | 26 |
import org.gvsig.fmap.dal.coverage.store.DataServerWriter; |
49 | 27 |
import org.gvsig.fmap.dal.coverage.store.RasterWriter; |
50 | 28 |
import org.gvsig.fmap.mapcontext.layers.FLayers; |
29 |
import org.slf4j.Logger; |
|
30 |
import org.slf4j.LoggerFactory; |
|
51 | 31 |
|
52 | 32 |
import com.sun.jimi.core.Jimi; |
53 | 33 |
import com.sun.jimi.core.JimiException; |
54 | 34 |
|
55 | 35 |
|
56 | 36 |
/** |
57 |
* Extensi?n para exportar en algunos formatos raster la vista actual. |
|
58 |
* |
|
59 |
* @author Fernando Gonz?lez Cort?s |
|
37 |
* Plugin to export the view to image |
|
60 | 38 |
*/ |
61 | 39 |
public class Export extends Extension { |
62 |
private String lastPath = null; |
|
63 |
private Hashtable<String, MyFileFilter> cmsExtensionsSupported = null; |
|
40 |
private Logger log = LoggerFactory.getLogger(Export.class); |
|
41 |
private String lastPath = null; |
|
42 |
private Hashtable<String, MyFileFilter> cmsExtensionsSupported = null; |
|
64 | 43 |
private Hashtable<String, MyFileFilter> jimiExtensionsSupported = null; |
65 | 44 |
|
66 |
/** |
|
67 |
* @see org.gvsig.andami.plugins.IExtension#isEnabled() |
|
68 |
*/ |
|
69 | 45 |
public boolean isEnabled() { |
70 | 46 |
IWindow f = PluginServices.getMDIManager().getActiveWindow(); |
71 | 47 |
|
... | ... | |
82 | 58 |
return false; |
83 | 59 |
} |
84 | 60 |
|
85 |
/** |
|
86 |
* @see com.iver.mdiApp.plugins.IExtension#isVisible() |
|
87 |
*/ |
|
88 | 61 |
public boolean isVisible() { |
89 | 62 |
IWindow f = PluginServices.getMDIManager().getActiveWindow(); |
90 | 63 |
if (f == null) { |
... | ... | |
94 | 67 |
return (f instanceof AbstractViewPanel); |
95 | 68 |
} |
96 | 69 |
|
97 |
/** |
|
98 |
* @see org.gvsig.andami.plugins.IExtension#initialize() |
|
99 |
*/ |
|
100 | 70 |
public void initialize() { |
101 | 71 |
} |
102 | 72 |
|
103 |
/* (non-Javadoc) |
|
104 |
* @see com.iver.andami.plugins.Extension#postInitialize() |
|
105 |
*/ |
|
106 | 73 |
public void postInitialize() { |
107 | 74 |
cmsExtensionsSupported = new Hashtable<String, MyFileFilter>(); |
108 | 75 |
jimiExtensionsSupported = new Hashtable<String, MyFileFilter>(); |
... | ... | |
116 | 83 |
PluginServices.getText(this, "tif"), "cms")); |
117 | 84 |
} |
118 | 85 |
|
119 |
public static boolean saveImageCMS(File fileDst,BufferedImage srcImage) throws IOException, NotSupportedExtensionException, RasterDriverException {
|
|
86 |
public static boolean saveImageCMS(File fileDst,BufferedImage srcImage) throws RasterDriverException, IOException {
|
|
120 | 87 |
RasterManager manager = (RasterManager)RasterLocator.getManager(); |
121 | 88 |
DataServerWriter data = new RasterizerImage(srcImage); |
122 | 89 |
RasterWriter writer = null; |
123 | 90 |
try { |
91 |
/*DataServerExplorerParameters eparams = DALLocator.getDataManager().createServerExplorerParameters("FilesystemExplorer"); |
|
92 |
eparams.setDynValue("initialpath", fileDst.getAbsolutePath()); |
|
93 |
DataServerExplorer serverExplorer = DALLocator.getDataManager().openServerExplorer(eparams.getExplorerName(), eparams); |
|
94 |
NewRasterStoreParameters sparams = (NewRasterStoreParameters)serverExplorer.getAddParameters("Gdal Store"); |
|
95 |
sparams.setDataServer((DataServerWriter)processIncrement); |
|
96 |
sparams.setDestination(path, file); |
|
97 |
sparams.setBuffer(buffer); |
|
98 |
sparams.setColorInterpretation(new String[]{ColorInterpretation.GRAY_BAND}); |
|
99 |
sparams.setWktProjection(dstoreCopy.getWktProjection()); |
|
100 |
sparams.setBand(i); |
|
101 |
sparams.setAffineTransform(affineTransform); |
|
102 |
sparams.setDriverParams(params); |
|
103 |
serverExplorer.add(provider, sparams, true);*/ |
|
104 |
|
|
124 | 105 |
Params params = manager.createWriter(fileDst.getAbsolutePath()).getParams(); |
125 | 106 |
params.changeParamValue("blocksize", "7"); //posici?n 7 del array -> 512 |
126 | 107 |
params.changeParamValue("tfw", "false"); |
... | ... | |
128 | 109 |
writer = manager.createWriter(data, |
129 | 110 |
fileDst.getAbsolutePath(), |
130 | 111 |
3, |
131 |
new AffineTransform(), |
|
112 |
new AffineTransform(1, 0, 0, -1, 0, 0),
|
|
132 | 113 |
srcImage.getWidth(), |
133 | 114 |
srcImage.getHeight(), |
134 | 115 |
Buffer.TYPE_IMAGE, |
... | ... | |
217 | 198 |
try { |
218 | 199 |
saveImageCMS(f, tempImage); |
219 | 200 |
} catch (IOException e) { |
220 |
NotificationManager.addError("Error exportando la imagen", e); |
|
221 |
} catch (NotSupportedExtensionException e) { |
|
222 |
NotificationManager.addError("Error exportando la imagen: formato no soportado", e); |
|
201 |
log.debug("Error exportando la imagen", e); |
|
223 | 202 |
} catch (RasterDriverException e) { |
224 |
NotificationManager.addError("Error exportando la imagen", e);
|
|
203 |
log.debug("Error exportando la imagen", e);
|
|
225 | 204 |
} |
226 | 205 |
}else if (filter.getInfo().equalsIgnoreCase("jimi")) { |
227 | 206 |
try { |
228 | 207 |
saveImageJimi(f, tempImage); |
229 | 208 |
} catch (Exception e) { |
230 |
NotificationManager.addError("Error exportando la imagen", e);
|
|
209 |
log.debug("Error exportando la imagen", e);
|
|
231 | 210 |
} |
232 | 211 |
|
233 | 212 |
} |
org.gvsig.raster.tools/branches/org.gvsig.raster.tools_dataaccess_refactoring/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/raster/process/FilterProcess.java | ||
---|---|---|
1 |
/* gvSIG. Geographic Information System of the Valencian Government |
|
2 |
* |
|
3 |
* Copyright (C) 2007-2008 Infrastructures and Transports Department |
|
4 |
* of the Valencian Government (CIT) |
|
5 |
* |
|
6 |
* This program is free software; you can redistribute it and/or |
|
7 |
* modify it under the terms of the GNU General Public License |
|
8 |
* as published by the Free Software Foundation; either version 2 |
|
9 |
* of the License, or (at your option) any later version. |
|
10 |
* |
|
11 |
* This program is distributed in the hope that it will be useful, |
|
12 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
13 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
14 |
* GNU General Public License for more details. |
|
15 |
* |
|
16 |
* You should have received a copy of the GNU General Public License |
|
17 |
* along with this program; if not, write to the Free Software |
|
18 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, |
|
19 |
* MA 02110-1301, USA. |
|
20 |
* |
|
21 |
*/ |
|
22 | 1 |
package org.gvsig.raster.tools.app.basic.raster.process; |
23 | 2 |
|
24 | 3 |
import java.io.IOException; |
... | ... | |
67 | 46 |
private FLyrRaster lyr = null; |
68 | 47 |
private RasterManager rManager = RasterLocator.getManager(); |
69 | 48 |
|
70 |
/* |
|
71 |
* (non-Javadoc) |
|
72 |
* @see org.gvsig.rastertools.RasterProcess#init() |
|
73 |
*/ |
|
74 | 49 |
@SuppressWarnings("unchecked") |
75 | 50 |
public void init() { |
76 | 51 |
filename = getStringParam("filename"); |
... | ... | |
120 | 95 |
return colorInterpretation; |
121 | 96 |
} |
122 | 97 |
|
123 |
/* |
|
124 |
* (non-Javadoc) |
|
125 |
* @see org.gvsig.rastertools.RasterProcess#process() |
|
126 |
*/ |
|
127 | 98 |
public void process() throws ProcessInterruptedException, ProcessException { |
128 | 99 |
DataServerWriter writerBufferServer = null; |
129 | 100 |
if(lyr != null) |
... | ... | |
318 | 289 |
filterList.resetPercent(); |
319 | 290 |
} |
320 | 291 |
|
321 |
/* |
|
322 |
* (non-Javadoc) |
|
323 |
* @see org.gvsig.gui.beans.incrementabletask.IIncrementable#getPercent() |
|
324 |
*/ |
|
325 | 292 |
public int getPercent() { |
326 | 293 |
if (rasterFilterList == null) |
327 | 294 |
return 0; |
... | ... | |
335 | 302 |
return geoRasterWriter.getPercent(); |
336 | 303 |
} |
337 | 304 |
|
338 |
/* |
|
339 |
* (non-Javadoc) |
|
340 |
* @see org.gvsig.gui.beans.incrementabletask.IIncrementable#getTitle() |
|
341 |
*/ |
|
342 | 305 |
public String getTitle() { |
343 | 306 |
return PluginServices.getText(this, "aplicando_filtros"); |
344 | 307 |
} |
345 | 308 |
|
346 |
/* |
|
347 |
* (non-Javadoc) |
|
348 |
* @see org.gvsig.raster.tools.app.basic.raster.process.RasterProcess#dispose() |
|
349 |
*/ |
|
350 | 309 |
public void dispose() { |
351 | 310 |
rasterDataSource = null; |
352 | 311 |
if(listFilterUsed != null) { |
... | ... | |
358 | 317 |
lyr = null; |
359 | 318 |
} |
360 | 319 |
|
361 |
/* |
|
362 |
* (non-Javadoc) |
|
363 |
* @see java.lang.Object#finalize() |
|
364 |
*/ |
|
365 | 320 |
@Override |
366 | 321 |
protected void finalize() throws Throwable { |
367 | 322 |
dispose(); |
org.gvsig.raster/branches/org.gvsig.raster_dataaccess_refactoring/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/buffer/DefaultRasterQuery.java | ||
---|---|---|
46 | 46 |
public static final int TYPE_TILED = 8; |
47 | 47 |
public static final int TYPE_ONE_TILE = 9; |
48 | 48 |
|
49 |
private int type = -1;
|
|
49 |
private int type = TYPE_ENTIRE;
|
|
50 | 50 |
/* |
51 | 51 |
* Request in pixels |
52 | 52 |
*/ |
... | ... | |
917 | 917 |
this.bufferForProviders = buffer; |
918 | 918 |
} |
919 | 919 |
|
920 |
/** |
|
921 |
* Buffer without adjust to the source limits. This is useful for |
|
922 |
* request with shift. Normally the result will have frames with nodata |
|
923 |
* values |
|
924 |
* @return |
|
925 |
*/ |
|
926 |
/*public Buffer getBufferWithoutAdjust() { |
|
927 |
return bufferWithoutAdjust; |
|
928 |
}*/ |
|
929 |
|
|
930 |
/** |
|
931 |
* Buffer without adjust to the source limits. This is useful for |
|
932 |
* request with shift. Normally the result will have frames with nodata |
|
933 |
* values |
|
934 |
*/ |
|
935 |
/*public void setBufferWithoutAdjust(Buffer buffer) { |
|
936 |
this.bufferWithoutAdjust = buffer; |
|
937 |
}*/ |
|
938 |
|
|
939 | 920 |
public double[] getStep() { |
940 | 921 |
return step; |
941 | 922 |
} |
org.gvsig.raster/branches/org.gvsig.raster_dataaccess_refactoring/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/buffer/SpiRasterQuery.java | ||
---|---|---|
42 | 42 |
public Rectangle getAdjustedRequestPxWindow(); |
43 | 43 |
|
44 | 44 |
/** |
45 |
* Gets the window of the request in pixel coordinates |
|
46 |
*/ |
|
47 |
public Rectangle getRequestPxWindow(); |
|
48 |
|
|
49 |
/** |
|
50 |
* Gets a bounding box of a request in world coordinates without adjust to the layer limits. |
|
51 |
*/ |
|
52 |
public Extent getRequestBoundingBox(); |
|
53 |
|
|
54 |
/** |
|
45 | 55 |
* Gets a bounding box of a request in world coordinates adjusted to the bounding box of the source. |
46 | 56 |
*/ |
47 | 57 |
public Extent getAdjustedRequestBoundingBox(); |
58 |
|
|
59 |
public int getBufWidth(); |
|
48 | 60 |
|
49 |
|
|
61 |
public int getBufHeight(); |
|
62 |
|
|
50 | 63 |
public int getAdjustedBufWidth(); |
51 | 64 |
|
52 | 65 |
public int getAdjustedBufHeight(); |
... | ... | |
60 | 73 |
public int getTileCol(); |
61 | 74 |
|
62 | 75 |
public int getResolutionLevel(); |
76 |
|
|
63 | 77 |
/** |
64 | 78 |
* Gets the task status |
65 | 79 |
*/ |
org.gvsig.raster/branches/org.gvsig.raster_dataaccess_refactoring/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/provider/tile/BaseTileDownloader.java | ||
---|---|---|
22 | 22 |
package org.gvsig.raster.impl.provider.tile; |
23 | 23 |
|
24 | 24 |
import java.awt.Graphics; |
25 |
import java.awt.Rectangle; |
|
26 | 25 |
import java.awt.color.ColorSpace; |
27 | 26 |
import java.awt.geom.AffineTransform; |
28 | 27 |
import java.awt.image.BufferedImage; |
... | ... | |
33 | 32 |
import org.gvsig.fmap.dal.coverage.RasterLocator; |
34 | 33 |
import org.gvsig.fmap.dal.coverage.RasterManager; |
35 | 34 |
import org.gvsig.fmap.dal.coverage.dataset.Buffer; |
35 |
import org.gvsig.fmap.dal.coverage.dataset.BufferParam; |
|
36 | 36 |
import org.gvsig.fmap.dal.coverage.datastruct.BandList; |
37 | 37 |
import org.gvsig.fmap.dal.coverage.datastruct.DatasetBand; |
38 | 38 |
import org.gvsig.fmap.dal.coverage.datastruct.Extent; |
39 | 39 |
import org.gvsig.fmap.dal.coverage.datastruct.NoData; |
40 | 40 |
import org.gvsig.fmap.dal.coverage.datastruct.Params; |
41 | 41 |
import org.gvsig.fmap.dal.coverage.exception.BandNotFoundInListException; |
42 |
import org.gvsig.fmap.dal.coverage.exception.BufferCreationException; |
|
42 | 43 |
import org.gvsig.fmap.dal.coverage.exception.NotSupportedExtensionException; |
43 | 44 |
import org.gvsig.fmap.dal.coverage.exception.ProcessInterruptedException; |
44 | 45 |
import org.gvsig.fmap.dal.coverage.exception.QueryException; |
... | ... | |
60 | 61 |
import org.gvsig.raster.impl.provider.RasterProvider; |
61 | 62 |
import org.gvsig.raster.impl.store.DefaultRasterStore; |
62 | 63 |
import org.gvsig.raster.util.DefaultProviderServices; |
64 |
import org.gvsig.tools.locator.LocatorException; |
|
65 |
import org.slf4j.Logger; |
|
66 |
import org.slf4j.LoggerFactory; |
|
63 | 67 |
|
64 | 68 |
/** |
65 | 69 |
* Base class for downloaders |
66 | 70 |
* @author Nacho Brodin (nachobrodin@gmail.com) |
67 | 71 |
*/ |
68 | 72 |
public abstract class BaseTileDownloader implements Downloader { |
73 |
private Logger log = LoggerFactory.getLogger(BaseTileDownloader.class); |
|
69 | 74 |
protected int tilePxWidth = 0; |
70 | 75 |
protected int tilePxHeight = 0; |
71 |
protected RasterDataStore store = null;
|
|
76 |
protected RasterDataStore store = null; |
|
72 | 77 |
protected byte byteNoData = (byte)0x00; |
73 | 78 |
protected short shortNoData = Short.MIN_VALUE; |
74 | 79 |
protected int intNoData = Integer.MIN_VALUE; |
... | ... | |
109 | 114 |
Buffer buf = RasterDefaultImplLibrary.defaultImages.get(key); |
110 | 115 |
Buffer alpha = RasterDefaultImplLibrary.defaultImages.get(key + "_Alpha"); |
111 | 116 |
if(buf == null) { |
112 |
buf = RasterLocator.getManager().createBuffer(Buffer.TYPE_BYTE, w, h, 3, true); |
|
113 |
alpha = RasterLocator.getManager().createBuffer(Buffer.TYPE_BYTE, w, h, 1, true); |
|
117 |
try { |
|
118 |
BufferParam par = RasterLocator.getManager().getBufferFactory().createBufferParams(w, h, 3, Buffer.TYPE_BYTE, true); |
|
119 |
buf = RasterLocator.getManager().getBufferFactory().createBuffer(par); |
|
120 |
|
|
121 |
BufferParam parAlpha = RasterLocator.getManager().getBufferFactory().createBufferParams(w, h, 1, Buffer.TYPE_BYTE, true); |
|
122 |
alpha = RasterLocator.getManager().getBufferFactory().createBuffer(parAlpha); |
|
123 |
} catch (LocatorException e) { |
|
124 |
log.debug("Error creating buffers ", e); |
|
125 |
} catch (BufferCreationException e) { |
|
126 |
log.debug("Error creating buffers ", e); |
|
127 |
} |
|
128 |
|
|
114 | 129 |
byte[] background = new byte[]{-1, -1, -1}; |
115 | 130 |
for (int i = 0; i < buf.getHeight(); i++) |
116 | 131 |
for (int j = 0; j < buf.getWidth(); j++) { |
... | ... | |
176 | 191 |
} |
177 | 192 |
|
178 | 193 |
BandList bandList = (BandList)tile.getDownloaderParams("BandList"); |
179 |
/*for (int j = 0; j < bandList.getBandCount(); j++) { |
|
180 |
bandList.getBand(j).setFileName(tile.getFile().getAbsolutePath()); |
|
181 |
} |
|
182 | 194 |
|
183 |
int mallocNBands = 0; |
|
184 |
if(bandList.getDrawableBands() != null) |
|
185 |
mallocNBands = bandList.getDrawableBands().length; |
|
186 |
else |
|
187 |
mallocNBands = bandList.getDrawableBandsCount();*/ |
|
188 |
|
|
189 | 195 |
try { |
190 | 196 |
DefaultRasterStore tileStore = new DefaultRasterStore(); |
191 | 197 |
AbstractRasterProvider tileProvider = DefaultProviderServices.loadProvider(tile.getFile()); |
192 | 198 |
tileStore.setProvider(tileProvider); |
193 | 199 |
this.tilePxWidth = tile.getWidthPx(); |
194 | 200 |
this.tilePxHeight = tile.getHeightPx(); |
195 |
//int mallocNBands = prov.getDataType()[0] == Buffer.TYPE_BYTE ? provider.getBandCount() - 1 : provider.getBandCount(); |
|
196 |
//Buffer buf = DefaultRasterManager.getInstance().createMemoryBuffer(store.getDataType()[0], this.tilePxWidth, this.tilePxHeight, mallocNBands, true); |
|
197 |
//Buffer transparency = DefaultRasterManager.getInstance().createMemoryBuffer(store.getDataType()[0], this.tilePxWidth, this.tilePxHeight, 1, true); |
|
198 | 201 |
|
199 |
//buf = provider.getWindow((int)0, (int)0, createBandListFromProvider(provider), buf); |
|
200 |
|
|
201 | 202 |
RasterQuery q = RasterLocator.getManager().createQuery(); |
202 |
|
|
203 |
q.setAreaOfInterest(new Rectangle((int)0, (int)0, this.tilePxWidth, this.tilePxHeight)); |
|
204 |
q.setDrawableBands(bandList.getDrawableBands());//;.setBandList(bandList); |
|
203 |
q.setDrawableBands(bandList.getDrawableBands()); |
|
205 | 204 |
Buffer buf = tileStore.query(q); |
206 | 205 |
|
207 | 206 |
if(tileStore.getTransparency().getAlphaBandNumber() >= 0) { |
208 | 207 |
//Lee la banda de transparencia para eliminar la zona del tile que est? fuera de la imagen |
209 |
//BandList newBandList = new BandListImpl(tile.getFile().getAbsolutePath(), tileStore.getBandCount(), tileStore.getDataType()[0]); |
|
210 |
//newBandList.clearDrawableBands(); |
|
211 |
//newBandList.addDrawableBand(0, tileStore.getBandCount() - 1); |
|
212 |
|
|
213 | 208 |
q = RasterLocator.getManager().createQuery(); |
214 |
q.setAreaOfInterest(new Rectangle((int)0, (int)0, this.tilePxWidth, this.tilePxHeight)); |
|
215 | 209 |
q.setDrawableBands(new int[]{tileStore.getBandCount() - 1});//.setBandList(newBandList); |
216 | 210 |
Buffer transparency = tileStore.query(q); |
217 | 211 |
|
org.gvsig.raster/branches/org.gvsig.raster_dataaccess_refactoring/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/store/DefaultStoreFactory.java | ||
---|---|---|
24 | 24 |
import org.gvsig.fmap.dal.DataParameters; |
25 | 25 |
import org.gvsig.fmap.dal.DataStore; |
26 | 26 |
import org.gvsig.fmap.dal.DataStoreFactory; |
27 |
import org.gvsig.fmap.dal.coverage.store.parameter.RemoteStoreParameters; |
|
28 | 27 |
import org.gvsig.fmap.dal.exception.InitializeException; |
29 | 28 |
|
30 | 29 |
/** |
... | ... | |
35 | 34 |
public class DefaultStoreFactory implements DataStoreFactory { |
36 | 35 |
private DataParameters parameters = null; |
37 | 36 |
|
38 |
/* |
|
39 |
* (non-Javadoc) |
|
40 |
* @see org.gvsig.fmap.dal.DataStoreFactory#createStore() |
|
41 |
*/ |
|
42 | 37 |
public DataStore createStore() throws InitializeException { |
43 | 38 |
if(parameters == null) |
44 | 39 |
return null; |
... | ... | |
46 | 41 |
//DataManagerProviderServices dataManager = (DataManagerProviderServices)DALLocator.getDataManager(); |
47 | 42 |
|
48 | 43 |
//Servicio remoto |
49 |
if( parameters instanceof RemoteStoreParameters) { |
|
50 |
/*DefaultRemoteRasterStore store = new DefaultRemoteRasterStore(); |
|
51 |
|
|
52 |
DefaultRasterProvider provider = null; |
|
53 |
try { |
|
54 |
provider = (DefaultRasterProvider)dataManager.createProvider(store, (DataStoreParameters)parameters); |
|
55 |
} catch (ProviderNotRegisteredException e) { |
|
56 |
throw new InitializeException("Provider not register error", e); |
|
57 |
} |
|
58 |
store.setProvider((RemoteRasterProvider)provider); |
|
59 |
return store;*/ |
|
44 |
/*if( parameters instanceof RemoteStoreParameters) { |
|
60 | 45 |
return new DefaultRemoteRasterStore(); |
61 |
} |
|
46 |
} */
|
|
62 | 47 |
|
63 |
//Fichero |
|
64 |
/*RasterManager manager = (DefaultRasterManager)RasterLocator.getManager(); |
|
65 |
try { |
|
66 |
return manager.open((DataStoreParameters)parameters); |
|
67 |
} catch (NotSupportedExtensionException e) { |
|
68 |
throw new InitializeException(e); |
|
69 |
} catch (RasterDriverException e) { |
|
70 |
throw new InitializeException(e); |
|
71 |
}*/ |
|
72 | 48 |
return new DefaultRasterStore(); |
73 | 49 |
} |
74 | 50 |
|
75 |
/* |
|
76 |
* (non-Javadoc) |
|
77 |
* @see org.gvsig.fmap.dal.DataStoreFactory#setParameters(org.gvsig.fmap.dal.DataParameters) |
|
78 |
*/ |
|
79 | 51 |
public void setParameters(DataParameters parameters) { |
80 | 52 |
this.parameters = parameters; |
81 | 53 |
} |
org.gvsig.raster/branches/org.gvsig.raster_dataaccess_refactoring/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/store/AbstractRasterDataStore.java | ||
---|---|---|
181 | 181 |
Buffer buf = null; |
182 | 182 |
|
183 | 183 |
if(q.isSupersamplingOptionActive() && q.isSupersamplingTheRequest()) { |
184 |
//TODO: Sin probar |
|
184 | 185 |
Supersampling supersampling = new Supersampling(q, this); |
185 | 186 |
buf = supersampling.query(provider); |
186 | 187 |
} else if(q.requestHasShift()) { |
188 |
//TODO: Sin probar |
|
187 | 189 |
FramedBufferResampling framedBufferResampling = new FramedBufferResampling(q, this); |
188 | 190 |
buf = framedBufferResampling.query(provider); |
189 | 191 |
} else { |
org.gvsig.raster.cache/trunk/org.gvsig.raster.cache/org.gvsig.raster.cache.lib.impl/src/main/java/org/gvsig/raster/cache/tile/impl/layer/TiledLayerImpl.java | ||
---|---|---|
139 | 139 |
null; |
140 | 140 |
} |
141 | 141 |
|
142 |
/* |
|
143 |
* (non-Javadoc) |
|
144 |
* @see org.gvsig.raster.cache.tile.layer.TiledLayer#getTiles(java.util.ArrayList, org.gvsig.raster.cache.tile.provider.TileListener) |
|
145 |
*/ |
|
146 | 142 |
public void getTiles(List<Tile> tiles, TileListener listener, TaskStatus status) throws TileGettingException { |
147 | 143 |
//If a tile is in memory or in disk then this will be returned |
148 | 144 |
//else this will be gotten from the provider |
... | ... | |
209 | 205 |
tileCache.saveSize(); |
210 | 206 |
} |
211 | 207 |
|
212 |
/* |
|
213 |
* (non-Javadoc) |
|
214 |
* @see org.gvsig.raster.cache.tile.layer.TiledLayer#getBaseLayerDirectory() |
|
215 |
*/ |
|
216 | 208 |
public String getBaseLayerDirectory() { |
217 | 209 |
CacheStruct struct = provider.getStruct(); |
218 | 210 |
int maxLevel = struct.getNumberOfLevels() - 1; |
... | ... | |
252 | 244 |
return pathToDirLayer; |
253 | 245 |
} |
254 | 246 |
|
255 |
/* |
|
256 |
* (non-Javadoc) |
|
257 |
* @see org.gvsig.raster.cache.tile.layer.TiledLayer#getID() |
|
258 |
*/ |
|
259 | 247 |
public String getID() { |
260 | 248 |
if(idLayer == null) |
261 | 249 |
getBaseLayerDirectory(); |
262 | 250 |
return idLayer; |
263 | 251 |
} |
264 | 252 |
|
265 |
/* |
|
266 |
* (non-Javadoc) |
|
267 |
* @see org.gvsig.raster.cache.tile.layer.TiledLayer#delete() |
|
268 |
*/ |
|
269 | 253 |
public long delete() { |
270 | 254 |
File f = new File(getBaseLayerDirectory()); |
271 | 255 |
if(f.exists() && f.isDirectory()) { |
org.gvsig.raster.wms/branches/org.gvsig.raster.wms_dataaccess_refactoring/org.gvsig.raster.wms.app.wmsclient/src/main/java/org/gvsig/raster/wms/app/wmsclient/layer/FLyrWMS.java | ||
---|---|---|
56 | 56 |
import org.gvsig.fmap.dal.coverage.datastruct.ViewPortData; |
57 | 57 |
import org.gvsig.fmap.dal.coverage.exception.FilePaletteException; |
58 | 58 |
import org.gvsig.fmap.dal.coverage.exception.InfoByPointException; |
59 |
import org.gvsig.fmap.dal.coverage.exception.InvalidSetViewException; |
|
60 | 59 |
import org.gvsig.fmap.dal.coverage.exception.ProcessInterruptedException; |
60 |
import org.gvsig.fmap.dal.coverage.exception.QueryException; |
|
61 | 61 |
import org.gvsig.fmap.dal.coverage.exception.RasterDriverException; |
62 |
import org.gvsig.fmap.dal.coverage.exception.RemoteServiceException; |
|
63 | 62 |
import org.gvsig.fmap.dal.coverage.grid.RasterFilter; |
64 | 63 |
import org.gvsig.fmap.dal.coverage.store.RasterDataStore; |
65 | 64 |
import org.gvsig.fmap.dal.coverage.store.parameter.RasterDataParameters; |
... | ... | |
416 | 415 |
return; |
417 | 416 |
} |
418 | 417 |
|
419 |
try { |
|
418 |
//try {
|
|
420 | 419 |
|
421 | 420 |
Rectangle2D extent = new Rectangle2D.Double(); |
422 | 421 |
Rectangle2D.Double vpExtent = this.getRectable2DFromEnvelope(vpEnv); |
... | ... | |
453 | 452 |
getRender().drawTiledService(g, vp2, vp.getImageSize(), taskStatus); |
454 | 453 |
} |
455 | 454 |
//this.updateDrawVersion(); |
456 |
} catch (RasterDriverException e) { |
|
455 |
|
|
456 |
} catch (ProcessInterruptedException e) { |
|
457 |
} catch (QueryException e) { |
|
457 | 458 |
setAvailable(false); |
458 | 459 |
JOptionPane.showMessageDialog(null, "Problems drawing this layer:" + e.getMessage(), Messages.getText("Error"), JOptionPane.ERROR_MESSAGE); |
459 | 460 |
logger.info("Problems drawing this layer:" + e.getMessage(), e); |
460 |
} catch (InvalidSetViewException e) { |
|
461 |
throw new RemoteServiceException("Problems drawing this layer: " + e.getMessage(), e); |
|
462 |
} catch (ProcessInterruptedException e) { |
|
463 | 461 |
} finally { |
464 | 462 |
taskStatus.terminate(); |
465 | 463 |
} |
466 | 464 |
|
467 |
} catch (RemoteServiceException e) { |
|
465 |
/*} catch (RemoteServiceException e) {
|
|
468 | 466 |
if (!taskStatus.isCancellationRequested()) { |
469 | 467 |
if (callCount < MAX_RETRY_TIMES) { |
470 | 468 |
logger.warn("\n[ FLyrWMS.drawFixedSize() ] Failed in trying " + callCount + "/" + MAX_RETRY_TIMES + ")\n"); // mess code |
... | ... | |
476 | 474 |
logger.error("Server error:" + e.getMessage(), e); |
477 | 475 |
} |
478 | 476 |
} |
479 |
} |
|
477 |
}*/
|
|
480 | 478 |
callCount--; |
481 | 479 |
return; |
482 | 480 |
} |
org.gvsig.raster.wms/branches/org.gvsig.raster.wms_dataaccess_refactoring/org.gvsig.raster.wms.io/src/main/java/org/gvsig/raster/wms/io/downloader/TileDownloaderForWMS.java | ||
---|---|---|
28 | 28 |
import org.cresques.cts.IProjection; |
29 | 29 |
import org.gvsig.fmap.dal.coverage.RasterLocator; |
30 | 30 |
import org.gvsig.fmap.dal.coverage.dataset.Buffer; |
31 |
import org.gvsig.fmap.dal.coverage.datastruct.BandList; |
|
32 | 31 |
import org.gvsig.fmap.dal.coverage.datastruct.Extent; |
33 | 32 |
import org.gvsig.fmap.dal.coverage.exception.NotSupportedExtensionException; |
34 | 33 |
import org.gvsig.fmap.dal.coverage.exception.ProcessInterruptedException; |
34 |
import org.gvsig.fmap.dal.coverage.exception.QueryException; |
|
35 | 35 |
import org.gvsig.fmap.dal.coverage.exception.RasterDriverException; |
36 | 36 |
import org.gvsig.fmap.dal.coverage.exception.RemoteServiceException; |
37 |
import org.gvsig.fmap.dal.coverage.store.RasterDataStore; |
|
38 |
import org.gvsig.fmap.dal.coverage.store.RasterQuery; |
|
37 | 39 |
import org.gvsig.fmap.dal.exception.InitializeException; |
38 | 40 |
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException; |
39 | 41 |
import org.gvsig.raster.cache.tile.Tile; |
40 | 42 |
import org.gvsig.raster.cache.tile.exception.TileGettingException; |
41 | 43 |
import org.gvsig.raster.impl.DefaultRasterManager; |
42 |
import org.gvsig.raster.impl.buffer.DefaultRasterQuery; |
|
43 |
import org.gvsig.raster.impl.datastruct.BandListImpl; |
|
44 | 44 |
import org.gvsig.raster.impl.provider.RasterProvider; |
45 | 45 |
import org.gvsig.raster.impl.provider.tile.BaseTileDownloader; |
46 | 46 |
import org.gvsig.raster.util.DefaultProviderServices; |
... | ... | |
61 | 61 |
|
62 | 62 |
|
63 | 63 |
|
64 |
public TileDownloaderForWMS(WMSProvider prov,
|
|
64 |
public TileDownloaderForWMS(RasterDataStore store,
|
|
65 | 65 |
int tilePxWidth, |
66 |
int tilePxHeight, |
|
67 |
WMSConnector connector) { |
|
68 |
super(prov, tilePxWidth, tilePxHeight); |
|
69 |
this.connector = connector; |
|
70 |
lyrExtent = prov.getExtent(); |
|
66 |
int tilePxHeight) throws RemoteServiceException { |
|
67 |
super(store, tilePxWidth, tilePxHeight); |
|
68 |
this.connector = ((WMSProvider)store.getProvider()).getConnector(); |
|
69 |
lyrExtent = store.getExtent(); |
|
71 | 70 |
} |
72 | 71 |
|
73 |
/* |
|
74 |
* (non-Javadoc) |
|
75 |
* @see org.gvsig.raster.cache.tile.provider.Downloader#getTile(org.gvsig.raster.cache.tile.Tile) |
|
76 |
*/ |
|
77 | 72 |
public synchronized Tile downloadTile(Tile tile) throws TileGettingException { |
78 | 73 |
try { |
79 | 74 |
Rectangle2D r = new Rectangle2D.Double(tile.getExtent().getMinX(), |
... | ... | |
81 | 76 |
tile.getExtent().getWidth(), |
82 | 77 |
tile.getExtent().getHeight()); |
83 | 78 |
//Extent tileExtent = RasterLocator.getManager().getDataStructFactory().createExtent(r); |
84 |
WMSDataParameters p = ((WMSProvider)prov).getParameters();
|
|
79 |
WMSDataParameters p = (WMSDataParameters)store.getParameters();
|
|
85 | 80 |
WMSStatus wmsStatus = new WMSStatus(); |
86 | 81 |
wmsStatus.setLayerNames(Utilities.createVector(p.getLayerQuery(), ",")); |
87 | 82 |
wmsStatus.setSrs(p.getSRSCode()); |
... | ... | |
112 | 107 |
|
113 | 108 |
@SuppressWarnings("unused") |
114 | 109 |
private void fuseFiles(Extent dstExtent, int dstWidth, int dstHeight, File src, File dst, double pixelSize) |
115 |
throws RasterDriverException, ProcessInterruptedException, ProviderNotRegisteredException, InitializeException, LocatorException, NotSupportedExtensionException, IOException { |
|
110 |
throws RasterDriverException, ProcessInterruptedException, ProviderNotRegisteredException, InitializeException, LocatorException, NotSupportedExtensionException, IOException, QueryException {
|
|
116 | 111 |
RasterProvider provider = DefaultProviderServices.loadProvider(src); |
117 |
Buffer bufSrc = DefaultRasterManager.getInstance().createMemoryBuffer( |
|
118 |
provider.getDataType()[0], (int)provider.getWidth(), (int)provider.getHeight(), provider.getBandCount(), true); |
|
119 |
DefaultRasterQuery q = (DefaultRasterQuery)RasterLocator.getManager().createQuery(); |
|
120 |
q.setAreaOfInterest(0, 0, (int)provider.getWidth(), (int)provider.getHeight()); |
|
121 |
BandList newBandList = new BandListImpl(provider.getURIOfFirstProvider(), provider.getBandCount(), provider.getDataType()[0]); |
|
122 |
q.setBandList(newBandList); |
|
123 |
q.setBuffer(bufSrc); |
|
124 |
q.setAdjustToExtent(true); |
|
125 |
Buffer bufInput = (Buffer)provider.getDataSet(q); |
|
126 | 112 |
|
113 |
RasterQuery q = RasterLocator.getManager().createQuery(); |
|
114 |
Buffer bufInput = store.query(q); |
|
115 |
|
|
127 | 116 |
Buffer bufDst = DefaultRasterManager.getInstance().createMemoryBuffer(provider.getDataType()[0], dstWidth, dstHeight, provider.getBandCount(), true); |
128 | 117 |
String extension = RasterLocator.getManager().getFileUtils().getExtensionFromFileName(src.getAbsolutePath()); |
129 | 118 |
RasterLocator.getManager().getRasterUtils().copyToBuffer( |
org.gvsig.raster.wms/branches/org.gvsig.raster.wms_dataaccess_refactoring/org.gvsig.raster.wms.io/src/main/java/org/gvsig/raster/wms/io/downloader/WMSTileServer.java | ||
---|---|---|
25 | 25 |
import org.gvsig.fmap.dal.coverage.RasterLibrary; |
26 | 26 |
import org.gvsig.fmap.dal.coverage.datastruct.Extent; |
27 | 27 |
import org.gvsig.fmap.dal.coverage.exception.RemoteServiceException; |
28 |
import org.gvsig.fmap.dal.coverage.store.RasterDataStore; |
|
28 | 29 |
import org.gvsig.raster.cache.tile.TileCacheLibrary; |
29 | 30 |
import org.gvsig.raster.cache.tile.TileCacheLocator; |
30 | 31 |
import org.gvsig.raster.cache.tile.TileCacheManager; |
31 | 32 |
import org.gvsig.raster.cache.tile.provider.CacheStruct; |
32 | 33 |
import org.gvsig.raster.cache.tile.provider.Downloader; |
33 | 34 |
import org.gvsig.raster.cache.tile.provider.TileServer; |
35 |
import org.gvsig.raster.impl.provider.RasterProvider; |
|
34 | 36 |
import org.gvsig.raster.wms.io.WMSProvider; |
35 | 37 |
import org.slf4j.Logger; |
36 | 38 |
import org.slf4j.LoggerFactory; |
... | ... | |
43 | 45 |
private static Logger logger = LoggerFactory.getLogger(WMSTileServer.class); |
44 | 46 |
private CacheStruct struct = null; |
45 | 47 |
private Downloader downloader = null; |
46 |
private WMSProvider provider = null;
|
|
48 |
private RasterDataStore store = null;
|
|
47 | 49 |
private String suffix = ".tif"; |
48 | 50 |
|
49 |
public WMSTileServer(WMSProvider prov) {
|
|
50 |
this.provider = prov;
|
|
51 |
this.suffix = prov.getFileSuffix();
|
|
51 |
public WMSTileServer(RasterDataStore store) {
|
|
52 |
this.store = store;
|
|
53 |
this.suffix = ((RasterProvider)store.getProvider()).getFileSuffix();
|
|
52 | 54 |
} |
53 | 55 |
|
54 |
/* |
|
55 |
* (non-Javadoc) |
|
56 |
* @see org.gvsig.raster.cache.tile.provider.TileServer#getDownloader() |
|
57 |
*/ |
|
58 | 56 |
public Downloader getDownloader() { |
59 | 57 |
if(downloader == null || |
60 | 58 |
((TileDownloaderForWMS)downloader).getTileSize()[0] != TileCacheLibrary.ALTERNATIVE_TILESIZE || |
61 | 59 |
((TileDownloaderForWMS)downloader).getTileSize()[1] != TileCacheLibrary.ALTERNATIVE_TILESIZE) { |
62 | 60 |
try { |
63 | 61 |
downloader = new TileDownloaderForWMS( |
64 |
provider,
|
|
62 |
store,
|
|
65 | 63 |
TileCacheLibrary.ALTERNATIVE_TILESIZE, |
66 |
TileCacheLibrary.ALTERNATIVE_TILESIZE, |
|
67 |
provider.getConnector()); |
|
64 |
TileCacheLibrary.ALTERNATIVE_TILESIZE); |
|
68 | 65 |
} catch (RemoteServiceException e) { |
69 | 66 |
return null; |
70 | 67 |
} |
... | ... | |
77 | 74 |
TileCacheManager manager = TileCacheLocator.getManager(); |
78 | 75 |
|
79 | 76 |
int coordinates = CacheStruct.FLAT; |
80 |
if(provider.getProjection() != null)
|
|
81 |
coordinates = (provider.getProjection() != null && provider.getProjection().isProjected()) ? CacheStruct.FLAT : CacheStruct.GEOGRAFIC;
|
|
77 |
if(store.getProjection() != null)
|
|
78 |
coordinates = (store.getProjection() != null && store.getProjection().isProjected()) ? CacheStruct.FLAT : CacheStruct.GEOGRAFIC;
|
|
82 | 79 |
else { |
83 |
Extent e = provider.getExtent();
|
|
80 |
Extent e = store.getExtent();
|
|
84 | 81 |
if(e.getULX() >= -180 && e.getULX() <= 180 && e.getLRX() >= -180 && e.getLRX() <= 180 && |
85 | 82 |
e.getULY() >= -90 && e.getULY() <= 90 && e.getLRY() >= -90 && e.getLRY() <= 90) { |
86 | 83 |
coordinates = CacheStruct.GEOGRAFIC; |
... | ... | |
88 | 85 |
} |
89 | 86 |
|
90 | 87 |
String epsg = null; |
91 |
IProjection proj = provider.getProjection();
|
|
88 |
IProjection proj = store.getProjection();
|
|
92 | 89 |
if(proj != null) |
93 | 90 |
epsg = proj.getAbrev(); |
94 | 91 |
|
95 | 92 |
struct = manager.createCacheStructure(coordinates, |
96 | 93 |
TileCacheLibrary.DEFAULT_LEVELS, |
97 |
provider.getExtent().toRectangle2D(),
|
|
94 |
store.getExtent().toRectangle2D(),
|
|
98 | 95 |
Double.POSITIVE_INFINITY,//provider.getCellSize(), |
99 | 96 |
TileCacheLibrary.ALTERNATIVE_TILESIZE, |
100 | 97 |
TileCacheLibrary.ALTERNATIVE_TILESIZE, |
101 |
provider.getURIOfFirstProvider(),
|
|
102 |
provider.getParameters().getLayerQuery(),
|
|
98 |
((RasterProvider)store.getProvider()).getURIOfFirstProvider(),
|
|
99 |
((WMSProvider)store.getProvider()).getParameters().getLayerQuery(),
|
|
103 | 100 |
TileCacheLibrary.DEFAULT_STRUCTURE, |
104 | 101 |
RasterLibrary.pathTileCache, |
105 | 102 |
getFileSuffix(), |
... | ... | |
109 | 106 |
return struct; |
110 | 107 |
} |
111 | 108 |
|
112 |
/* |
|
113 |
* (non-Javadoc) |
|
114 |
* @see org.gvsig.raster.cache.tile.provider.TileServer#setStruct(org.gvsig.raster.cache.tile.provider.CacheStruct) |
|
115 |
*/ |
|
116 | 109 |
public void setStruct(CacheStruct struct) { |
117 | 110 |
if(struct != null) { |
118 | 111 |
this.struct = struct; |
119 | 112 |
if(struct.getTileSizeByLevel(0) != null) { |
120 | 113 |
try { |
121 |
downloader = new TileDownloaderForWMS(provider,
|
|
114 |
downloader = new TileDownloaderForWMS(store,
|
|
122 | 115 |
struct.getTileSizeByLevel(0)[0], |
123 |
struct.getTileSizeByLevel(0)[1], |
|
124 |
provider.getConnector()); |
|
116 |
struct.getTileSizeByLevel(0)[1]); |
|
125 | 117 |
} catch (RemoteServiceException ex) { |
126 | 118 |
logger.error("Constructing TileDownloaderForWCS: " + ex.getMessage()); |
127 | 119 |
} |
... | ... | |
129 | 121 |
} |
130 | 122 |
} |
131 | 123 |
|
132 |
/* |
|
133 |
* (non-Javadoc) |
|
134 |
* @see org.gvsig.raster.cache.tile.provider.TileServer#getFileSuffix() |
|
135 |
*/ |
|
136 | 124 |
public String getFileSuffix() { |
137 | 125 |
return suffix; |
138 | 126 |
} |
139 | 127 |
|
140 |
/* |
|
141 |
* (non-Javadoc) |
|
142 |
* @see org.gvsig.raster.cache.tile.provider.TileServer#setFileExtension(java.lang.String) |
|
143 |
*/ |
|
144 | 128 |
public void setFileSuffix(String extension) { |
145 | 129 |
this.suffix = extension; |
146 | 130 |
} |
org.gvsig.raster.wms/branches/org.gvsig.raster.wms_dataaccess_refactoring/org.gvsig.raster.wms.io/src/main/java/org/gvsig/raster/wms/io/WMSProvider.java | ||
---|---|---|
52 | 52 |
import org.gvsig.fmap.dal.coverage.exception.InvalidSetViewException; |
53 | 53 |
import org.gvsig.fmap.dal.coverage.exception.NotSupportedExtensionException; |
54 | 54 |
import org.gvsig.fmap.dal.coverage.exception.ProcessInterruptedException; |
55 |
import org.gvsig.fmap.dal.coverage.exception.QueryException; |
|
55 | 56 |
import org.gvsig.fmap.dal.coverage.exception.RasterDriverException; |
56 | 57 |
import org.gvsig.fmap.dal.coverage.exception.RemoteServiceException; |
58 |
import org.gvsig.fmap.dal.coverage.store.RasterQuery; |
|
57 | 59 |
import org.gvsig.fmap.dal.coverage.store.props.ColorInterpretation; |
58 | 60 |
import org.gvsig.fmap.dal.coverage.store.props.HistogramComputer; |
59 | 61 |
import org.gvsig.fmap.dal.coverage.store.props.Transparency; |
... | ... | |
62 | 64 |
import org.gvsig.fmap.dal.spi.DataManagerProviderServices; |
63 | 65 |
import org.gvsig.fmap.dal.spi.DataStoreProviderServices; |
64 | 66 |
import org.gvsig.metadata.MetadataLocator; |
65 |
import org.gvsig.raster.cache.tile.TileCacheLocator; |
|
66 |
import org.gvsig.raster.cache.tile.TileCacheManager; |
|
67 |
import org.gvsig.raster.cache.tile.exception.TileGettingException; |
|
68 |
import org.gvsig.raster.cache.tile.provider.TileListener; |
|
69 | 67 |
import org.gvsig.raster.cache.tile.provider.TileServer; |
70 |
import org.gvsig.raster.impl.DefaultRasterManager; |
|
71 |
import org.gvsig.raster.impl.buffer.DefaultRasterQuery; |
|
68 |
import org.gvsig.raster.impl.buffer.SpiRasterQuery; |
|
72 | 69 |
import org.gvsig.raster.impl.datastruct.BandListImpl; |
73 | 70 |
import org.gvsig.raster.impl.datastruct.DatasetBandImpl; |
74 | 71 |
import org.gvsig.raster.impl.datastruct.ExtentImpl; |
75 |
import org.gvsig.raster.impl.provider.DefaultRasterProvider;
|
|
72 |
import org.gvsig.raster.impl.provider.AbstractRasterProvider;
|
|
76 | 73 |
import org.gvsig.raster.impl.provider.RasterProvider; |
77 | 74 |
import org.gvsig.raster.impl.provider.RemoteRasterProvider; |
75 |
import org.gvsig.raster.impl.store.DefaultRasterStore; |
|
78 | 76 |
import org.gvsig.raster.impl.store.DefaultStoreFactory; |
79 | 77 |
import org.gvsig.raster.impl.store.properties.DataStoreColorInterpretation; |
80 | 78 |
import org.gvsig.raster.impl.store.properties.DataStoreTransparency; |
... | ... | |
84 | 82 |
import org.gvsig.remoteclient.utils.Utilities; |
85 | 83 |
import org.gvsig.remoteclient.wms.WMSStatus; |
86 | 84 |
import org.gvsig.tools.ToolsLocator; |
87 |
import org.gvsig.tools.task.TaskStatus; |
|
88 | 85 |
import org.slf4j.Logger; |
89 | 86 |
import org.slf4j.LoggerFactory; |
90 | 87 |
/** |
... | ... | |
92 | 89 |
* |
93 | 90 |
* @author Nacho Brodin (nachobrodin@gmail.com) |
94 | 91 |
*/ |
95 |
public class WMSProvider extends DefaultRasterProvider implements RemoteRasterProvider {
|
|
92 |
public class WMSProvider extends AbstractRasterProvider implements RemoteRasterProvider {
|
|
96 | 93 |
public static String NAME = "Wms Store"; |
97 | 94 |
public static String DESCRIPTION = "Wms Raster file"; |
98 | 95 |
public static final String METADATA_DEFINITION_NAME = "WmsStore"; |
... | ... | |
111 | 108 |
//Only for fixed size. Complete extent and FIXED_SIZE in long side |
112 | 109 |
private File fileLayerPixelSize = null; |
113 | 110 |
private File lastRequest = null; |
114 |
private DefaultRasterProvider lastRequestProvider = null;
|
|
111 |
private AbstractRasterProvider lastRequestProvider = null;
|
|
115 | 112 |
|
116 | 113 |
public static void register() { |
117 | 114 |
DataManagerProviderServices dataman = (DataManagerProviderServices) DALLocator.getDataManager(); |
... | ... | |
230 | 227 |
WMSStatus wmsStatus = loadWMSStatus(bBox); |
231 | 228 |
|
232 | 229 |
lastRequest = downloadFile(wmsStatus, ext.getULX(), ext.getULY(), ext.getLRX(), ext.getLRY(), w, h); |
233 |
DefaultRasterProvider driver;
|
|
230 |
AbstractRasterProvider driver;
|
|
234 | 231 |
try { |
235 | 232 |
driver = DefaultProviderServices.loadProvider(lastRequest); |
236 | 233 |
setDataType(driver.getDataType()); |
... | ... | |
529 | 526 |
public Buffer getBufferLastRequest() throws ProcessInterruptedException, RasterDriverException { |
530 | 527 |
try { |
531 | 528 |
lastRequestProvider = openLastRequest(); |
532 |
|
|
533 |
BandList bandList = new BandListImpl(); |
|
534 |
for (int i = 0; i < lastRequestProvider.getBandCount(); i++) { |
|
535 |
try { |
|
536 |
bandList.addBand(new DatasetBandImpl(lastRequest.getPath(), i, Buffer.TYPE_BYTE, 3)); |
|
537 |
} catch (BandNotFoundInListException e1) { |
|
538 |
} |
|
539 |
} |
|
540 |
bandList.setDrawableBands(new int[]{0, 1, 2}); |
|
541 |
Buffer newBuffer = DefaultRasterManager.getInstance().createBuffer(lastRequestProvider.getDataType()[0], (int)lastRequestProvider.getWidth(), (int)lastRequestProvider.getHeight(), lastRequestProvider.getBandCount(), true); |
|
542 |
|
|
543 |
DefaultRasterQuery q = (DefaultRasterQuery)RasterLocator.getManager().createQuery(); |
|
544 |
q.setAreaOfInterest(lastRequestProvider.getExtent(), |
|
545 |
(int)lastRequestProvider.getWidth(), |
|
546 |
(int)lastRequestProvider.getHeight()); |
|
547 |
q.setBandList(bandList); |
|
548 |
q.setBuffer(newBuffer); |
|
549 |
q.setAdjustToExtent(true); |
|
550 |
|
|
551 |
return lastRequestProvider.getDataSet(q); |
|
529 |
return getDownloadedRaster(lastRequestProvider); |
|
552 | 530 |
} catch (ProviderNotRegisteredException e) { |
553 | 531 |
throw new RasterDriverException("Error building GdalDriver", e); |
554 | 532 |
} catch (InitializeException e) { |
555 | 533 |
throw new RasterDriverException("Error building GdalDriver", e); |
534 |
} catch (QueryException e) { |
|
535 |
throw new RasterDriverException("Error building GdalDriver", e); |
|
556 | 536 |
} |
557 | 537 |
} |
558 | 538 |
|
... | ... | |
563 | 543 |
* @throws InitializeException |
564 | 544 |
* @throws RasterDriverException |
565 | 545 |
*/ |
566 |
private DefaultRasterProvider openLastRequest() throws ProviderNotRegisteredException, InitializeException, RasterDriverException {
|
|
546 |
private AbstractRasterProvider openLastRequest() throws ProviderNotRegisteredException, InitializeException, RasterDriverException {
|
|
567 | 547 |
if(lastRequestProvider != null) |
568 | 548 |
lastRequestProvider.close(); |
569 | 549 |
File lastFile = getFileLayer(); |
... | ... | |
668 | 648 |
return lastRequest; |
669 | 649 |
} |
670 | 650 |
|
651 |
@Override |
|
652 |
public void loadBuffer(SpiRasterQuery q) |
|
653 |
throws ProcessInterruptedException, RasterDriverException { |
|
654 |
Extent bbox = q.getRequestBoundingBox(); |
|
655 |
lastWidthRequest = q.getBufWidth(); |
|
656 |
lastHeightRequest = q.getBufHeight(); |
|
657 |
WMSStatus wmsStatus = loadWMSStatus(bbox.toRectangle2D()); |
|
658 |
|
|
659 |
lastRequest = downloadFile(wmsStatus, |
|
660 |
bbox.getULX(), |
|
661 |
bbox.getULY(), |
|
662 |
bbox.getLRX(), |
|
663 |
bbox.getLRY(), |
|
664 |
q.getBufWidth(), |
|
665 |
q.getBufHeight()); |
|
666 |
|
|
667 |
if (lastRequest == null) { |
|
668 |
return; |
|
669 |
} |
|
670 |
|
|
671 |
Buffer b = null; |
|
672 |
try { |
|
673 |
b = getDownloadedRaster(lastRequest); |
|
674 |
} catch (QueryException e) { |
|
675 |
throw new RasterDriverException("Error building GdalDriver", e); |
|
676 |
} catch (ProviderNotRegisteredException e) { |
|
677 |
throw new RasterDriverException("Error building GdalDriver", e); |
|
678 |
} catch (InitializeException e) { |
|
679 |
throw new RasterDriverException("Error building GdalDriver", e); |
|
680 |
} |
|
681 |
q.setBufferResult(b); |
|
682 |
} |
|
683 |
|
|
684 |
private Buffer getDownloadedRaster(File f) throws ProcessInterruptedException, QueryException, ProviderNotRegisteredException, InitializeException { |
|
685 |
AbstractRasterProvider provider = DefaultProviderServices.loadProvider(new File(f.getPath())); |
|
686 |
setColorTable(provider.getColorTable()); |
|
687 |
return getDownloadedRaster(provider); |
|
688 |
} |
|
689 |
|
|
690 |
private Buffer getDownloadedRaster(AbstractRasterProvider provider) throws ProcessInterruptedException, QueryException, ProviderNotRegisteredException, InitializeException { |
|
691 |
DefaultRasterStore store = new DefaultRasterStore(); |
|
692 |
store.setProvider(provider); |
|
693 |
|
|
694 |
RasterQuery q = RasterLocator.getManager().createQuery(); |
|
695 |
q.setAreaOfInterest(); |
|
696 |
q.setAllDrawableBands(); |
|
697 |
Buffer buf = store.query(q); |
|
698 |
|
|
699 |
store.close(); |
|
700 |
return buf; |
|
701 |
} |
|
702 |
|
|
671 | 703 |
/** |
672 | 704 |
* Assigns the list of bands RGB and read a window of data |
673 | 705 |
* @param rasterBuf |
... | ... | |
681 | 713 |
* @throws RasterDriverException |
682 | 714 |
* @throws ProcessInterruptedException |
683 | 715 |
*/ |
684 |
public Buffer getBuffer(Buffer rasterBuf, BandList bandList, File lastFile, |
|
716 |
/*public Buffer getBuffer(Buffer rasterBuf, BandList bandList, File lastFile,
|
|
685 | 717 |
double ulx, double uly, double lrx, double lry) throws RasterDriverException, ProcessInterruptedException { |
686 | 718 |
try { |
687 | 719 |
//El nombre de fichero que ha puesto en el bandList es el del servidor y no el del fichero en disco |
... | ... | |
690 | 722 |
bandList.getBand(i).setFileName(lastFile.getPath()); |
691 | 723 |
} |
692 | 724 |
|
693 |
DefaultRasterProvider driver = DefaultProviderServices.loadProvider(new File(lastFile.getPath()));
|
|
725 |
AbstractRasterProvider driver = DefaultProviderServices.loadProvider(new File(lastFile.getPath()));
|
|
694 | 726 |
setColorTable(driver.getColorTable()); |
695 | 727 |
|
696 | 728 |
DefaultRasterQuery q = (DefaultRasterQuery)RasterLocator.getManager().createQuery(); |
... | ... | |
709 | 741 |
} catch (InitializeException e) { |
710 | 742 |
throw new RasterDriverException("Error building GdalDriver", e); |
711 | 743 |
} |
712 |
} |
|
744 |
}*/
|
|
713 | 745 |
|
714 |
public void getWindow(Extent ex, int bufWidth, int bufHeight, |
|
746 |
/*public void getWindow(Extent ex, int bufWidth, int bufHeight,
|
|
715 | 747 |
BandList bandList, TileListener listener, TaskStatus status) throws ProcessInterruptedException, RasterDriverException { |
716 | 748 |
|
717 | 749 |
Buffer raster = DefaultRasterManager.getInstance().createBuffer(getDataType()[0], bufWidth, bufHeight, 3, true); |
... | ... | |
733 | 765 |
|
734 | 766 |
//listener.nextBuffer(raster, null, new ExtentImpl(minX, minY, maxX, maxY), getAffineTransform(), null, false); |
735 | 767 |
listener.endReading(); |
736 |
} |
|
768 |
}*/
|
|
737 | 769 |
|
738 |
public Buffer getWindow(Extent ex, BandList bandList, Buffer rasterBuf, TaskStatus status) |
|
770 |
/*public Buffer getWindow(Extent ex, BandList bandList, Buffer rasterBuf, TaskStatus status)
|
|
739 | 771 |
throws ProcessInterruptedException, RasterDriverException { |
740 | 772 |
Rectangle2D bBox = ex.toRectangle2D(); |
741 | 773 |
lastWidthRequest = rasterBuf.getWidth(); |
... | ... | |
755 | 787 |
bandList.getBand(i).setFileName(lastRequest.getPath()); |
756 | 788 |
} |
757 | 789 |
|
758 |
DefaultRasterProvider driver = DefaultProviderServices.loadProvider(new File(lastRequest.getPath()));
|
|
790 |
AbstractRasterProvider driver = DefaultProviderServices.loadProvider(new File(lastRequest.getPath()));
|
|
759 | 791 |
setColorTable(driver.getColorTable()); |
760 | 792 |
|
761 | 793 |
DefaultRasterQuery q = (DefaultRasterQuery)RasterLocator.getManager().createQuery(); |
... | ... | |
774 | 806 |
} catch (InitializeException e) { |
775 | 807 |
throw new RasterDriverException("Error building GdalDriver", e); |
776 | 808 |
} |
777 |
} |
|
809 |
}*/
|
|
778 | 810 |
|
779 |
public Buffer getWindow(double ulx, double uly, double w, double h, |
|
811 |
/*public Buffer getWindow(double ulx, double uly, double w, double h,
|
|
780 | 812 |
BandList bandList, Buffer rasterBuf, boolean adjustToExtent, TaskStatus status) throws ProcessInterruptedException, RasterDriverException { |
781 | 813 |
Rectangle2D bBox = new Rectangle2D.Double(ulx, uly, w, h); |
782 | 814 |
lastWidthRequest = rasterBuf.getWidth(); |
... | ... | |
796 | 828 |
bandList.getBand(i).setFileName(lastRequest.getPath()); |
797 | 829 |
} |
798 | 830 |
|
799 |
DefaultRasterProvider driver = DefaultProviderServices.loadProvider(new File(lastRequest.getPath()));
|
|
831 |
AbstractRasterProvider driver = DefaultProviderServices.loadProvider(new File(lastRequest.getPath()));
|
|
800 | 832 |
setColorTable(driver.getColorTable()); |
801 | 833 |
|
802 | 834 |
DefaultRasterQuery q = (DefaultRasterQuery)RasterLocator.getManager().createQuery(); |
... | ... | |
817 | 849 |
} catch (InitializeException e) { |
818 | 850 |
throw new RasterDriverException("Error building GdalDriver", e); |
819 | 851 |
} |
820 |
} |
|
852 |
}*/
|
|
821 | 853 |
|
822 |
public Buffer getWindow(Extent extent, int bufWidth, int bufHeight, |
|
854 |
/*public Buffer getWindow(Extent extent, int bufWidth, int bufHeight,
|
|
823 | 855 |
BandList bandList, Buffer rasterBuf, boolean adjustToExtent, TaskStatus status) throws ProcessInterruptedException, RasterDriverException { |
824 | 856 |
Rectangle2D bBox = extent.toRectangle2D();//new Rectangle2D.Double(ulx, lry, Math.abs(lrx - ulx), Math.abs(lry - uly)); |
825 | 857 |
lastWidthRequest = rasterBuf.getWidth(); |
... | ... | |
838 | 870 |
bandList.getBand(i).setFileName(lastRequest.getPath()); |
839 | 871 |
} |
840 | 872 |
|
841 |
DefaultRasterProvider driver = DefaultProviderServices.loadProvider(new File(lastRequest.getPath()));
|
|
873 |
AbstractRasterProvider driver = DefaultProviderServices.loadProvider(new File(lastRequest.getPath()));
|
|
842 | 874 |
setColorTable(driver.getColorTable()); |
843 | 875 |
|
844 | 876 |
DefaultRasterQuery q = (DefaultRasterQuery)RasterLocator.getManager().createQuery(); |
... | ... | |
858 | 890 |
} catch (InitializeException e) { |
859 | 891 |
throw new RasterDriverException("Error building GdalDriver", e); |
860 | 892 |
} |
861 |
} |
|
893 |
}*/
|
|
862 | 894 |
|
863 | 895 |
// public Buffer getWindow(int x, int y, |
864 | 896 |
// BandList bandList, Buffer rasterBuf) throws ProcessInterruptedException, RasterDriverException { |
... | ... | |
877 | 909 |
// return rasterBuf; |
878 | 910 |
// } |
879 | 911 |
// |
880 |
// DefaultRasterProvider driver = null;
|
|
912 |
// AbstractRasterProvider driver = null;
|
|
881 | 913 |
// try { |
882 | 914 |
// //El nombre de fichero que ha puesto en el bandList es el del servidor y no el del fichero en disco |
883 | 915 |
// String serverName = bandList.getBand(0).getFileName(); |
... | ... | |
900 | 932 |
// } |
901 | 933 |
// } |
902 | 934 |
|
903 |
public Buffer getWindow(int x, int y, int w, int h, |
|
935 |
/*public Buffer getWindow(int x, int y, int w, int h,
|
|
904 | 936 |
BandList bandList, Buffer rasterBuf, TaskStatus status) throws ProcessInterruptedException, RasterDriverException { |
905 | 937 |
Point2D p1 = rasterToWorld(new Point2D.Double(x, y)); |
906 | 938 |
Point2D p2 = rasterToWorld(new Point2D.Double(x + w, y + h)); |
... | ... | |
915 | 947 |
return rasterBuf; |
916 | 948 |
} |
917 | 949 |
|
918 |
DefaultRasterProvider driver = null;
|
|
950 |
AbstractRasterProvider driver = null;
|
|
919 | 951 |
try { |
920 | 952 |
//El nombre de fichero que ha puesto en el bandList es el del servidor y no el del fichero en disco |
921 | 953 |
String serverName = bandList.getBand(0).getFileName(); |
... | ... | |
942 | 974 |
} catch (InitializeException e) { |
943 | 975 |
throw new RasterDriverException("Error building GdalDriver", e); |
944 | 976 |
} |
945 |
} |
|
977 |
}*/
|
|
946 | 978 |
|
947 | 979 |
public Image getImageLegend() { |
948 | 980 |
try { |
... | ... | |
1087 | 1119 |
|
1088 | 1120 |
public TileServer getTileServer() { |
1089 | 1121 |
if(tileServer == null) { |
1090 |
tileServer = new WMSTileServer(this); |
|
1122 |
DefaultRasterStore store = new DefaultRasterStore(); |
|
1123 |
store.setProvider(this); |
|
1124 |
tileServer = new WMSTileServer(store); |
|
1091 | 1125 |
} |
1092 | 1126 |
return tileServer; |
1093 | 1127 |
} |
org.gvsig.raster.tilecache/branches/org.gvsig.raster.tilecache_dataaccess_refactoring/org.gvsig.raster.tilecache.io/src/main/java/org/gvsig/raster/tilecache/io/TileProvider.java | ||
---|---|---|
1 |
/* gvSIG. Geographic Information System of the Valencian Government |
|
2 |
* |
|
3 |
* Copyright (C) 2007-2008 Infrastructures and Transports Department |
|
4 |
* of the Valencian Government (CIT) |
|
5 |
* |
|
6 |
* This program is free software; you can redistribute it and/or |
|
7 |
* modify it under the terms of the GNU General Public License |
|
8 |
* as published by the Free Software Foundation; either version 2 |
|
9 |
* of the License, or (at your option) any later version. |
|
10 |
* |
|
11 |
* This program is distributed in the hope that it will be useful, |
|
12 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
13 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
14 |
* GNU General Public License for more details. |
|
15 |
* |
|
16 |
* You should have received a copy of the GNU General Public License |
|
17 |
* along with this program; if not, write to the Free Software |
|
18 |
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, |
|
19 |
* MA 02110-1301, USA. |
|
20 |
* |
|
21 |
*/ |
|
22 | 1 |
package org.gvsig.raster.tilecache.io; |
23 | 2 |
|
24 | 3 |
import java.awt.Image; |
... | ... | |
86 | 65 |
import org.gvsig.raster.impl.datastruct.DatasetBandImpl; |
87 | 66 |
import org.gvsig.raster.impl.datastruct.ExtentImpl; |
88 | 67 |
import org.gvsig.raster.impl.provider.AbstractRasterProvider; |
89 |
import org.gvsig.raster.impl.provider.MemoryTileMatrixBuffer; |
|
90 | 68 |
import org.gvsig.raster.impl.provider.RasterProvider; |
91 | 69 |
import org.gvsig.raster.impl.provider.RemoteRasterProvider; |
92 | 70 |
import org.gvsig.raster.impl.provider.TiledRasterProvider; |
... | ... | |
679 | 657 |
|
680 | 658 |
} |
681 | 659 |
|
682 |
/*public void getWindow(Extent ex, int bufWidth, int bufHeight, |
|
683 |
BandList bandList, TileListener listener, TaskStatus taskStatus) throws ProcessInterruptedException, RasterDriverException { |
|
684 |
try { |
|
685 |
List<Tile> tileList = getTileList(ex, bandList, bufWidth, bufHeight); |
|
686 |
tiledLayer.getTiles(tileList, listener, taskStatus); |
|
687 |
} catch (TileGettingException e) { |
|
688 |
throw new RasterDriverException("Error getting the tile list", e); |
|
689 |
} catch (TileBuildException e) { |
|
690 |
throw new RasterDriverException("Error building the tile list", e); |
|
691 |
} |
|
692 |
} |
|
693 |
|
|
694 |
public Buffer getWindow(Extent extent, int bufWidth, int bufHeight, |
|
695 |
BandList bandList, Buffer rasterBuf, boolean adjustToExtent, TaskStatus status) throws ProcessInterruptedException, RasterDriverException { |
|
696 |
//draw method |
|
697 |
List<Tile> tileList = null; |
|
698 |
try { |
|
699 |
tileList = getTileList(extent, bandList, bufWidth, bufHeight); |
|
700 |
for (int i = 0; i < tileList.size(); i++) { |
|
701 |
tiledLayer.getTile(tileList.get(i)); |
|
702 |
} |
|
703 |
} catch (TileGettingException e) {public static final int TYPE_PX_RESCALED = 5; |
|
704 |
throw new RasterDriverException("Error getting the tile list", e); |
|
705 |
} catch (TileBuildException e) { |
|
706 |
throw new RasterDriverException("Error building the tile list", e); |
|
707 |
} |
|
708 |
MemoryTileMatrixBuffer matrixBuffer = new MemoryTileMatrixBuffer(tileList); |
|
709 |
return matrixBuffer.getWindow(extent, rasterBuf); |
|
710 |
} |
|
711 |
|
|
712 |
public Buffer getWindow(double ulx, double uly, double w, double h, |
|
713 |
BandList bandList, Buffer rasterBuf, boolean adjustToExtent, TaskStatus status) throws ProcessInterruptedException, RasterDriverException { |
|
714 |
Extent extent = new ExtentImpl(ulx, uly, ulx + w, uly - h); |
|
715 |
List<Tile> tileList = null; |
|
716 |
try { |
|
717 |
tileList = getTileList(extent, bandList, rasterBuf.getWidth(), rasterBuf.getHeight()); |
|
718 |
for (int i = 0; i < tileList.size(); i++) { |
|
719 |
tiledLayer.getTile(tileList.get(i)); |
|
720 |
} |
|
721 |
} catch (TileGettingException e) { |
|
722 |
throw new RasterDriverException("Error getting the tile list", e); |
|
723 |
} catch (TileBuildException e) { |
|
724 |
throw new RasterDriverException("Error building the tile list", e); |
|
725 |
} |
|
726 |
MemoryTileMatrixBuffer matrixBuffer = new MemoryTileMatrixBuffer(tileList); |
|
727 |
return matrixBuffer.getWindow(extent, rasterBuf); |
|
728 |
}*/ |
|
729 |
|
|
730 | 660 |
public int getBlockSize() { |
731 | 661 |
return 0; |
732 | 662 |
} |
Also available in: Unified diff