Revision 2259 org.gvsig.raster.ermapper/branches/org.gvsig.raster.ermapper_dataaccess_refactoring/org.gvsig.raster.ermapper.io/src/main/java/org/gvsig/raster/ermapper/io/ErmapperProvider.java
ErmapperProvider.java | ||
---|---|---|
22 | 22 |
package org.gvsig.raster.ermapper.io; |
23 | 23 |
|
24 | 24 |
import java.awt.geom.AffineTransform; |
25 |
import java.awt.geom.NoninvertibleTransformException; |
|
26 | 25 |
import java.awt.geom.Point2D; |
27 | 26 |
import java.io.BufferedReader; |
28 | 27 |
import java.io.File; |
... | ... | |
49 | 48 |
import org.gvsig.fmap.dal.spi.DataManagerProviderServices; |
50 | 49 |
import org.gvsig.fmap.dal.spi.DataStoreProviderServices; |
51 | 50 |
import org.gvsig.metadata.MetadataLocator; |
52 |
import org.gvsig.raster.cache.tile.provider.TileListener; |
|
53 | 51 |
import org.gvsig.raster.cache.tile.provider.TileServer; |
52 |
import org.gvsig.raster.impl.buffer.SpiRasterQuery; |
|
54 | 53 |
import org.gvsig.raster.impl.datastruct.ExtentImpl; |
55 | 54 |
import org.gvsig.raster.impl.process.RasterTask; |
56 | 55 |
import org.gvsig.raster.impl.process.RasterTaskQueue; |
57 |
import org.gvsig.raster.impl.provider.DefaultRasterProvider;
|
|
56 |
import org.gvsig.raster.impl.provider.AbstractRasterProvider;
|
|
58 | 57 |
import org.gvsig.raster.impl.provider.RasterProvider; |
59 | 58 |
import org.gvsig.raster.impl.provider.tile.FileTileServer; |
60 | 59 |
import org.gvsig.raster.impl.store.AbstractRasterDataParameters; |
60 |
import org.gvsig.raster.impl.store.DefaultRasterStore; |
|
61 | 61 |
import org.gvsig.raster.impl.store.DefaultStoreFactory; |
62 | 62 |
import org.gvsig.raster.impl.store.properties.DataStoreColorInterpretation; |
63 | 63 |
import org.gvsig.raster.impl.store.properties.DataStoreTransparency; |
... | ... | |
74 | 74 |
* |
75 | 75 |
* @author Nacho Brodin (nachobrodin@gmail.com) |
76 | 76 |
*/ |
77 |
public class ErmapperProvider extends DefaultRasterProvider implements JNCSProgressiveUpdate {
|
|
77 |
public class ErmapperProvider extends AbstractRasterProvider implements JNCSProgressiveUpdate {
|
|
78 | 78 |
//private static final Logger logger = LoggerFactory.getLogger(ErmapperProvider.class); |
79 | 79 |
public static String NAME = "Ermapper Store"; |
80 | 80 |
public static String DESCRIPTION = "Ermapper Raster file"; |
... | ... | |
251 | 251 |
return null; |
252 | 252 |
} |
253 | 253 |
|
254 |
/* |
|
255 |
* (non-Javadoc) |
|
256 |
* @see org.gvsig.raster.impl.provider.DefaultRasterProvider#load() |
|
257 |
*/ |
|
258 | 254 |
public RasterProvider load() { |
259 | 255 |
ownTransformation = new AffineTransform(file.cellIncrementX, 0, 0, file.cellIncrementY, file.originX, file.originY); |
260 | 256 |
externalTransformation = (AffineTransform) ownTransformation.clone(); |
261 | 257 |
return this; |
262 | 258 |
} |
263 | 259 |
|
264 |
/* |
|
265 |
* (non-Javadoc) |
|
266 |
* @see org.gvsig.raster.impl.provider.RasterProvider#isOpen() |
|
267 |
*/ |
|
268 | 260 |
public boolean isOpen() { |
269 | 261 |
return open; |
270 | 262 |
} |
271 | 263 |
|
272 |
/* |
|
273 |
* (non-Javadoc) |
|
274 |
* @see org.gvsig.raster.impl.provider.DefaultRasterProvider#close() |
|
275 |
*/ |
|
276 | 264 |
public void close() { |
277 | 265 |
if(file != null) { |
278 | 266 |
open = false; |
... | ... | |
283 | 271 |
} |
284 | 272 |
} |
285 | 273 |
|
286 |
/* |
|
287 |
* (non-Javadoc) |
|
288 |
* @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getTransparency() |
|
289 |
*/ |
|
290 | 274 |
public Transparency getTransparency() { |
291 | 275 |
if(fileTransparency == null) |
292 | 276 |
fileTransparency = new DataStoreTransparency(); |
293 | 277 |
return fileTransparency; |
294 | 278 |
} |
295 | 279 |
|
296 |
/* |
|
297 |
* (non-Javadoc) |
|
298 |
* @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getWidth() |
|
299 |
*/ |
|
300 | 280 |
public double getWidth() { |
301 | 281 |
return file.width; |
302 | 282 |
} |
303 | 283 |
|
304 |
/* |
|
305 |
* (non-Javadoc) |
|
306 |
* @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getHeight() |
|
307 |
*/ |
|
308 | 284 |
public double getHeight() { |
309 | 285 |
return file.height; |
310 | 286 |
} |
311 | 287 |
|
312 |
/* |
|
313 |
* (non-Javadoc) |
|
314 |
* @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getView() |
|
315 |
*/ |
|
316 | 288 |
public Extent getView() { |
317 | 289 |
return viewRequest; |
318 | 290 |
} |
319 | 291 |
|
320 |
/* |
|
321 |
* (non-Javadoc) |
|
322 |
* @see org.gvsig.raster.impl.provider.DefaultRasterProvider#setView(org.gvsig.fmap.dal.coverage.datastruct.Extent) |
|
323 |
*/ |
|
324 | 292 |
public void setView(Extent e) { |
325 | 293 |
viewRequest = new ExtentImpl(e); |
326 | 294 |
} |
327 | 295 |
|
328 |
/* |
|
329 |
* (non-Javadoc) |
|
330 |
* @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getWindowRaster(double, double, double, double, int, int, org.gvsig.fmap.dal.coverage.datastruct.BandList, org.gvsig.raster.cache.tile.provider.TileListener) |
|
331 |
*/ |
|
332 |
public void getWindow(Extent ex, int bufWidth, int bufHeight, |
|
333 |
BandList bandList, TileListener listener, TaskStatus status)throws ProcessInterruptedException, RasterDriverException { |
|
334 |
|
|
296 |
@Override |
|
297 |
public void loadBuffer(SpiRasterQuery query) |
|
298 |
throws ProcessInterruptedException, RasterDriverException { |
|
299 |
setView(query.getAdjustedRequestBoundingBox()); |
|
300 |
int bufWidth = query.getAdjustedBufWidth(); |
|
301 |
int bufHeight = query.getAdjustedBufHeight(); |
|
302 |
int[] stpBuffer = new int[]{0, 0 , bufWidth, bufHeight}; |
|
303 |
loadBuffer(viewRequest, |
|
304 |
bufWidth, |
|
305 |
bufHeight, |
|
306 |
query.getBufferForProviders(), |
|
307 |
query.getBandList(), |
|
308 |
stpBuffer, |
|
309 |
query.getTaskStatus()); |
|
335 | 310 |
} |
311 |
|
|
336 | 312 |
|
337 |
/* |
|
338 |
* (non-Javadoc) |
|
339 |
* @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getWindowRaster(double, double, double, double, org.gvsig.fmap.dal.coverage.datastruct.BandList, org.gvsig.fmap.dal.coverage.dataset.Buffer) |
|
340 |
*/ |
|
341 |
public Buffer getWindow(Extent ex, BandList bandList, Buffer rasterBuf, TaskStatus status) |
|
313 |
/*public Buffer getWindow(Extent ex, BandList bandList, Buffer rasterBuf, TaskStatus status) |
|
342 | 314 |
throws ProcessInterruptedException, RasterDriverException { |
343 | 315 |
|
344 | 316 |
if(status != null && status.isCancelled()) |
... | ... | |
368 | 340 |
return null; |
369 | 341 |
|
370 | 342 |
return rasterBuf; |
371 |
} |
|
343 |
}*/
|
|
372 | 344 |
|
373 |
/* |
|
374 |
* (non-Javadoc) |
|
375 |
* @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getWindowRaster(double, double, double, double, org.gvsig.fmap.dal.coverage.datastruct.BandList, org.gvsig.fmap.dal.coverage.dataset.Buffer, boolean) |
|
376 |
*/ |
|
377 |
public Buffer getWindow(double ulx, double uly, double w, double h, |
|
345 |
/*public Buffer getWindow(double ulx, double uly, double w, double h, |
|
378 | 346 |
BandList bandList, Buffer rasterBuf, boolean adjustToExtent, TaskStatus status) throws ProcessInterruptedException, RasterDriverException { |
379 | 347 |
//El incremento o decremento de las X e Y depende de los signos de rotaci?n y escala en la matriz de transformaci?n. Por esto |
380 | 348 |
//tenemos que averiguar si lrx es x + w o x -w, asi como si lry es y + h o y - h |
... | ... | |
420 | 388 |
return null; |
421 | 389 |
|
422 | 390 |
return rasterBuf; |
423 |
} |
|
391 |
}*/
|
|
424 | 392 |
|
425 |
/* |
|
426 |
* (non-Javadoc) |
|
427 |
* @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getWindowRaster(double, double, double, double, int, int, org.gvsig.fmap.dal.coverage.datastruct.BandList, org.gvsig.fmap.dal.coverage.dataset.Buffer, boolean) |
|
428 |
*/ |
|
429 |
public Buffer getWindow(Extent extent, int bufWidth, int bufHeight, |
|
393 |
/*public Buffer getWindow(Extent extent, int bufWidth, int bufHeight, |
|
430 | 394 |
BandList bandList, Buffer rasterBuf, boolean adjustToExtent, TaskStatus status) throws ProcessInterruptedException, RasterDriverException { |
431 | 395 |
|
432 | 396 |
if(status != null && status.isCancelled()) |
... | ... | |
460 | 424 |
return null; |
461 | 425 |
|
462 | 426 |
return rasterBuf; |
463 |
} |
|
427 |
}*/
|
|
464 | 428 |
|
465 |
/* |
|
466 |
* (non-Javadoc) |
|
467 |
* @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getWindowRaster(int, int, int, int, int, int, org.gvsig.fmap.dal.coverage.datastruct.BandList, org.gvsig.fmap.dal.coverage.dataset.Buffer) |
|
468 |
*/ |
|
469 |
public Buffer getWindow(int x, int y, int w, int h, |
|
429 |
/*public Buffer getWindow(int x, int y, int w, int h, |
|
470 | 430 |
BandList bandList, Buffer rasterBuf, TaskStatus status) throws ProcessInterruptedException, RasterDriverException { |
471 | 431 |
|
472 | 432 |
if(status != null && status.isCancelled()) |
... | ... | |
484 | 444 |
return null; |
485 | 445 |
|
486 | 446 |
return rasterBuf; |
487 |
} |
|
447 |
}*/
|
|
488 | 448 |
|
489 | 449 |
/** |
490 | 450 |
* Carga el buffer con las bandas RGB del raster con los par?metros especificados de extensi?n |
... | ... | |
714 | 674 |
public void reProject(ICoordTrans rp) { |
715 | 675 |
} |
716 | 676 |
|
717 |
/* |
|
718 |
* (non-Javadoc) |
|
719 |
* @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getBlockSize() |
|
720 |
*/ |
|
721 | 677 |
public int getBlockSize() { |
722 | 678 |
return 0; |
723 | 679 |
} |
724 | 680 |
|
725 |
/* |
|
726 |
* (non-Javadoc) |
|
727 |
* @see org.gvsig.raster.impl.provider.DefaultRasterProvider#readCompleteLine(int, int) |
|
728 |
*/ |
|
729 | 681 |
public Object readCompleteLine(int line, int band) throws InvalidSetViewException, FileNotOpenException, RasterDriverException { |
730 | 682 |
if(line < 0 || line >= file.height || band < 0 || band >= getBandCount()) |
731 | 683 |
throw new InvalidSetViewException("Request out of grid"); |
... | ... | |
783 | 735 |
return null; |
784 | 736 |
} |
785 | 737 |
|
786 |
/* |
|
787 |
* (non-Javadoc) |
|
788 |
* @see org.gvsig.raster.impl.provider.DefaultRasterProvider#readBlock(int, int) |
|
789 |
*/ |
|
790 | 738 |
public Object readBlock(int pos, int blockHeight, double scale) throws InvalidSetViewException, FileNotOpenException, RasterDriverException, ProcessInterruptedException { |
791 | 739 |
RasterTask task = RasterTaskQueue.get(Thread.currentThread().getId() + ""); |
792 | 740 |
if(pos < 0) |
... | ... | |
849 | 797 |
return buf; |
850 | 798 |
} |
851 | 799 |
|
852 |
/* |
|
853 |
* (non-Javadoc) |
|
854 |
* @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getData(int, int, int) |
|
855 |
*/ |
|
856 | 800 |
public Object getData(int x, int y, int band)throws InvalidSetViewException, FileNotOpenException, RasterDriverException { |
857 | 801 |
if(x < 0 || y < 0 || x >= file.width || y >= file.height) |
858 | 802 |
throw new InvalidSetViewException("Request out of grid"); |
... | ... | |
893 | 837 |
} |
894 | 838 |
} |
895 | 839 |
|
896 |
/* |
|
897 |
* (non-Javadoc) |
|
898 |
* @see com.ermapper.ecw.JNCSProgressiveUpdate#refreshUpdate(int, int, double, double, double, double) |
|
899 |
*/ |
|
900 | 840 |
public void refreshUpdate(int arg0, int arg1, double arg2, double arg3, double arg4, double arg5) { |
901 | 841 |
} |
902 | 842 |
|
903 |
/* |
|
904 |
* (non-Javadoc) |
|
905 |
* @see com.ermapper.ecw.JNCSProgressiveUpdate#refreshUpdate(int, int, int, int, int, int) |
|
906 |
*/ |
|
907 | 843 |
public void refreshUpdate(int arg0, int arg1, int arg2, int arg3, int arg4, int arg5) { |
908 | 844 |
} |
909 | 845 |
|
910 |
/* |
|
911 |
* (non-Javadoc) |
|
912 |
* @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getColorInterpretation() |
|
913 |
*/ |
|
914 | 846 |
public DataStoreColorInterpretation getColorInterpretation(){ |
915 | 847 |
if(colorInterpr == null) { |
916 | 848 |
colorInterpr = new DataStoreColorInterpretation(); |
... | ... | |
926 | 858 |
return colorInterpr; |
927 | 859 |
} |
928 | 860 |
|
929 |
/* |
|
930 |
* (non-Javadoc) |
|
931 |
* @see org.gvsig.raster.impl.provider.RasterProvider#getOverviewCount(int) |
|
932 |
*/ |
|
933 | 861 |
public int getOverviewCount(int band) throws BandAccessException, RasterDriverException { |
934 | 862 |
if(band >= getBandCount()) |
935 | 863 |
throw new BandAccessException("Wrong band"); |
936 | 864 |
return 0; |
937 | 865 |
} |
938 | 866 |
|
939 |
/* |
|
940 |
* (non-Javadoc) |
|
941 |
* @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getOverviewWidth(int, int) |
|
942 |
*/ |
|
943 | 867 |
public int getOverviewWidth(int band, int overview) throws BandAccessException, RasterDriverException { |
944 | 868 |
if (band >= getBandCount()) |
945 | 869 |
throw new BandAccessException("Wrong band"); |
946 | 870 |
return 0; |
947 | 871 |
} |
948 | 872 |
|
949 |
/* |
|
950 |
* (non-Javadoc) |
|
951 |
* @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getOverviewHeight(int, int) |
|
952 |
*/ |
|
953 | 873 |
public int getOverviewHeight(int band, int overview) throws BandAccessException, RasterDriverException { |
954 | 874 |
if (band >= getBandCount()) |
955 | 875 |
throw new BandAccessException("Wrong band"); |
956 | 876 |
return 0; |
957 | 877 |
} |
958 | 878 |
|
959 |
/* |
|
960 |
* (non-Javadoc) |
|
961 |
* @see org.gvsig.raster.impl.provider.DefaultRasterProvider#isOverviewsSupported() |
|
962 |
*/ |
|
963 | 879 |
public boolean isOverviewsSupported() { |
964 | 880 |
return false; |
965 | 881 |
} |
... | ... | |
969 | 885 |
return file.projection; |
970 | 886 |
} |
971 | 887 |
|
972 |
/* |
|
973 |
* (non-Javadoc) |
|
974 |
* @see org.gvsig.raster.impl.provider.DefaultRasterProvider#getWktProjection() |
|
975 |
*/ |
|
976 | 888 |
public String getWktProjection() { |
977 | 889 |
return null; |
978 | 890 |
} |
979 | 891 |
|
980 |
/* |
|
981 |
* (non-Javadoc) |
|
982 |
* @see org.gvsig.fmap.dal.spi.DataStoreProvider#getName() |
|
983 |
*/ |
|
984 | 892 |
public String getName() { |
985 | 893 |
return NAME; |
986 | 894 |
} |
987 | 895 |
|
988 |
/* |
|
989 |
* (non-Javadoc) |
|
990 |
* @see org.gvsig.raster.impl.provider.RasterProvider#setStatus(org.gvsig.raster.impl.provider.RasterProvider) |
|
991 |
*/ |
|
992 | 896 |
public void setStatus(RasterProvider provider) { |
993 | 897 |
if(provider instanceof ErmapperProvider) { |
994 | 898 |
//Not implemented yet |
995 | 899 |
} |
996 | 900 |
} |
997 | 901 |
|
998 |
/* |
|
999 |
* (non-Javadoc) |
|
1000 |
* @see org.gvsig.raster.impl.provider.DefaultRasterProvider#isSupersamplingSupported() |
|
1001 |
*/ |
|
1002 | 902 |
public boolean isSupersamplingSupported() { |
1003 | 903 |
return false; |
1004 | 904 |
} |
1005 | 905 |
|
1006 |
/* |
|
1007 |
* (non-Javadoc) |
|
1008 |
* @see org.gvsig.raster.impl.provider.RasterProvider#getTileServer() |
|
1009 |
*/ |
|
1010 | 906 |
public TileServer getTileServer() { |
1011 |
if(tileServer == null) |
|
1012 |
tileServer = new FileTileServer(this); |
|
907 |
if(tileServer == null) { |
|
908 |
DefaultRasterStore store = new DefaultRasterStore(); |
|
909 |
store.setProvider(this); |
|
910 |
tileServer = new FileTileServer(store); |
|
911 |
} |
|
1013 | 912 |
return tileServer; |
1014 | 913 |
} |
1015 |
|
|
1016 | 914 |
} |
Also available in: Unified diff