springboot + mongodb 通过经纬度坐标匹配平面区域的方法


Posted in MongoDB onNovember 01, 2021

java api 自带的mongodb实体无法满足环状多边形的区域匹配(大概是我没用对方法可能)所以我们要自定义一个空间坐标类型

废话不多说 上代码

/**
 *
 * @author cy
 */
@Configuration
@ReadingConverter
public class CustomReadGeoJsonConverter implements Converter<Document, CustomGeoJson> {

    @Override
    public CustomGeoJson convert(Document document) {
        CustomGeoJson geoJson = new CustomGeoJson();
        geoJson.setType(document.get(GeoJsonConstant.TYPE, String.class));
        geoJson.setCoordinates(document.get(GeoJsonConstant.COORDINATES, Iterable.class));
        return geoJson;
    }

}
@Configuration
public class Config {
    @Autowired
    private CustomReadGeoJsonConverter customReadGeoJsonConverter;
    @Bean
    public MongoCustomConversions customConversions() {
        List<Converter<?, ?>> converterList = new ArrayList<>();
        converterList.add(customReadGeoJsonConverter);
        return new MongoCustomConversions(converterList);
    }
}

自定义的空间坐标类型插入实体
其中的coordinates 可自定义插入point

/**
 * @author cy
 */
@Data
public class CustomGeoJson implements GeoJson, Serializable {
    private String type;

    private Iterable<?> coordinates;

}

在我们定义的mongodb实体中加入我们自定义的类型

/**
 * @author cy
 * @since 2021-10-20
 */
@Data
@Document(collection = "demo_mdb")
public class DemoMdb implements Serializable {

    private String id;

    @GeoSpatialIndexed(type = GeoSpatialIndexType.GEO_2DSPHERE)
    private CustomGeoJson customGeoJson;
}

插入数据

public void saveData() {
 	//这里自定义point点集合(这里不固定格式参照mongdb官方文档)
  	List<List<Point>> pointList = new ArrayList<>();
  	DemoMdb db=new DemoMdb();
  	//自行查看需要的类型
  	db.setType("***");
  	db.setCoordinates(pointList);
  	//mongoTemplate自行引入不做赘述
 	mongoTemplate.insert(db, DemoMdb .class);
}

查询数据

/**
 ** 经度x纬度y
 **/
public List<DemoMdb> findData(String x, String y) {
        Query query = new Query(Criteria.where("customGeoJson").
        intersects(new GeoJsonPoint(Double.valueOf(x), Double.valueOf(y))));
        List<DemoMdb> dbList = mongoTemplate.find(query, DemoMdb.class);
        return dbList;
}

只是一种方法,还不完美欢迎评论指教

到此这篇关于springboot + mongodb 通过经纬度坐标匹配平面区域的方法的文章就介绍到这了,更多相关springboot mongodb 经纬度内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MongoDB 相关文章推荐
MongoDB数据库的安装步骤
Jun 18 MongoDB
SpringBoot整合MongoDB的实现步骤
Jun 23 MongoDB
mongodb清除连接和日志的正确方法分享
Sep 15 MongoDB
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
Nov 01 MongoDB
MongoDB使用场景总结
Feb 24 MongoDB
剖析后OpLog订阅MongoDB的数据变更就没那么难了
Feb 24 MongoDB
MongoDB数据库部署环境准备及使用介绍
Mar 21 MongoDB
mongoDB数据库索引快速入门指南
Mar 23 MongoDB
Centos系统通过Docker安装并搭建MongoDB数据库
Apr 12 MongoDB
Mongodb 迁移数据块的流程介绍分析
Apr 18 MongoDB
详解MongoDB排序时内存大小限制与创建索引的注意事项
May 06 MongoDB
centos8安装MongoDB的详细过程
关于CentOS 8 搭建MongoDB4.4分片集群的问题
MongoDB日志切割的三种方式总结
Sep 15 #MongoDB
mongodb清除连接和日志的正确方法分享
Sep 15 #MongoDB
阿里云服务器部署mongodb的详细过程
Sep 04 #MongoDB
mongodb数据库迁移变更的解决方案
Sep 04 #MongoDB
mongodb的安装和开机自启动详细讲解
Aug 02 #MongoDB
You might like
php split汉字
2009/06/05 PHP
PHP+Ajax实时自动检测是否联网的方法
2015/07/01 PHP
PHP将数据导出Excel表中的实例(投机型)
2017/07/31 PHP
PHP crc32()函数讲解
2019/02/14 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
javascript之ESC(第二类混淆)
2007/05/06 Javascript
JavaScript中Math对象使用说明
2008/01/16 Javascript
Javascript 日期处理之时区问题
2009/10/08 Javascript
新老版本juqery获取radio对象的方法
2010/03/01 Javascript
JQuery的html(data)方法与&amp;lt;script&amp;gt;脚本块的解决方法
2010/03/09 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
如何判断Javascript对象是否存在的简单实例
2016/05/18 Javascript
详解Js模板引擎(TrimPath)
2016/11/22 Javascript
node.js发送邮件email的方法详解
2017/01/06 Javascript
微信小程序实战之运维小项目
2017/01/17 Javascript
create-react-app中添加less支持的实现
2019/11/15 Javascript
谈谈node.js中的模块系统
2020/09/01 Javascript
[53:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第一场 1月31日
2021/03/11 DOTA
python中星号变量的几种特殊用法
2016/09/07 Python
通过Python实现自动填写调查问卷
2017/09/06 Python
基于python内置函数与匿名函数详解
2018/01/09 Python
Python使用MD5加密算法对字符串进行加密操作示例
2018/03/30 Python
6种非常炫酷的CSS3按钮边框动画特效
2016/03/16 HTML / CSS
css3编写浏览器背景渐变背景色的方法
2018/03/05 HTML / CSS
澳大利亚床上用品、浴巾和家居用品购物网站:Bambury
2020/04/16 全球购物
《蝙蝠和雷达》教学反思
2014/04/23 职场文书
大学生演讲稿
2014/04/25 职场文书
优秀毕业生找工作自荐信
2014/06/23 职场文书
公司演讲稿开场白
2014/08/25 职场文书
鲁迅故里导游词
2015/02/05 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
小学生读书笔记范文
2015/06/30 职场文书
高中班主任培训心得体会
2016/01/07 职场文书
《三国志》赏析
2019/08/27 职场文书
MySQL infobright的安装步骤
2021/04/07 MySQL
Django分页器的用法你都了解吗
2021/05/26 Python