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博客

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐