Gdal访问Postgresql中的栅格数据

前言

        Gdal功能非常强大,不仅可以访问shp、tif等保存在本地的空间数据,还支持访问保存在空间数据库中的空间数据。通过Gdal访问保存在Postgresql中的矢量数据和栅格数据略有差别,前面已经介绍过如何访问矢量数据,具体情况请看这里。OK,下面我们来具体看下如何用Gdal访问保存在Postgresql中的栅格数据。

1、编译Gdal支持Postgresql驱动

        默认编译的Gdal是不支持Postgresql驱动的,要通过Gdal访问保存在Postgresql中的栅格数据,必须重新编译Gdal使其支持Postgresql驱动,如果不知道该如何做,可查看这里

2、访问Postgresql中的栅格数据

        本文先将一个名为test的tif影像数据导入(未进行切片)到postgresql中,然后利用Gdal访问Postgresql,读取了该数据的转换系数长宽、波段数、一栅格上的值,并进行了输出,具体代码如下:

import org.gdal.gdal.Band;
import org.gdal.gdal.Dataset;
import org.gdal.gdal.gdal;
import org.gdal.gdalconst.gdalconstConstants;

public class HelloGDAL {
	public static void readRasterSpacial(){
	    String path = "PG:dbname=Test schema=public table=test host=localhost port=5432"
                        + " user=postgres password=postgres";
	    Dataset dataset = null;
	    try{
		gdal.AllRegister();
		gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8","YES");
		gdal.SetConfigOption("SHAPE_ENCODING","CP936");
			
 		dataset = gdal.Open(path, gdalconstConstants.GA_ReadOnly);
	        double[] trans = dataset.GetGeoTransform();
	        for(int i = 0; i < trans.length; i++){
	            System.out.println(trans[i]);
	        }
	        
	        Band band=dataset.GetRasterBand(1);
	        double[] data = new double[1];
	        band.ReadRaster(1000, 1000, 1, 1, data);
	        for(int i = 0; i < data.length; i++){
	            System.out.println(data[i]);
	        }
	        int xSize = dataset.getRasterXSize();
	        int ySzie = dataset.getRasterYSize();
	        int nBandCount = dataset.getRasterCount();
	        System.out.println("Size is " + xSize + ", " + ySzie + ", " + nBandCount);

	    }catch(Exception e){
		System.out.println(e.toString());
	    }finally{
		if(dataset != null){
		    dataset.delete();
		}
	        gdal.GDALDestroyDriverManager();
	    }
	}
	public static void main(String[] args) {
		readRasterSpacial();
	}
}

3、输出结果

参考文献

https://www.gdal.org/frmt_postgisraster.html

https://blog.csdn.net/theonegis/article/details/52585613

https://blog.csdn.net/theonegis/article/details/54427906

猜你喜欢

转载自blog.csdn.net/qq_24309981/article/details/84184772
今日推荐