1.简介
GDAL(Geospatial Data Abstraction Library)是一个开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。
GDAL使用C++开发,因此要在Java环境下使用GDAL库,要用jni的方法调用dll库,我们可以下载GDAL的源码,按照官网的指引,在自己的Visual Studio里编译出dll。但是最省事的做法就是调用别人已经编译生成好的符合jni标准的动态dll库和jar包了,推荐这个网址:http://www.gisinternals.com/release.php,下载合适的文件。
本人下载的是
2.设置系统环境变量指定dll路径
右键计算机——》属性——》高级系统设置——》环境变量——》新建系统变量:
新建系统变量GDAL32_DLL
变量名:GDAL32_DLL
变量值:E:\release-1911-x64-gdal-2-3-2-mapserver-7-2-1\bin;E:\release-1911-x64-gdal-2-3-2-mapserver-7-2-1\bin\gdal\java
名字可以自己定义,指定GDAL DLL路径位置,和GDAL java版编译出路径。
在Path前面增加(如果没有Path系统变量,则新建)"%GDAL32_DLL%;",即path变为
%GDAL32_DLL%;%JAVA_HOME%/。。。。。。
3.后端加载jar包,通过pom.xml从maven仓库下载jar包(E:\release-1911-x64-gdal-2-3-2-mapserver-7-2-1自带的jar包不太好使)
4.示例
import org.gdal.ogr.*; import static org.gdal.ogr.ogrConstants.wkbMultiPolygon; import static org.gdal.ogr.ogrConstants.wkbPoint;
生成缓冲区
@RequestMapping(value = "/buffer")
@ResponseBody
public String buffer(){
List<Poi> user1=poiMapper.findUserALL();
Geometry buffers=new Geometry(wkbMultiPolygon);
for(int i=0;i<user1.size();i++){
Float x= user1.get(i).getX();
Float y= user1.get(i).getY();
Geometry point=new Geometry(wkbPoint);
point.AddPoint(x,y);
Geometry buffer= point.Buffer(500);//单位是米
buffers.AddGeometry(buffer);
}
return buffers.ExportToJson();
}
5.GDAL(java版)api