package geotool;
import org.gdal.gdal.Band;
import org.gdal.gdal.Dataset;
import org.gdal.gdal.Driver;
import org.gdal.gdal.gdal;
import org.gdal.gdalconst.gdalconstConstants;
/**
* 类描述 <p>
* @since 2019/10/8 14:11
*/
public class Jdal {
public static void main(String[] args)
{
String fileName_tif = "E:\\Austra\\DEM\\srtm_65_18.tif";
gdal.AllRegister();
Dataset hDataset = gdal.Open(fileName_tif, gdalconstConstants.GA_ReadOnly);
if (hDataset == null)
{
System.err.println("GDALOpen failed - " + gdal.GetLastErrorNo());
System.err.println(gdal.GetLastErrorMsg());
System.exit(1);
}
Driver hDriver = hDataset.GetDriver();
System.out.println("Driver: " + hDriver.getShortName() + "/" + hDriver.getLongName());
int iXSize = hDataset.getRasterXSize();
int iYSize = hDataset.getRasterYSize();
System.out.println("Size is " + iXSize + ", " + iYSize);
Band band = hDataset.GetRasterBand(1);
//这里是DEM数据,所以声明一个int数组来存储,如果是其他数据类型,声明相应的类型即可
int buf[] = new int[iXSize];
for(int i=0; i<10; i++)
{
//读取一行数据
band.ReadRaster(0, i, iXSize, 1, buf);
// 下面是输出像元值,为了方便,我只输出了左上角 10×10的范围内的数据
for(int j=0; j<10; j++) {
System.out.print(buf[j] + ", ");
}
System.out.println("\n");
}
hDataset.delete();
// 可选
gdal.GDALDestroyDriverManager();
}
}