import org.gdal.gdal.Dataset; //导入方法依赖的package包/类
/**
*
* @param imageFile
* @param band form files with multiple band
*/
public GeoToolsGDALReader(File imageFile,int band) {
this.imageFile=imageFile;
try {
gdal.AllRegister();
/*GDALUtilities.isGDALAvailable();
int count = gdal.GetDriverCount();
System.out.println(count + " available Drivers");
for (int i = 0; i < count; i++) {
try {
Driver driver = gdal.GetDriver(i);
System.out.println(" " + driver.getShortName() + " : "
+ driver.getLongName());
} catch (Exception e) {
System.err.println("Error loading driver " + i);
}
}
GDALImageReaderSpi spi=null;
IIORegistry iioRegistry = IIORegistry.getDefaultInstance();
final Class spiClass = ImageReaderSpi.class;
final Iterator iter = iioRegistry.getServiceProviders(spiClass,true);
while (iter.hasNext()) {
final ImageReaderSpi provider = (ImageReaderSpi) iter.next();
if (provider instanceof GDALImageReaderSpi) {
spi=(GDALImageReaderSpi)provider;
break;
}
}
GDALImageReader ir=(GDALImageReader) spi.createReaderInstance();
ImageInputStream fi=ImageIO.createImageInputStream(imageFile);
ir.setInput(fi);
BufferedImage bi= ir.read(1);*/
this.band=band;
//data=GDALUtilities.acquireDataSet(imageFile.getAbsolutePath(), gdalconstConstants.GA_ReadOnly);
data=(Dataset) gdal.Open(imageFile.getAbsolutePath(),gdalconst.GA_ReadOnly);
try{
xSize=data.getRasterXSize();
ySize=data.getRasterYSize();
bounds=new Rectangle(0,0,xSize,ySize);
}catch(Exception e){
bounds=null;
logger.warn("Problem reading size information");
}
} catch (Exception ex) {
logger.error(ex.getMessage(),ex);
}
}