Java SpringBoot 集成PostGIS(附项目代码)
Java SpringBoot 集成PostGIS(附代码)环境java1.8框架:springboot2持久层:mybatis plus数据库:postgresql+postgis1、gradle配置postgresql依赖dependencies {...compile group: 'org.postgresql', name: 'postgresql', version: '42.2.14
Java SpringBoot 集成PostGIS(附项目代码)
环境
java 1.8
框架:springboot2
持久层:mybatis plus
GIS库:GDAL
数据库:postgresql+postgis
本项目参照了 postgis-java-demo
项目,使用postgis-jdbc连接postgis,完成org.postgis.Geometry
的json序列化。
具体方法和源码可以参照 https://github.com/lonelyleaf/postgis-java-demo,是个很好的学习案例
1、gradle配置postgresql和postgis依赖
添加postgresql和postgis依赖如下
dependencies {
...
/*postgesql*/
compile group: 'org.postgresql', name: 'postgresql', version: '42.2.14'
compile group: 'net.postgis', name: 'postgis-jdbc', version: '2.5.0'
compile group: 'org.locationtech.jts', name: 'jts-core', version: '1.17.1'
compile group: 'org.locationtech.spatial4j', name: 'spatial4j', version: '0.8'
compile group: 'com.fasterxml.jackson.core:jackson-databind:2.10.1'
...
}
2、配置yml文件
采用封装后的driver作为jdbc driver,让geography
也能自动注册。
spring:
datasource:
driver-class-name: com.gis.common.jts.JtsWrapper
url: jdbc:postgres_jts://****:****/GISDB?useSSL=false
username: ****
password: ****
mybatis-plus:
mapper-locations: classpath:mapper/biz/*.xml
type-handlers-package: "com.gis.common.mybatis.jts"
3、CodeGenerator生成entity,repository层等等
使用MybatisPlus的CodeGenerator
生成entity
,repository
层等等,CodeGenerator
代码地址为
4、mapper.xml写sql
在mapper.xml实现repository层接口
注意,由于已经完成org.postgis.Geometry
的json序列化,此处select
语句中不必再使用st_asgeojson(geom)
函数将geom转成json字符串,直接写geom即可。
<select id="getGeoById" parameterType="java.lang.Long" resultType="java.util.Map">
select fid, geom,st_area(geom) as area
from geo_school
where fid = #{fid}
</select>
<select id="getGeoStatistic" parameterType="java.lang.Long" resultType="java.util.Map">
select count(fid) as number,sum(st_area(geom)) as area
from geo_school
</select>
<select id="getGeoContainsPoint" parameterType="org.locationtech.jts.geom.Geometry" resultType="java.util.Map">
select fid, geom from geo_school
where ST_Within(#{point},geom)
</select>
4、顺次完成repository,service,controller层
5、postgis常用控件函数
更多postgis函数可以看**PostGIS官方教程汇总目录** https://blog.csdn.net/qq_35732147/article/details/85256640
转wkt
st_astext(geom)
转geojson
st_asgeojson
两点间的距离
st_distance(geom,geom)
面的面积
st_area(geom)
线的长度/面的周长
st_length(geom)
缓冲区
st_buffer(geom,distance)
相交计算
st_intersection(geom,geom)
合并计算
st_union(geom,geom,…)
差异计算
st_difference(geom,geom)
项目代码
https://gitee.com/magic1412/spring_gis_template
更多推荐
所有评论(0)