Revision 6346
org.gvsig.raster/branches/org.gvsig.raster.2.4/org.gvsig.raster/org.gvsig.raster.tilecache/org.gvsig.raster.tilecache.provider/src/main/java/org/gvsig/raster/tilecache/provider/TileCacheStoreProvider.java | ||
---|---|---|
24 | 24 |
|
25 | 25 |
import java.io.File; |
26 | 26 |
import java.util.ArrayList; |
27 |
import java.util.HashMap; |
|
27 | 28 |
import java.util.List; |
29 |
import java.util.Map; |
|
28 | 30 |
|
29 |
import org.apache.commons.io.FilenameUtils; |
|
30 | 31 |
import org.cresques.cts.IProjection; |
31 |
import org.gvsig.fmap.dal.DALLocator; |
|
32 |
import org.gvsig.fmap.dal.DataManager; |
|
32 |
import org.slf4j.Logger; |
|
33 |
import org.slf4j.LoggerFactory; |
|
34 |
|
|
33 | 35 |
import org.gvsig.fmap.dal.DataServerExplorer; |
34 | 36 |
import org.gvsig.fmap.dal.DataStore; |
35 | 37 |
import org.gvsig.fmap.dal.DataStoreNotification; |
36 | 38 |
import org.gvsig.fmap.dal.FileHelper; |
37 | 39 |
import org.gvsig.fmap.dal.exception.CloseException; |
38 |
import org.gvsig.fmap.dal.exception.DataException; |
|
39 | 40 |
import org.gvsig.fmap.dal.exception.InitializeException; |
40 | 41 |
import org.gvsig.fmap.dal.exception.OpenException; |
41 | 42 |
import org.gvsig.fmap.dal.exception.ReadException; |
... | ... | |
50 | 51 |
import org.gvsig.fmap.dal.resource.file.FileResource; |
51 | 52 |
import org.gvsig.fmap.dal.resource.spi.ResourceConsumer; |
52 | 53 |
import org.gvsig.fmap.dal.resource.spi.ResourceProvider; |
53 |
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorer; |
|
54 |
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorerParameters; |
|
55 | 54 |
import org.gvsig.fmap.dal.spi.DataStoreProviderServices; |
56 | 55 |
import org.gvsig.fmap.geom.primitive.Envelope; |
57 | 56 |
import org.gvsig.metadata.MetadataLocator; |
... | ... | |
70 | 69 |
import org.gvsig.tools.exception.BaseException; |
71 | 70 |
import org.gvsig.tools.task.SimpleTaskStatus; |
72 | 71 |
import org.gvsig.tools.task.TaskStatusManager; |
73 |
import org.slf4j.Logger; |
|
74 |
import org.slf4j.LoggerFactory; |
|
75 | 72 |
|
76 | 73 |
/** |
77 | 74 |
* Provider for Tile Cache |
... | ... | |
96 | 93 |
private Envelope envelope = null; |
97 | 94 |
private IProjection projection= null; |
98 | 95 |
|
96 |
Map<Integer,List<PageManager>> pageManagersPerZoomLevel = null; |
|
97 |
|
|
98 |
|
|
99 | 99 |
protected static void registerMetadataDefinition() |
100 | 100 |
throws MetadataException { |
101 | 101 |
MetadataManager manager = MetadataLocator.getMetadataManager(); |
... | ... | |
144 | 144 |
this.projection=params.getCRS(); |
145 | 145 |
|
146 | 146 |
//FIXME |
147 |
File file = new File("/home/daniel/pruebas/datosPruebaRaster/tileCache/valencia1980");
|
|
147 |
File file = new File("/home/paco/data/cartography/raster/tile-valencia1980");
|
|
148 | 148 |
|
149 | 149 |
resource = this.createResource( |
150 | 150 |
FileResource.NAME, |
... | ... | |
179 | 179 |
int[] bandDataTypes; |
180 | 180 |
List<PageManager> pageManagers = new ArrayList<PageManager>(); |
181 | 181 |
NoData[] bandNoData; |
182 |
if (rasterQuery != null) { |
|
182 |
// if (rasterQuery != null) {
|
|
183 | 183 |
List<BandQuery> bands; |
184 | 184 |
bands = rasterQuery.getBands(); |
185 | 185 |
bandDataTypes = new int[bands.size()]; |
186 | 186 |
bandNoData = new NoData[bands.size()]; |
187 | 187 |
|
188 |
int zoomLevel = tileStructImage.getZoomLvlForPixelSize(rasterQuery.getPixelSize()); |
|
189 |
List<PageManager> pageManagersInZoom = getPageManagersInZoom(zoomLevel); |
|
188 | 190 |
for (BandQuery bandQuery : bands) { |
191 |
//FIXME: |
|
189 | 192 |
int band = bandQuery.getBand(); |
190 | 193 |
bandDataTypes[band] = tileStructImage.getDataTypes()[band]; |
191 | 194 |
bandNoData[band] = null; |
192 |
pageManagers.add(new TileCacheBandPageManager(tileStructImage, rasterQuery.getPixelSize(), band));
|
|
195 |
pageManagers.add(pageManagersInZoom.get(band));
|
|
193 | 196 |
} |
194 |
} else { |
|
195 |
int bands = getBands(); |
|
196 |
bandDataTypes = new int[bands]; |
|
197 |
bandNoData = new NoData[bands]; |
|
198 |
for (int i = 0; i < bands; i++) { |
|
199 |
bandDataTypes[i] = tileStructImage.getDataTypes()[i]; |
|
200 |
bandNoData[i] = null; |
|
201 |
pageManagers.add(new TileCacheBandPageManager(tileStructImage, rasterQuery.getPixelSize(), i)); |
|
202 |
} |
|
203 |
} |
|
204 |
int zoomLevel=tileStructImage.getZoomLvlForPixelSize(rasterQuery.getPixelSize()); |
|
197 |
// } else { |
|
198 |
// int bands = getBands(); |
|
199 |
// bandDataTypes = new int[bands]; |
|
200 |
// bandNoData = new NoData[bands]; |
|
201 |
// for (int i = 0; i < bands; i++) { |
|
202 |
// bandDataTypes[i] = tileStructImage.getDataTypes()[i]; |
|
203 |
// bandNoData[i] = null; |
|
204 |
// pageManagers.add(new TileCacheBandPageManager(tileStructImage, rasterQuery.getPixelSize(), i)); |
|
205 |
// } |
|
206 |
// } |
|
205 | 207 |
envelope=tileStructImage.getEnvelopePerZoomLevel(zoomLevel); |
206 | 208 |
Buffer buffer = |
207 | 209 |
bufferManager.createBuffer(tileStructImage.getRows(zoomLevel), tileStructImage.getColumns(zoomLevel), bandDataTypes, bandNoData, |
... | ... | |
210 | 212 |
return buffer; |
211 | 213 |
} |
212 | 214 |
|
215 |
private List<PageManager> getPageManagersInZoom(int zoomLevel) { |
|
216 |
List<PageManager> pageManagersInZoom = this.pageManagersPerZoomLevel.get(zoomLevel); |
|
217 |
if (pageManagersInZoom == null) { |
|
218 |
pageManagersInZoom = new ArrayList<PageManager>(); |
|
219 |
for (int i = 0; i < tileStructImage.getBandNumber(); i++) { |
|
220 |
pageManagersInZoom.add(new TileCacheBandPageManager(tileStructImage, zoomLevel, i)); |
|
221 |
} |
|
222 |
this.pageManagersPerZoomLevel.put(zoomLevel, pageManagersInZoom); |
|
223 |
} |
|
224 |
return pageManagersInZoom; |
|
225 |
} |
|
226 |
|
|
227 |
|
|
213 | 228 |
@Override |
214 | 229 |
public BandInfo getBandInfo(int band) { |
215 | 230 |
//FIXME |
... | ... | |
244 | 259 |
|
245 | 260 |
private void openEver() throws OpenException { |
246 | 261 |
try { |
262 |
|
|
247 | 263 |
getResource().execute(new ResourceAction() { |
248 | 264 |
|
249 | 265 |
public Object run() throws Exception { |
... | ... | |
254 | 270 |
|
255 | 271 |
//FIXME |
256 | 272 |
tileStructImage = new TileStructImage(folder,getTileCacheParameters().getCRS()); |
273 |
pageManagersPerZoomLevel = new HashMap<Integer, List<PageManager>>(); |
|
257 | 274 |
|
258 |
|
|
259 | 275 |
// if (getTileCacheParameters().getWldParams()!=null){ |
260 | 276 |
// envelope=createWLDEnvelope(getTileCacheParameters().getWldParams()); |
261 | 277 |
// }else{ |
Also available in: Unified diff