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 常用的crud操作语句
Jun 20 MongoDB
MongoDB安装使用并实现Python操作数据库
Jun 28 MongoDB
Mongo服务重启异常问题的处理方法
Jul 01 MongoDB
常用的MongoDB查询语句的示例代码
Jul 25 MongoDB
mongodb的安装和开机自启动详细讲解
Aug 02 MongoDB
mongodb清除连接和日志的正确方法分享
Sep 15 MongoDB
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
Nov 01 MongoDB
MongoDB支持的数据类型
Apr 11 MongoDB
Centos系统通过Docker安装并搭建MongoDB数据库
Apr 12 MongoDB
MongoDB数据库之添删改查
Apr 26 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写的加密函数,支持私人密钥(详细介绍)
2013/06/09 PHP
Thinkphp模板中截取字符串函数简介
2014/06/17 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
2014/11/04 PHP
3种php生成唯一id的方法
2015/11/23 PHP
JS和jquery获取各种屏幕的宽度和高度的代码
2013/08/02 Javascript
全面了解JavaScirpt 的垃圾(garbage collection)回收机制
2016/07/11 Javascript
jQuery实现一个简单的轮播图
2017/02/19 Javascript
原生js实现轮播图
2017/02/27 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
Angularjs为ng-click事件传递参数
2017/06/15 Javascript
vue2.0实现分页组件的实例代码
2017/06/22 Javascript
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
基于vue 实现token验证的实例代码
2017/12/14 Javascript
微信小程序实现美团菜单
2018/06/06 Javascript
JS数组中对象去重操作示例
2019/06/04 Javascript
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
Vue中rem与postcss-pxtorem的应用详解
2019/11/20 Javascript
关于vue3默认把所有onSomething当作v-on事件绑定的思考
2020/05/15 Javascript
jQuery实现评论模块
2020/08/19 jQuery
Vue 实现可视化拖拽页面编辑器
2021/02/01 Vue.js
Python爬虫利用cookie实现模拟登陆实例详解
2017/01/12 Python
Python去除、替换字符串空格的处理方法
2018/04/01 Python
selenium python 实现基本自动化测试的示例代码
2019/02/25 Python
python面试题Python2.x和Python3.x的区别
2019/05/28 Python
Python参数类型以及常见的坑详解
2019/07/08 Python
python 内置函数汇总详解
2019/09/16 Python
如何清空python的变量
2020/07/05 Python
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
REN Clean Skincare官网:英国本土有机护肤品牌
2019/02/23 全球购物
豪华床上用品 :Jennifer Adams
2019/09/15 全球购物
大专生简历的自我评价
2013/11/26 职场文书
优秀大学生求职自荐信范文
2014/04/19 职场文书
工会换届选举方案
2014/05/21 职场文书
行政专员岗位职责范本
2014/08/26 职场文书
“九一八事变纪念日”国旗下讲话稿
2014/09/14 职场文书
干部培训简讯
2015/07/20 职场文书