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
Mongo服务重启异常问题的处理方法
Jul 01 MongoDB
常用的MongoDB查询语句的示例代码
Jul 25 MongoDB
mongodb的安装和开机自启动详细讲解
Aug 02 MongoDB
MongoDB日志切割的三种方式总结
Sep 15 MongoDB
关于CentOS 8 搭建MongoDB4.4分片集群的问题
Oct 24 MongoDB
MongoDB连接数据库并创建数据等使用方法
Nov 27 MongoDB
MongoDB使用场景总结
Feb 24 MongoDB
SpringBoot 整合mongoDB并自定义连接池的示例代码
Feb 28 MongoDB
MongoDB数据库部署环境准备及使用介绍
Mar 21 MongoDB
MongoDB支持的数据类型
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学习 运算符与运算符优先级
2008/06/15 PHP
thinkphp修改配置进入默认首页的方法
2017/02/07 PHP
用javascript动态调整iframe高度的代码
2007/04/10 Javascript
jquery一般方法介绍 入门参考
2011/06/21 Javascript
javascript通过class来获取元素实现代码
2013/02/20 Javascript
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
2015/12/07 Javascript
在React框架中实现一些AngularJS中ng指令的例子
2016/03/06 Javascript
带有定位当前位置的百度地图前端web api实例代码
2016/06/21 Javascript
EasyUI加载完Html内容样式渲染完成后显示
2016/07/25 Javascript
JavaScript仿微博输入框效果(案例分析)
2016/12/06 Javascript
jquery仿苹果的时间/日期选择效果
2017/03/08 Javascript
详解使用Typescript开发node.js项目(简单的环境配置)
2017/10/09 Javascript
详解Node.js一行命令上传本地文件到服务器
2019/04/22 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
JS实现打砖块游戏
2020/02/14 Javascript
Vue3.0的优化总结
2020/10/16 Javascript
python实现每次处理一个字符的三种方法
2014/10/09 Python
python通过opencv实现批量剪切图片
2017/11/13 Python
Flask框架web开发之零基础入门
2018/12/10 Python
html5中如何将图片的绝对路径转换成文件对象
2018/01/11 HTML / CSS
澳大利亚家具和家居用品在线:BROSA
2017/11/02 全球购物
英国时尚高尔夫服装购物网站:Trendy Golf
2020/01/10 全球购物
党校个人自我鉴定范文
2014/03/28 职场文书
《英英学古诗》教学反思
2014/04/11 职场文书
个人考核材料
2014/05/15 职场文书
地震捐款倡议书
2014/08/29 职场文书
2015年乡镇组织委员工作总结
2015/10/23 职场文书
2016党员党课心得体会
2016/01/07 职场文书
2016开学第一课心得体会
2016/01/23 职场文书
2016年学校禁毒宣传活动工作总结
2016/04/05 职场文书
工作一年自我鉴定
2019/06/20 职场文书
MySQL索引篇之千万级数据实战测试
2021/04/05 MySQL
golang 实现时间戳和时间的转化
2021/05/07 Golang
pytorch 实现多个Dataloader同时训练
2021/05/29 Python
MySQL库表名大小写的选择
2021/06/05 MySQL