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

news2024/12/23 13:06:11

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.coloradmin.cn/o/503336.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是点对点传输?什么是点对多传输

点对点技术&#xff08;peer-to-peer&#xff0c; 简称P2P&#xff09;又称对等互联网络技术&#xff0c;是一种网络新技术&#xff0c;依赖网络中参与者的计算能力和带宽&#xff0c;而不是把依赖都聚集在较少的几台服务器上。P2P网络通常用于通过Ad Hoc连接来连接节点。这类网…

WiFi(Wireless Fidelity)基础(四)

目录 一、基本介绍&#xff08;Introduction&#xff09; 二、进化发展&#xff08;Evolution&#xff09; 三、PHY帧&#xff08;&#xff08;PHY Frame &#xff09; 四、MAC帧&#xff08;MAC Frame &#xff09; 五、协议&#xff08;Protocol&#xff09; 六、安全&#x…

功能测试常用的测试用例大全

登录、添加、删除、查询模块是我们经常遇到的&#xff0c;这些模块的测试点该如何考虑 1)登录 ① 用户名和密码都符合要求(格式上的要求) ② 用户名和密码都不符合要求(格式上的要求) ③ 用户名符合要求&#xff0c;密码不符合要求(格式上的要求) ④ 密码符合要求&#xff0c;…

1_1torch学习

一、torch基础知识 1、torch安装 pytorch cuda版本下载地址&#xff1a;https://download.pytorch.org/whl/torch_stable.html 其中先看官网安装torch需要的cuda版本&#xff0c;之后安装cuda版本&#xff0c;之后采用pip 下载对应的torch的gpu版本whl来进行安装。使用pip安装…

Linux内核中的链表(list_head)使用分析

【摘要】本文分析了linux内核中的list_head数据结构的底层实现及其相关的各种调用源码&#xff0c;有助于理解内核中链表对象的使用。 二、内核中的队列/链表对象 在内核中存在4种不同类型的列表数据结构&#xff1a; singly-linked listssingly-linked tail queuesdoubly-lin…

SSM框架学习-bean生命周期理解

Spring启动&#xff0c;查找并加载需要被Spring管理的Bean&#xff0c;进行Bean的实例化&#xff08;反射机制&#xff09;&#xff1b;利用依赖注入完成 Bean 中所有属性值的配置注入&#xff1b; 第一类Aware接口&#xff1a; 如果 Bean 实现了 BeanNameAware 接口的话&#…

Yolov8改进---注意力机制:CoTAttention,效果秒杀CBAM、SE

1.CoTAttention 论文:https://arxiv.org/pdf/2107.12292.pdf CoTAttention网络是一种用于多模态场景下的视觉问答(Visual Question Answering,VQA)任务的神经网络模型。它是在经典的注意力机制(Attention Mechanism)上进行了改进,能够自适应地对不同的视觉和语言输入进…

day28_mysql

今日内容 零、 复习昨日 一、函数[了解,会用] 二、事务[重点,理解,面试] 三、索引[重点,理解,面试] 四、存储引擎 五、数据库范式 六、其他 零、 复习昨日 见晨考 一、函数 字符串函数数学函数日期函数日期-字符串转换函数流程函数 1.1 字符串函数 函数解释CHARSET(str)返回字…

一个简单的watch以及ESModule导入和解构的区别

背景 最近写了个很有意思的方法&#xff0c;感觉还蛮不错的就分享一下。起先是我在写calss组件的时候遇到一个问题&#xff0c;我需要监听一个导入的值&#xff0c;导入的值最开始是undefined&#xff0c;经过异步操作以后会得到一个新的值&#xff0c;而我需要在这个class组件…

[echarts] legend icon 自定义的几种方式

echarts 官方配置项 地址 一、默认 图例项的 icon circle, rect, roundRect, triangle, diamond, pin, arrow, none legend: {top: 5%,left: center,itemWidth: 20,itemHeight: 20,data: [{icon: circle, name: 搜索引擎},{icon: rect, name: 直接访问},{icon: roundRect, n…

分布式系统---MapReduce实现(Go语言)

一、说明 本次实验是基于MIT-6.824的课程&#xff0c;详情请参见官网主页下载源代码 二、MapReduce原理 2.1 经典的分布式模型 MapReduce是经典的分布式模型。通过Map函数和Reduce函数实现。 分布式计算&#xff0c;就是利用多台机器&#xff0c;完成一个任务。关于分布式…

算法第一天力扣---2651. 计算列车到站时间

1.题目要求&#xff1a; 给你一个正整数 arrivalTime 表示列车正点到站的时间&#xff08;单位&#xff1a;小时&#xff09;&#xff0c;另给你一个正整数 delayedTime 表示列车延误的小时数。 返回列车实际到站的时间。 注意&#xff0c;该问题中的时间采用 24 小时制。 示…

让ChatGPT猜你喜欢——ChatGPT后面的推荐系统

Chat GPT的大热&#xff0c;让人们的视线又一次聚焦于“人工智能”领域。通过与用户持续对话的形式&#xff0c;更加丰富的数据会不断滚动“雪球”&#xff0c;让Chat GPT的回答变得越来越智能&#xff0c;越来越接近用户最想要的答案。ChatGPT能否颠覆当下的推荐系统范式&…

第三章 灰度变换与空间滤波

第三章 灰度变换与空间滤波 3.1背景知识 ​ 空间域指图像平面本身。变换域的图像处理首先把一幅图像变换到变换域&#xff0c;在变换域中进行处理&#xff0c;然后通过反变换把处理结果返回到空间域。空间域处理主要分为灰度变换与空间滤波。 3.1.1 灰度变换和空间滤波基础 …

cmcc_simplerop

1,三连 2&#xff0c;IDA分析 溢出点&#xff1a; 偏移&#xff1a;0x144(错误) 这里动态重新测试了一下偏移&#xff1a; 正确偏移&#xff1a;0x20 3&#xff0c;找ROP 思路&#xff1a; 1、找系统调用号 2、ROPgadget找寄存器 3、写入/bin/sh ROPgadget --binary simpler…

7-2使用Redis构建任务队列

目录 7-2使用Redis构建任务队列 第1关&#xff1a;先进先出任务队列 1、rpush/lpush命令&#xff1a;rpush(name,values[values…]) 2、blpop&#xff1a;blpop(keys, timeout)和 lpop/rpop&#xff1a;lpop(name) 删并返回删除值 3、lpushx/rpushx&#xff1a;lpushx(name…

使用CKKS全同态求近似倒数(近似乘法逆元)

求倒数的算法 两个数互为倒数&#xff0c;是说这两个数乘起来等1.比如a和b互为倒数&#xff0c;那么ab1. 5的倒数是0.2&#xff0c;我们可以很简单的求出来&#xff0c;但是如何在密文域中求一个数的倒数呢&#xff1f; 文章《An investigation of complex operations with …

C#自适应布局

注意事项&#xff1a;不要在Form1中添加任何布局&#xff0c;页面背景不设置图片 步骤&#xff1a; 1、在项目中添加AutoWindowsSize.cs类&#xff0c;内容如下&#xff1a; using System; using System.Collections.Generic; using System.ComponentModel; using System.Da…

2.2 掌握 NumPy 矩阵与通用函数

2.2 掌握 NumPy 矩阵与通用函数 2.2.1 创建NumPy矩阵创建NumPy矩阵矩阵的运算矩阵的属性 2.2.2 掌握ufunc函数1、常用的ufunc函数运算2、ufunc函数的广播机制 2.2.1 创建NumPy矩阵 创建NumPy矩阵 1、使用mat函数创建矩阵&#xff1a; matr1 np.mat(“1 2 3;4 5 6;7 8 9”) 2…

casbin轻量级的基于配置的授权框架

简介 Casbin是一个强大的、高效的开源访问控制框架&#xff0c;其权限管理机制支持多种访问控制模型。 Casbin提供了一个执行者 根据提供给执行者的策略和模型文件验证传入的请求。再根据对应的配置授权策略&#xff0c;验证请求判断释放那些行动。 在 Casbin 中, 访问控制模…