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之安全认证
Jun 26 MongoDB
阿里云服务器部署mongodb的详细过程
Sep 04 MongoDB
centos8安装MongoDB的详细过程
Oct 24 MongoDB
MongoDB使用场景总结
Feb 24 MongoDB
一次线上mongo慢查询问题排查处理记录
Mar 18 MongoDB
MongoDB误操作后使用oplog恢复数据
Apr 11 MongoDB
MongoDB支持的数据类型
Apr 11 MongoDB
MongoDB支持的索引类型
Apr 11 MongoDB
Centos系统通过Docker安装并搭建MongoDB数据库
Apr 12 MongoDB
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
谈一谈收音机的高放电路
2021/03/02 无线电
PHP+DBM的同学录程序(5)
2006/10/09 PHP
Zend Framework动作控制器用法示例
2016/12/09 PHP
PHP开发实现微信退款功能示例
2017/11/25 PHP
THREE.JS入门教程(3)着色器-下
2013/01/24 Javascript
jQuery随机切换图片的小例子
2013/04/18 Javascript
jquery实现标签支持图文排列带上下箭头按钮的选项卡
2015/03/14 Javascript
javascript给span标签赋值的方法
2015/11/26 Javascript
多种JQuery循环滚动文字图片效果代码
2020/06/23 Javascript
jQuery实现内容定时切换效果完整实例
2016/04/06 Javascript
深入剖析JavaScript面向对象编程
2016/07/12 Javascript
jQuery实现图片轮播效果代码
2016/09/27 Javascript
利用jquery获取select下拉框的值
2016/11/23 Javascript
原生JS轮播图插件
2017/02/09 Javascript
javascript九宫格图片随机打乱位置的实现方法
2017/03/15 Javascript
详解nodeJS之二进制buffer对象
2017/06/03 NodeJs
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
[38:23]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第一场
2014/05/24 DOTA
Python正则表达式介绍
2012/08/06 Python
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
python实现多线程行情抓取工具的方法
2018/02/28 Python
python自动截取需要区域,进行图像识别的方法
2018/05/17 Python
Python带动态参数功能的sqlite工具类
2018/05/26 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
2018/10/15 Python
python重试装饰器的简单实现方法
2019/01/31 Python
python多进程下实现日志记录按时间分割
2019/07/22 Python
python pygame实现球球大作战
2019/11/25 Python
Pytorch 实现数据集自定义读取
2020/01/18 Python
无需压缩软件,用python帮你操作压缩包
2020/08/17 Python
深入浅析HTML5中的SVG
2015/11/27 HTML / CSS
俄罗斯和世界各地的酒店预订:Hotels.com俄罗斯
2016/08/19 全球购物
英文简历中的自我评价用语
2013/12/09 职场文书
心理健康心得体会
2014/01/02 职场文书
小学一年级评语大全
2014/04/22 职场文书
教师求职信范文
2014/05/24 职场文书
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技