首页 > 其他分享 >SpringBoot操作前端传的Geojson进行空间查询

SpringBoot操作前端传的Geojson进行空间查询

时间:2023-08-17 18:02:36浏览次数:41  
标签:postgresql SpringBoot itcy boot Geojson 查询 org import com

SpringBoot操作前端传的Geojson进行空间查询

项目说明:

项目技术栈:SpringBoot+MybatisPlus+postgresql

先上查询SQL

SELECT *
FROM demo
WHERE ST_Intersects(geom, ST_GeomFromGeoJSON('放geojson类型数据'));

表结构

SpringBoot操作前端传的Geojson进行空间查询_List

Controller层

package com.itcy.postgresql.controller;


import com.itcy.postgresql.model.Demo;
import com.itcy.postgresql.service.DemoService;
import org.locationtech.jts.geom.Geometry;
import org.springframework.beans.factory.annotation.Autowired;


import java.util.List;

/**
 * @BelongsProject: cyspring
 * @BelongsPackage: com.itcy.postgresql.controller
 * @Author: cuiYong
 * @CreateTime: 2023-08-07  09:25
 * @Description: TODO
 * @Version: 1.0
 */
@RestController
@RequestMapping("/demo")
public class DemoController {

    @Autowired
    private DemoService demoService;


    /**
     * 传入geojson数据类型查询相交情况*/
    @PostMapping("/getByGeoJson")
    public List<Demo> getByGeoJson(@RequestBody String geoJson){
        return demoService.getByGeoJson(geoJson);
    }

Service层

package com.itcy.postgresql.service;


import com.itcy.postgresql.model.Demo;
import org.locationtech.jts.geom.Geometry;
import java.util.List;

/**
 * @author 176
 */
public interface DemoService {

    /**
     * 传入geojson数据类型查询相交情况*/
    List<Demo> getByGeoJson(String geoJson);
}

ServiceImpl层

package com.itcy.postgresql.service.impl;

import com.itcy.postgresql.mapper.DemoMapper;
import com.itcy.postgresql.model.Demo;
import com.itcy.postgresql.service.DemoService;
import org.locationtech.jts.geom.Geometry;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author 176
 */
@Service
public class DemoServiceImpl implements DemoService {

    
    @Override
    public List<Demo> getByGeoJson(String geoJson) {
        return demoMapper.getByGeoJson(geoJson);
    }
}

Mapper层

package com.itcy.postgresql.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.itcy.postgresql.model.Demo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.locationtech.jts.geom.Geometry;

import java.util.List;

@Mapper
public interface DemoMapper extends BaseMapper<China> {
    List<Demo> getByGeoJson(String geoJson);
}

DemoMapper.xml

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.itcy.postgresql.mapper.DemoMapper">

<!--传入geojson查询数据库-->
    <select id="getByGeoJson" resultType="com.itcy.postgresql.model.Demo">
        SELECT *
        FROM demo
        WHERE ST_Intersects(geom, ST_GeomFromGeoJSON('${geoJson}'));
    </select>
</mapper>

pom.xml

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

<!--        springboot 整合junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
        </dependency>

<!--    json数据的转换的工具    -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.76</version>
        </dependency>

        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!-- postgresql -->
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
        </dependency>
        <!-- PostGis -->
        <dependency>
            <groupId>net.postgis</groupId>
            <artifactId>postgis-jdbc</artifactId>
            <version>2.5.0</version>
        </dependency>
        <!-- 引入 Geometry 相关类 -->
        <dependency>
            <groupId>org.locationtech.jts</groupId>
            <artifactId>jts-core</artifactId>
            <version>1.16.1</version>
        </dependency>
        <dependency>
            <groupId>org.locationtech.spatial4j</groupId>
            <artifactId>spatial4j</artifactId>
            <version>0.7</version>
        </dependency>
        <!-- Geometry 转 JSON 需要 -->
        <dependency>
            <groupId>com.graphhopper.external</groupId>
            <artifactId>jackson-datatype-jts</artifactId>
            <version>1.0-2.7</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.23</version>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.4.5</version>
            </plugin>
        </plugins>
    </build>

标签:postgresql,SpringBoot,itcy,boot,Geojson,查询,org,import,com
From: https://blog.51cto.com/u_16103484/7126134

相关文章

  • RabbitMQ与SpringBoot 集成
    1、添加依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency> 2、添加配置官方配置https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/h......
  • springboot集成cas
    CAS介绍CAS是CentralAuthenticationService的缩写,中央认证服务,一种独立开放指令协议。CAS是耶鲁大学(YaleUniversity)发起的一个开源项目,旨在为Web应用系统提供一种可靠的单点登录方法,CAS在2004年12月正式成为JA-SIG的一个项目。特点:开源的企业级单点登录解决方案......
  • 在SQL Server中创建一个新用户并授予他们查询对象的权限
    在SQLServer中创建一个新用户并授予他们查询对象的权限,您可以按照以下步骤操作:使用具有创建新用户和授予权限所需权限的特权帐户连接到SQLServer实例。使用CREATELOGIN语句为用户创建新的登录。以下是一个示例:CREATELOGIN[new_user]WITHPASSWORD='password';将new......
  • IDEA社区版+SpringBoot+MyBatisPLus+MySQL实现数据库的保存、查询、修改操作
    一、概述使用IDEA社区+SpringBoot+MyBatisPlus+MySQL实现数据的保存修改与查询。主要记录一下踩坑过程。注意事项:1.社区版IDEA并不能直接创建SpringBoot工程,所以我采用的方式是在Spring官网上,让其帮助我创建一个,创建好后,直接下载。//参考案例https://blog.csd......
  • 【13章】SpringBoot打造企业级一体化SaaS系统
    课程下载——【13章】SpringBoot打造企业级一体化SaaS系统提取码:y8v1 分享课程——【13章】SpringBoot打造企业级一体化SaaS系统,附源码。课程中整合后端主流技术(SpringBoot、物理数据库隔离、加载动态权限、多方式权限控制)、前端必会框架(vue3),完整落地ERP+CRM一体化SaaS系统,带......
  • C#进行ARP查询
    安装Nuget包Install-PackageArpLookup示例代码usingSystem.Net;usingSystem.Net.NetworkInformation;usingArpLookup;varlinuxOrWindows=Arp.IsSupported;Console.WriteLine(linuxOrWindows.ToString());PhysicalAddressmac=Arp.Lookup(IPAddress.Parse("......
  • Springboot 转化器
    Springboot提供了很多转化器:其中有ApplicationConversionService:extendsFormattingConversionService。 publicstaticvoidaddApplicationConverters(ConverterRegistryregistry){ addDelimitedStringConverters(registry); registry.addConverter(newStringToDurationC......
  • SQL server进阶查询
    1、别名,查询结果拼接(可以直接修改类别名称如id->主键name->姓名course->课程score->分数)SELECTTOP(1000)[id]主键    //查询前1000行数据  ,[name]姓名  ,[course]课程  ,[score]分数FROM[Lloyd].[dbo].[ScoreInfo]2、条件查询SEL......
  • java springboot excel 上传
    spring.http.multipart.location=/data/server/upload/spring.http.multipart.max-file-size=2048MBspring.http.multipart.max-request-size=2048MBimportjava.io.File;importjavax.servlet.MultipartConfigElement;importorg.springframework.beans.factory.ann......
  • 基于SpringBoot的点餐系统的设计与实现-计算机毕业设计源码+LW文档
    摘要:随着移动互联网的快速发展,微信小程序作为一种轻量级、快速启动、无需下载安装的应用程序形式,在市场中越来越受欢迎。同时,餐饮行业也是一个充满机会的领域,尤其是在新冠疫情后,外卖、自取等模式逐渐成为餐饮行业的主要销售方式。因此,开发一款基于微信小程序的点餐系统,能够提高餐......