概要
java/c#: gdal连接postgresql读取栅格表
技术细节
GDAL的数据源可以在连接字符串中指定,而不仅仅是文件路径,在查询和索引中可以获取给定位置的海拔。基本的 PostGIS 栅格连接字符串位于GDAL官网
PG:“[host=‘’] [port:‘’] dbname=‘’ [user=‘’] [password=‘’] [schema=‘’] [table=‘’] [column=‘’] [where=‘’] [mode=‘’] [outdb_resolution=‘’]”
矢量连接
// 先对gdal进行注册
org.gdal.gdal.gdal.AllRegister();
org.gdal.ogr.ogr.RegisterAll();
// 连接地址,所需参数见名知意;
// SchamaName是postgresql的架构
// postgresql的库表结构是: 库-架构-表
String url = "PG:dbname=" + databaseName
+ " host=" + host
+ " port=" + port
+ " user=" + user
+ " password=" + pwd
+ " active_schema=" + schemaName
+ " tables=" + tableName;
Driver driver = ogr.GetDriverByName("PostgreSQL");
// 0:只读;1:读写
DataSource dataSource = driver.Open(filePath,1);
Layer layer = ds.GetLayerByIndex(0);
// 下面写你的代码逻辑
......
// 释放资源
ds.delete();
栅格连接
// mode=1/2:
// 1:适用于单表:单栅格
// 1.1 一张表中每条数据都是一个独立的栅格文件,未进行切块的栅格,如果需要读取指定的栅格文件,需要添加where参数,例如:where='rid=1',拼接在mode后面或任意位置
// 2: 适用于单表,对栅格文件进行分割了的表
// 2.1:一张表中所有的栅格属于一个栅格文件,对栅格进行切块后进行存储的
String url = "PG:dbname=" + databaseName
+ " host=" + host
+ " port=" + port
+ " user=" + user
+ " password=" + pwd
+ " schema=" + schemaName
+ " table=" + tableName
+ " mode=" + mode;
// 0:只读;1:读写
Dataset dataset = gdal.Open(fileName, 0);
// 获取波段,进行代码逻辑编写
// 释放资源
dataset.delete();