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使用profile分析慢查询的步骤
Apr 30 MongoDB
MongoDB数据库的安装步骤
Jun 18 MongoDB
浅析MongoDB之安全认证
Jun 26 MongoDB
MongoDB安装使用并实现Python操作数据库
Jun 28 MongoDB
mongodb清除连接和日志的正确方法分享
Sep 15 MongoDB
MongoDB日志切割的三种方式总结
Sep 15 MongoDB
MongoDB连接数据库并创建数据等使用方法
Nov 27 MongoDB
SpringBoot系列之MongoDB Aggregations用法详解
Feb 12 MongoDB
MongoDB支持的索引类型
Apr 11 MongoDB
MongoDB修改oplog大小的四种方法
Apr 11 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文件的实现方法
2007/03/19 PHP
关于PHP自动判断字符集并转码的详解
2013/06/26 PHP
使用array_map简单搞定PHP删除文件、删除目录
2014/10/29 PHP
PHP数组函数知识汇总
2016/05/12 PHP
javascript 无提示关闭窗口脚本
2009/08/17 Javascript
jquery随机展示头像代码
2011/12/21 Javascript
JavaScript中的null和undefined解析
2012/04/14 Javascript
jQuery新的事件绑定机制on()示例应用
2014/07/18 Javascript
AngularJs  E2E Testing 详解
2016/09/02 Javascript
用JS动态设置CSS样式常见方法小结(推荐)
2016/11/10 Javascript
JavaScript实现图像模糊化的方法实例
2017/01/15 Javascript
jQuery Pagination分页插件_动力节点Java学院整理
2017/07/17 jQuery
详解微信小程序中组件通讯
2018/10/30 Javascript
jQuery实现的老虎机跑动效果示例
2018/12/29 jQuery
基于Node.js搭建hexo博客过程详解
2019/06/25 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
javascript实现商品图片放大镜
2019/11/28 Javascript
JS对象属性的检测与获取操作实例分析
2020/03/17 Javascript
Vue中keep-alive的两种应用方式
2020/07/15 Javascript
[02:51]DOTA2 2015国际邀请赛中国区预选赛第一日战报
2015/05/27 DOTA
python写入xml文件的方法
2015/05/08 Python
python机器学习实战之K均值聚类
2017/12/20 Python
Python3.7实现中控考勤机自动连接
2018/08/28 Python
使用tensorflow实现线性回归
2018/09/08 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
python 定时器每天就执行一次的实现代码
2019/08/14 Python
python不同系统中打开方法
2020/06/23 Python
世界上最大的在线旅行社新加坡网站:Expedia新加坡
2016/08/25 全球购物
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
卡西欧B级产品官方网站:Casio Outlet
2018/05/22 全球购物
幼师自荐信范文
2013/10/06 职场文书
运动会解说词100字
2014/01/31 职场文书
贸易跟单员英文求职信
2014/04/19 职场文书
Golang二维切片初始化的实现
2021/04/08 Golang
Pytorch 使用tensor特定条件判断索引
2021/04/08 Python
pytorch锁死在dataloader(训练时卡死)
2021/05/28 Python