0
点赞
收藏
分享

微信扫一扫

gdal 读取geotif

墨春 2021-09-21 阅读 50
public开源
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();
    }
}

举报

相关推荐

0 条评论