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

利用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
http://www.xdnf.cn/news/8029.html

相关文章:

  • Spring Task
  • 中科方德鸳鸯火锅平台使用教程:轻松运行Windows应用!
  • 网页 CSS美化(详解)
  • 养生新策:五维开启健康生活
  • 远程访问软件如何开启? 怎样让外网访问本地数据库服务?
  • C语言if-else分支结构中的类似短路现象
  • 蓝牙BLE协议之——PHY层
  • 力扣-长度最小的子数组
  • vscode包含工程文件路径
  • uni-app(3):互相引用
  • GEE数据下载问题记录
  • 第十节第六部分:常见API:DateTimeFormatter、Period、Duration
  • 数据仓库工具箱第三版——读书笔记(未完)
  • IO原理与高性能网络编程深度剖析
  • Java 大视界 -- 基于 Java 的大数据分布式存储在视频会议系统海量视频数据存储与回放中的应用(263)
  • 【Java】—— 常见的排序算法
  • PHP7内核剖析 学习笔记 第七章 面向对象
  • 在uni-app中修改上一个页面的值,可以通过多种方式实现,这里提供几种常见的方法:
  • CVE-2024-42323
  • FPGA:CLB资源以及Verilog编码面积优化技巧
  • Opencv---RotatedRect
  • RPA在持续集成和持续部署中的角色是什么?
  • 力扣HOT100之二叉树:124. 二叉树中的最大路径和
  • 野火鲁班猫(arrch64架构debian)从零实现用MobileFaceNet算法进行实时人脸识别(四)安装RKNN Toolkit2
  • 服务架构演变过程
  • 腾讯音乐一面
  • PyTorch性能调优实战:从算子优化到分布式训练全攻略
  • 【前端】每日一道面试题4:什么是CSS容器查询(Container Queries)?与媒体查询有何区别?
  • 【MySQL】06.MySQL表的增删查改
  • 元宇宙赛道新势力:芯谷产业园创新业务如何重构产业格局