1. GDAL简介
GDAL(Geospatial Data Abstraction Library)是一个开源的地理空间数据抽象库,用于处理各种栅格和矢量地理空间数据格式。它提供了一个统一的抽象数据模型,用于访问各种地理空间文件格式。GDAL通常用于GIS(地理信息系统)、遥感和地理空间分析等领域,可以用来转换不同的文件格式、处理栅格数据以及处理地理空间元数据。如果你在处理地理数据,GDAL是一个非常强大和实用的工具!
GDAL的一个用c++语言编写的库,用于处理地理信息相关的数据包括转换,识别数据,格式化数据以及解析同时提供第三方语言的SDK包括python,java。上述需要编译后使用 java是需要使用jni接口调用实现方法在window平台是DLL文件,在linux平台是so文件,最后需要使用和初始化服务。
2. GDAL在windows中开发环境的配置
2.1 下载GDAL
进入网站http://www.gisinternals.com/release.php选择合适的版本下载。
不想去官网可以直接用我的下载好的资源:
https://download.csdn.net/download/c18213590220/88567662?spm=1001.2014.3001.5503
下载后会得到一个压缩包,解压到你所选文件目录。
2.2 配置环境变量
环境变量的配置应当参考SDKShell.bat里面的内容进行配置
可以看到上图中有GDAL_DATA,GDAL_DRIVER_PATH,PATH,PYTHONPATH这几个变量,由于我的是java,所以不用配置PYTHONPATH,故将 其他几个变量配置到环境变量中即可。
1. 配置GDAL_DATA
2. 配置GDAL_DRIVER_PATH
3. 新增path变量
我这里只配置了bin路径也是可以的
2.3 Springboot环境配置
引入maven
<dependency> <groupId>org.gdal</groupId> <artifactId>gdal</artifactId> <version>3.2.0</version> </dependency>
将\bin\gdal\java路径下的gdal.jar和gdalalljni.dll配置到sprinboot项目中,将gdal.jar放置到resource/lib目录下,将gdalalljni.dll放置到项目的根路径下。
完成上述步骤就完成了GDAL环境配置
2.4 GDAL代码测试
我这里准备了一个基于shp裁剪tif影像的单元测试
@Test
void test3(){
gdal.AllRegister();
String inputImagePath ="D:\\gdal测试\\out22.tif"; // 输入影像文件路径
String outputImagePath = "D:\\gdal测试\\out1126.tif"; // 输出影像文件路径
String cutlinePath = "D:\\gdal测试\\裁剪面\\裁剪面.shp"; // 多边形文件路径
// 打开输入影像
Dataset inputDataset = gdal.Open(inputImagePath, gdalconst.GA_ReadOnly);
if (inputDataset == null) {
System.err.println("无法打开输入影像文件");
System.exit(1);
}
// 设置裁剪选项
Vector<String> warpOptions = new Vector<>();
warpOptions.add("-cutline");
warpOptions.add(cutlinePath);
warpOptions.add("-crop_to_cutline");
warpOptions.add("-of");
warpOptions.add("GTiff"); // 输出格式为 GeoTIFF,可以根据需要调整
// 创建 WarpOptions
WarpOptions options = new WarpOptions(warpOptions);
// 裁剪影像
Dataset clippedDataset = gdal.Warp(outputImagePath, new Dataset[]{inputDataset}, options);
// 释放资源
inputDataset.delete();
clippedDataset.delete();
}
代码运行成功了,我去看了数据也跑出来了,虽然有Can't load requested DLL等系列报错,但是我网上查了说这种错误可以不用管。
运行结果:
这里贴一下我参考的连接:
java : springboot 整合 GDAL做shp解析 (shp转geojson) 踩坑合集 2020-07_springboot shp-CSDN博客