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
SpringBoot整合MongoDB的实现步骤
Jun 23 MongoDB
mongodb数据库迁移变更的解决方案
Sep 04 MongoDB
阿里云服务器部署mongodb的详细过程
Sep 04 MongoDB
SpringBoot系列之MongoDB Aggregations用法详解
Feb 12 MongoDB
MongoDB使用场景总结
Feb 24 MongoDB
MongoDB支持的数据类型
Apr 11 MongoDB
Mongodb 迁移数据块的流程介绍分析
Apr 18 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下实现农历日历的代码
2007/03/07 PHP
使用php测试硬盘写入速度示例
2014/01/27 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
2014/03/19 PHP
Centos 6.5系统下编译安装PHP 7.0.13的方法
2016/12/19 PHP
在Javascript里访问SharePoint列表数据的实现方法
2011/05/22 Javascript
JavaScript 产生不重复的随机数三种实现思路
2012/12/13 Javascript
jquery mobile事件多次绑定示例代码
2013/09/13 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
2014/03/05 Javascript
一个简单的动态加载js和css的jquery代码
2014/09/01 Javascript
了不起的node.js读书笔记之node的学习总结
2014/12/22 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
javascript禁止访客复制网页内容的实现代码
2015/08/05 Javascript
javascript入门教程基础篇
2015/11/16 Javascript
Bootstrap每天必学之按钮
2015/11/26 Javascript
你一定会收藏的Nodejs代码片段
2016/02/04 NodeJs
在js中实现邮箱格式的验证方法(推荐)
2016/10/24 Javascript
深入理解Webpack 中路径的配置
2017/06/17 Javascript
一个简易的js图片轮播效果
2017/07/22 Javascript
vue中input的v-model清空操作
2019/09/06 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
Python实现遍历数据库并获取key的值
2015/05/17 Python
浅谈python中set使用
2016/06/30 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
centos7之Python3.74安装教程
2019/08/15 Python
Django使用Profile扩展User模块方式
2020/05/14 Python
css3实现背景动态渐变效果
2019/12/10 HTML / CSS
突袭HTML5之Javascript API扩展3—本地存储全新体验
2013/01/31 HTML / CSS
Perfume’s Club中文官网:西班牙美妆在线零售品牌
2020/08/24 全球购物
装修致歉信
2014/01/15 职场文书
央视元宵晚会主持串词
2014/03/25 职场文书
2014第二批党员干部对照“四风”找差距检查材料思想汇报
2014/09/18 职场文书
2014年采购部工作总结
2014/11/20 职场文书
2014年团队工作总结
2014/11/24 职场文书
幼儿园教研工作总结2015
2015/05/12 职场文书
2015年学校图书室工作总结
2015/05/19 职场文书
Python编程中Python与GIL互斥锁关系作用分析
2021/09/15 Python