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数据库常用的10条操作命令
Jun 18 MongoDB
MongoDB 常用的crud操作语句
Jun 20 MongoDB
MongoDB orm框架的注意事项及简单使用
Jun 20 MongoDB
Mongo服务重启异常问题的处理方法
Jul 01 MongoDB
阿里云服务器部署mongodb的详细过程
Sep 04 MongoDB
mongodb清除连接和日志的正确方法分享
Sep 15 MongoDB
关于CentOS 8 搭建MongoDB4.4分片集群的问题
Oct 24 MongoDB
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
Nov 01 MongoDB
剖析后OpLog订阅MongoDB的数据变更就没那么难了
Feb 24 MongoDB
mongoDB数据库索引快速入门指南
Mar 23 MongoDB
MongoDB误操作后使用oplog恢复数据
Apr 11 MongoDB
SpringBoot集成MongoDB实现文件上传的步骤
Apr 18 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程序?
2006/12/08 PHP
php模拟asp中的XmlHttpRequest实现http请求的代码
2011/03/24 PHP
php简单的会话类代码
2011/08/08 PHP
php获取文件夹路径内的图片以及分页显示示例
2014/03/11 PHP
destoon实现公司新闻详细页添加评论功能的方法
2014/07/15 PHP
laravel 5.4 + vue + vux + element的环境搭配过程介绍
2018/04/26 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
2020/12/15 PHP
js 金额文本框实现代码
2012/02/14 Javascript
java和javascript获取word文档的书签位置对比
2014/06/19 Javascript
jquery mobile页面跳转后样式丢失js失效的解决方法
2014/09/06 Javascript
JQuery 给元素绑定click事件多次执行的解决方法
2014/09/09 Javascript
js计算德州扑克牌面值的方法
2015/03/04 Javascript
js动态创建及移除div的方法
2015/06/03 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
JavaScript的事件机制详解
2017/01/17 Javascript
Vue实现web分页组件详解
2017/11/28 Javascript
详解webpack运行Babel教程
2018/06/13 Javascript
vue如何安装使用Quill富文本编辑器
2018/09/21 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
2020/12/14 Vue.js
[04:12]第二届DOTA2亚洲邀请赛选手传记-Newbee.Sccc
2017/04/03 DOTA
利用ctypes提高Python的执行速度
2016/09/09 Python
Python机器学习之SVM支持向量机
2017/12/27 Python
python 微信好友特征数据分析及可视化
2020/01/07 Python
Django 自定义404 500等错误页面的实现
2020/03/08 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
一款利用css3的鼠标经过动画显示详情特效的实例教程
2014/12/29 HTML / CSS
使用CSS3滤镜的filter:blur属性制作毛玻璃模糊效果的方法
2016/07/08 HTML / CSS
详解canvas在圆弧周围绘制文本的两种写法
2018/05/22 HTML / CSS
俄罗斯游戏商店:Buka
2020/03/01 全球购物
英语感恩演讲稿
2014/01/14 职场文书
就业推荐表自我鉴定范文
2014/03/21 职场文书
《四季》教学反思
2014/04/08 职场文书
个人校本研修方案
2014/05/26 职场文书
运动员获奖感言
2014/08/15 职场文书
少先队中队工作总结2015
2015/07/23 职场文书