当前位置: 首页 > news >正文

利用GeoTools实现导出MySQL地理数据表为shp格式

概述

将数据库中的地理数据导出为Shp格式是常见的应用场景。本文利用Java的Geotools地理工具包将MySQL数据库的地理数据表导出为shp文件并压缩保存,通过Spring Boot框架提供一个REST api接口下载。

技术栈:Java、Spring Boot、Mybatis、Geotools、JTS、MySQL等。
导出结果:在这里插入图片描述在这里插入图片描述

关键代码

数据库表

数据库中geo字段是geometry类型,可以存储POINT、LINESTRING、POLYGON格式的空间数据。在实体类中,先用字符串类型存储查询到的WKT格式的数据,在代码中再将WKT转换为Geometry实例对象。当然,你也可以通过handleType的方式实现自动转换。

package org.example.demo;import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.locationtech.jts.geom.Geometry;@Data
@TableName("geometries")
public class GeoModel {@TableIdprivate Long id;private String name;private String geo;private Geometry geometry;
}

依赖

  1. 添加仓库地址
    <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>
  1. gt-main、gt-shapefile、jts-core等关键依赖
    注意:gt-shapefile等包中依赖了jts-core的包,如果两个包版本不兼容则程序会报错,提示确实某些图斑处理的方法。本文通过试验,使用了如下版本,并排除gt-shapefile等内部依赖包jts-core,实现解决兼容性问题。
        <dependency><groupId>org.geotools</groupId><artifactId>gt-main</artifactId><version>25.2</version><!-- 排除旧版 JTS --><exclusions><exclusion><groupId>org.locationtech.jts</groupId><artifactId>jts-core</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.geotools</groupId><artifactId>gt-shapefile</artifactId><version>25.2</version><!-- 排除旧版 JTS --><exclusions><exclusion><groupId>org.locationtech.jts</groupId><artifactId>jts-core</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.locationtech.jts</groupId><artifactId>jts-core</artifactId><version>1.20.0</version

相关文章:

  • DHT11介绍
  • 对于Python虚拟环境的理解
  • YOLOv8模型剪枝笔记(DepGraph和Network Slimming网络瘦身)
  • C++(29):结构体
  • SpringBoot Day_03|数据校验|异常处理|日志级别|定时器
  • 位运算及其算法
  • 并发编程 之 可见性、原子性、volatile、synchronized、Java内存模型的深入剖析
  • Google机器学习实践指南(梯度下降篇)
  • 裸机任务调度框架、DMA、空闲中断
  • Linux安装SRILM
  • HCIP(广域网)
  • 养生指南:五维守护身心健康
  • Spring Boot 注解 @ConditionalOnMissingBean是什么
  • 【Bluedroid】蓝牙 HID Host connect全流程源码解析
  • 通过云服务器实现异地组网 部署WireGuard
  • LeetCode Hot100 (双指针)
  • F5《2025年应用战略现状》报告:AI 落地加速,企业战略从讨论迈向行动
  • 【风控】模型算法区分度指标KS
  • 【C++进阶篇】红黑树的实现(赋源码)
  • 【软件使用】RSS(Really Simple Syndication)
  • 如何扫描网站漏洞/宁德市有几个区几个县
  • 福州seo推广公司/武汉seo网站优化运营
  • 网页游戏网站排名/对网络推广的理解
  • 万网ip查询/整站优化系统厂家
  • 高端网站建设专业/微指数官网
  • 网站改版 百度影响/谁有恶意点击软件