GDAL被java调用 Cannot find proj.db

现象

Java调用GDAL,运行时提示

ERROR 1: PROJ: proj_identify: Cannot find proj.db

对策

环境变量增加:
PROJ_LIB=D:\gdal-3.1.2\bin\proj6\share

GDALJava API中,band.ReadRaster()方法是用来读取一个数据集中的指定波段的像素值的方法。该方法的参数包括起始行、起始列、读取的行数、读取的列数以及一个数据缓冲区。读取到的像素值会被存储到这个数据缓冲区中。这个方法的返回值为一个布尔值,表示读取是否成功。 具体来说,该方法的语法为: ``` public boolean ReadRaster(int xoff, int yoff, int xsize, int ysize, int buf_xsize, int buf_ysize, int buf_type, byte[] buffer, int buf_pixel_space, int buf_line_space) ``` 其中,各参数的含义如下: - xoff:起始列的位置(从0开始) - yoff:起始行的位置(从0开始) - xsize:读取的列数 - ysize:读取的行数 - buf_xsize:缓冲区的列数 - buf_ysize:缓冲区的行数 - buf_type:缓冲区中像素值的数据类型,可以是以下类型之一: - DataType.GDT_Byte - DataType.GDT_Int16 - DataType.GDT_UInt16 - DataType.GDT_Int32 - DataType.GDT_UInt32 - DataType.GDT_Float32 - DataType.GDT_Float64 - buffer:用于存储读取到的像素值的缓冲区 - buf_pixel_space:缓冲区中相邻像素值之间的字节数 - buf_line_space:缓冲区中相邻行之间的字节数 例如,下面的代码片段演示了如何使用band.ReadRaster()方法读取第一个波段中的所有像素值: ```java import org.gdal.gdal.Band; import org.gdal.gdal.Dataset; import org.gdal.gdal.gdal; import org.gdal.gdalconst.gdalconst; public class ReadRasterExample { public static void main(String[] args) { // 注册GDAL驱动程序 gdal.AllRegister(); // 打开数据集 Dataset dataset = gdal.Open("path/to/dataset.tif", gdalconst.GA_ReadOnly); // 获取第一个波段 Band band = dataset.GetRasterBand(1); // 读取所有像素值 int width = dataset.getRasterXSize(); int height = dataset.getRasterYSize(); byte[] buffer = new byte[width * height]; band.ReadRaster(0, 0, width, height, width, height, gdalconst.GDT_Byte, buffer, 0, 0); // 输出像素值 for (int i = 0; i < buffer.length; i++) { System.out.print(buffer[i] + " "); } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值