前言
本文介绍如何在Java项目中使用Gdal进行开发,开发前需安装好Gdal环境。
Gdal的环境安装配置参考 Gdal环境配置(Windows系统)
一、pom.xml配置
1、在pom.xml中添加maven仓库配置
<repositories>
<repository>
<id>osgeo</id>
<name>OSGeo Release Repository</name>
<url>https://repo.osgeo.org/repository/release/</url>
<snapshots><enabled>false</enabled></snapshots>
<releases><enabled>true</enabled></releases>
</repository>
<repository>
<id>osgeo-snapshot</id>
<name>OSGeo Snapshot Repository</name>
<url>https://repo.osgeo.org/repository/snapshot/</url>
<snapshots><enabled>true</enabled></snapshots>
<releases><enabled>false</enabled></releases>
</repository>
</repositories>
2、添加依赖,jar包版本需与gdal安装版本匹配
<dependency>
<groupId>org.gdal</groupId>
<artifactId>gdal</artifactId>
<version>3.4.1</version>
</dependency>
二、初始化Gdal环境
public class GdalEnv {
public static void init() {
gdal.AllRegister();
#设置文件支持中文路径
gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES");
#避免中文乱码
gdal.SetConfigOption("SHAPE_ENCODING", "");
}
}
在调用Gdal API前需先执行一次gdal.AllRegister(),否则会报如下错误:
Native library load failed.
java.lang.UnsatisfiedLinkError: no gdalalljni in java.library.path
三、打开本地shapefile文件,读取图层信息
public static void main(String[] args) {
GdalEnv.init();
//第一个参数为shp文件路径,第二个参数0代表只读、1代表可写入数据
DataSource ds = ogr.Open("C:\\Gis\\test\\shp\\xx.shp", 0);
//获取图层
Layer layer = ds.GetLayer(0);
//遍历要素
Feature feature = layer.GetNextFeature();
while (feature != null) {
//获取空间对象,输出wkt格式
Geometry geometry = feature.GetGeometryRef();
System.out.println(geometry.ExportToWkt());
feature = layer.GetNextFeature();
}
}
运行后输出wkt字符串: