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 balancer的使用详解
Apr 30 MongoDB
MongoDB orm框架的注意事项及简单使用
Jun 20 MongoDB
详解MongoDB的条件查询和排序
Jun 23 MongoDB
SpringBoot整合MongoDB的实现步骤
Jun 23 MongoDB
MongoDB安装使用并实现Python操作数据库
Jun 28 MongoDB
Mongo服务重启异常问题的处理方法
Jul 01 MongoDB
阿里云服务器部署mongodb的详细过程
Sep 04 MongoDB
剖析后OpLog订阅MongoDB的数据变更就没那么难了
Feb 24 MongoDB
一次线上mongo慢查询问题排查处理记录
Mar 18 MongoDB
Mongodb 迁移数据块的流程介绍分析
Apr 18 MongoDB
NoSQL优缺点与MongoDB数据库简介
Jun 05 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--用万网的接口实现域名查询功能
2012/12/13 PHP
图解找出PHP配置文件php.ini的路径的方法
2014/08/20 PHP
YII框架实现自定义第三方扩展操作示例
2019/04/26 PHP
情人节之礼 js项链效果
2012/02/13 Javascript
THREE.JS入门教程(3)着色器-下
2013/01/24 Javascript
easyui datagrid 键盘上下控制选中行示例
2014/03/31 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
2014/11/12 Javascript
javascript使用for循环批量注册的事件不能正确获取索引值的解决方法
2014/12/20 Javascript
jquery显示隐藏元素的实现代码
2016/05/19 Javascript
详解AngularJs HTTP响应拦截器实现登陆、权限校验
2017/04/11 Javascript
Angular中实现树形结构视图实例代码
2017/05/05 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
JS运动特效之完美运动框架实例分析
2018/01/24 Javascript
vue-自定义组件传值的实例讲解
2018/09/18 Javascript
关于Vue项目跨平台运行问题的解决方法
2018/09/18 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
2019/09/20 Javascript
JS数组属性去重并校验重复数据
2020/01/10 Javascript
js实现整体缩放页面适配移动端
2020/03/31 Javascript
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
[00:33]DOTA2上海特级锦标赛 CDEC战队宣传片
2016/03/04 DOTA
[05:31]干嘛呢兄弟!DOTA2 TI9语音轮盘部分出处
2019/05/14 DOTA
Python Grid使用和布局详解
2018/06/30 Python
Python嵌套式数据结构实例浅析
2019/03/05 Python
Python Flask框架模板操作实例分析
2019/05/03 Python
Python多进程编程multiprocessing代码实例
2020/03/12 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
2021/01/09 Python
美国礼品卡交易网站:Cardpool
2018/08/27 全球购物
俄罗斯品牌服装和鞋子的在线商店:KUPIVIP
2019/10/27 全球购物
实现strstr功能,即在父串中寻找子串首次出现的位置
2016/08/05 面试题
斯福泰克软件测试面试题
2015/02/16 面试题
商务英语应届生自我鉴定
2013/12/08 职场文书
初三化学教学反思
2014/01/23 职场文书
入学申请自荐信范文
2014/02/26 职场文书
节水倡议书范文
2014/04/15 职场文书
2014年大学宣传部工作总结
2014/12/19 职场文书
各类场合主持词开场白范文集锦
2019/08/16 职场文书