java环境Springboot框架中配置使用GDAL,并演示使用GDAL读取shapefile文件

news/2024/10/31 5:30:06/

GDAL是应用广泛的空间数据处理库,可以处理几何、栅格数据,Springboot是常用的JAVA后端开发框架。本文讲解如何在Springboot中配置使用GDAL。本文示例中使用的GDAL版本为3.4.1(64位)

图1 GDAL读取shp效果

一、部署GDAL类库

将GDAL编译后的dll类库,全部复制到java jdk的bin文件夹下,例如:D:\Program Files\Java\jdk1.8.0_251\bin,如下图所示。

GDAL配置教程链接:Java环境Springboot框架中配置使用GDAL教程

GDAL类库下载链接:https://download.csdn.net/download/tylkhx/87764263

图2 GDAL类库

二、配置环境变量

在系统变量的Path变量中添加“%JAVA_HOME%\bin”,配置好环境变量后,重启计算机,配置如下图所示。

图3 环境变量Path配置

三、配置jar包

在pom.xml中配置GDAL的jar包,代码如下。

​<dependency><groupId>org.gdal</groupId><artifactId>gdal</artifactId><version>3.4.1</version><scope>system</scope><systemPath>${project.basedir}/src/main/resources/gdal/gdalx64.jar</systemPath></dependency>​

jar包配置代码

四、GDAL初始化

在GDAL工具类中进行初始化,并在初始化中指定proj.db的路径,例如:“osr.SetPROJSearchPath(System.getenv("JAVA_HOME") + "\\bin");”,GDAL完整初始化代码如下。

  static {gdal.AllRegister();gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8","YES");gdal.SetConfigOption("SHAPE_ENCODING","CP936");gdal.SetConfigOption("FILEGDB_ENCODING","UTF-8");osr.SetPROJSearchPath(System.getenv("JAVA_HOME") + "\\bin");}

GDAL初始化代码


☛ FME系列视频教程推荐 ☚


  • 1.FME入门视频教程

  • 2.FME进阶视频教程

  • 3.FME案例实战教程


五、使用示例

使用GDAL读取shapefile,并打印其图形的wkt坐标串,代码及效果如下所示。关注微行公众号:“GIS工具乐园”,持续更新开发技巧分享哦。

public static void main(String[] args) throws IOException {String path = "C:/Users/HX/Desktop/test/示例数据/示例数据.shp";DataSource dataSource = ogr.Open(path,0);Layer layer = dataSource.GetLayer(0);long featureNum = layer.GetFeatureCount();for (long i=0;i<featureNum;i++){Feature feature = layer.GetNextFeature();Geometry geometry = feature.GetGeometryRef();String wkt = geometry.ExportToWkt();System.out.println("几何wkt:" + wkt);}}

使用示例代码

图4 读取shp效果


☟ 往期推荐 ☟


  • FME进阶视频教程:一起来深入学习FME软件的使用,轻松搞定通宵爆肝都干不完的工作

  • FME案例实战教程:聚焦实战应用,摆脱思路束缚,您值得拥有

  • FME入门视频教程-带你学习数据转换处理多面手FME软件的使用,让我们的工作事半功倍

  • 利用FME实现DLG数据无损转CAD地形图,实现CAD地物符号完美还原的解决方案

  • FME提取dwg扩展属性的通用方法,以提取CASS码为例,手把手详细版

  • dwg数据自动批量计算宗地红线内的建筑面积、附属建筑面积工具

  • 巧用WorkspaceRunner转换器,动态调用dwg模板文件,解决批量处理dwg数据时出现样式丢失问题

  • CAD地形图等高线标高批量取整工具,解决等高线标高出现小数的问题

  • GIS建筑面转CAD格式JMD,还原房屋建筑、层数


http://www.ppmy.cn/news/62047.html

相关文章

数字信号处理4

昨天是星期天&#xff0c;休息了一天&#xff0c;今天继续学习&#xff1a; 1、连续幅度信号的量化&#xff1a; 一个数字信号是一个数字序列&#xff0c;也就是说这个数字信号就可以用有限个数字来表示。 量化&#xff1a;通过把每个样本值表示为一个有限的数字&#xff0c…

[pgrx开发postgresql数据库扩展]附.更新开发环境安装脚本

pgrx更新到0.83之后&#xff0c;我本来还没感觉&#xff0c;但是我五一放假一来&#xff0c;发现我的WSL环境居然就挂了…… 果然是非稳定版本就是不靠谱了…… 所以我干脆搞了个虚拟机&#xff0c;重新安装了一套&#xff0c;还别说&#xff0c;更新到了0.83之后&#xff0c;安…

Yolov1 源码讲解 loss.py

结构 1.lt rb我觉得不是很合适 正确来说是lb rt 因为比较出来的都是左下和右上坐标 比如前两个&#xff0c;都是max出来的 选两个box左下坐标中最大的&#xff0c; 后两个则是右上坐标中最小的 那也就形成了交集面积 但是代码中仍然是lt rb我也就直接这样说 而算出lt和r…

数字孪生遇上VR:未来的新生态

数字孪生和虚拟现实&#xff08;VR&#xff09;是当今技术领域备受关注的两个概念。 数字孪生作为物理世界的数字映像&#xff0c;已经在许多行业得到了广泛应用。而VR则是一种基于计算机生成的三维交互式虚拟环境&#xff0c;被广泛应用于娱乐、教育和游戏等领域。 数字孪生…

【高并发】网络模式

I/O 多路复用 多线程创建 服务器的主进程负责监听客户的连接&#xff0c;一旦与客户端连接完成&#xff0c;accept() 函数就会返回一个「已连接 Socket」&#xff0c;这时就通过 fork() 函数创建一个子进程&#xff0c;实际上就把父进程所有相关的东西都复制一份&#xff0c;…

Illustrator如何使用图层与蒙版之实例演示?

文章目录 0.引言1.绘制可爱冰淇淋图标2.霓虹渐变立体文字海报3.炫彩花纹背景 0.引言 因科研等多场景需要进行绘图处理&#xff0c;笔者对Illustrator进行了学习&#xff0c;本文通过《Illustrator CC2018基础与实战》及其配套素材结合网上相关资料进行学习笔记总结&#xff0c;…

Docker服务编排(Docker Compose) :部署上线nginx+springboot项目

Docker服务编排(Docker Compose) 微服务应用一般包含若干个微服务每个微服务一般会部署多个实例&#xff0c;如果每个微服务需要手动启停 维护工作量大 从Dockerfile build image 或者去dockerhub拉去image 创建多个容器 管理容器 Docker Compose 一个编排多容器分布式…

面向航空智能制造的边缘计算光交换技术研究

源自&#xff1a;航空科学技术 作者&#xff1a;赵俊 吴宝锋 徐盛果 孙小菡 摘 要 面向航空智能制造大批量数据采集与传递的实时性要求&#xff0c;提出一种基于异步光分组交换&#xff08;optical packet switching,OPS&#xff09;技术的具有多级管理能力的边缘计算系统…