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 orm框架的注意事项及简单使用
Jun 20 MongoDB
详解MongoDB的条件查询和排序
Jun 23 MongoDB
MongoDB安装使用并实现Python操作数据库
Jun 28 MongoDB
Mongo服务重启异常问题的处理方法
Jul 01 MongoDB
mongodb的安装和开机自启动详细讲解
Aug 02 MongoDB
mongodb数据库迁移变更的解决方案
Sep 04 MongoDB
SpringBoot 整合mongoDB并自定义连接池的示例代码
Feb 28 MongoDB
MongoDB数据库部署环境准备及使用介绍
Mar 21 MongoDB
MongoDB误操作后使用oplog恢复数据
Apr 11 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中把对象数组转换成普通数组的方法
2015/07/10 PHP
PHP单例模式模拟Java Bean实现方法示例
2018/12/07 PHP
jquery删除指定的html标签并保留标签内文本内容的方法
2014/04/02 Javascript
jQuery制作的别致导航有阴影背景高亮模式窗口
2014/04/15 Javascript
JavaScript列表框listbox全选和反选的实现方法
2015/03/18 Javascript
每天一篇javascript学习小结(基础知识)
2015/11/10 Javascript
jquery拖拽效果完整实例(附demo源码下载)
2016/01/14 Javascript
使用js获取地址栏参数的方法推荐(超级简单)
2016/06/14 Javascript
JS for...in 遍历语句用法实例分析
2016/08/24 Javascript
简单实现bootstrap选项卡效果
2017/02/08 Javascript
easyui-datagrid特殊字符不能显示的处理方法
2017/04/12 Javascript
js实现canvas保存图片为png格式并下载到本地的方法
2017/08/31 Javascript
react-router v4如何使用history控制路由跳转详解
2018/01/09 Javascript
vue ajax 拦截原理与实现方法示例
2019/11/29 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
2020/07/24 Javascript
[05:31]DOTA2英雄梦之声_第04期_光之守卫
2014/06/23 DOTA
Python语言编写电脑时间自动同步小工具
2013/03/08 Python
Python中装饰器学习总结
2018/02/10 Python
深入理解python中sort()与sorted()的区别
2018/08/29 Python
Python反爬虫技术之防止IP地址被封杀的讲解
2019/01/09 Python
PIL图像处理模块paste方法简单使用详解
2019/07/17 Python
对python中的os.getpid()和os.fork()函数详解
2019/08/08 Python
python3 反射的四种基本方法解析
2019/08/26 Python
Python3 使用selenium插件爬取苏宁商家联系电话
2019/12/23 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
selenium设置浏览器为headless无头模式(Chrome和Firefox)
2021/01/08 Python
animation和transition的区别
2020/10/12 HTML / CSS
HTML5探秘:用requestAnimationFrame优化Web动画
2018/06/03 HTML / CSS
汽车检测与维修个人求职信
2013/09/24 职场文书
白酒市场开发计划书
2014/01/09 职场文书
初一地理教学反思
2014/01/16 职场文书
英语系毕业生求职信
2014/07/13 职场文书
某集团股份有限公司委托书样本
2014/09/24 职场文书
2014年学校卫生工作总结
2014/11/20 职场文书
邀请函格式范文
2015/02/02 职场文书
2015年员工试用期工作总结
2015/05/28 职场文书