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数据库常用的10条操作命令
Jun 18 MongoDB
详解MongoDB的条件查询和排序
Jun 23 MongoDB
Mongo服务重启异常问题的处理方法
Jul 01 MongoDB
mongodb的安装和开机自启动详细讲解
Aug 02 MongoDB
centos8安装MongoDB的详细过程
Oct 24 MongoDB
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
Nov 01 MongoDB
SpringBoot系列之MongoDB Aggregations用法详解
Feb 12 MongoDB
MongoDB使用场景总结
Feb 24 MongoDB
剖析后OpLog订阅MongoDB的数据变更就没那么难了
Feb 24 MongoDB
mongoDB数据库索引快速入门指南
Mar 23 MongoDB
NoSQL优缺点与MongoDB数据库简介
Jun 05 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
比特率,大家看看这个就不用收音机音质去比MP3音质了
2021/03/01 无线电
php HtmlReplace输入过滤安全函数
2010/07/03 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
2015/08/31 PHP
PHP调试及性能分析工具Xdebug详解
2017/02/09 PHP
php实现文件与16进制相互转换的方法示例
2017/02/16 PHP
csdn 论坛技术区平均给分功能
2009/11/07 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
2012/11/24 Javascript
我的Node.js学习之路(二)NPM模块管理
2014/07/06 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
js分页工具实例
2015/01/28 Javascript
浅析javascript中的DOM
2015/03/01 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
2015/08/07 Javascript
谈谈基于iframe、FormData、FileReader三种无刷新上传文件的方法
2015/12/03 Javascript
jquery+ajax实现省市区三级联动效果简单示例
2017/01/04 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
关于Vue单页面骨架屏实践记录
2017/12/13 Javascript
详解Vue CLI3 多页应用实践和源码设计
2018/08/30 Javascript
layui加载表格,绑定新增,编辑删除,查看按钮事件的例子
2019/09/06 Javascript
vue 获取元素额外生成的data-v-xxx操作
2020/09/09 Javascript
用Python中的wxPython实现最基本的浏览器功能
2015/04/14 Python
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
举例讲解Python设计模式编程的代理模式与抽象工厂模式
2016/01/16 Python
Python使用正则表达式抓取网页图片的方法示例
2017/04/21 Python
Linux下多个Python版本安装教程
2018/08/15 Python
对Python 内建函数和保留字详解
2018/10/15 Python
eclipse创建python项目步骤详解
2019/05/10 Python
pytorch 在sequential中使用view来reshape的例子
2019/08/20 Python
Python使用configparser读取ini配置文件
2020/05/25 Python
Html5定位终极解决方案
2020/02/05 HTML / CSS
施工工地安全标语
2014/06/07 职场文书
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
社区安全温馨提示语
2015/07/14 职场文书
2016道德模范先进事迹材料
2016/02/26 职场文书
2019年特色火锅店的创业计划书模板
2019/08/28 职场文书
CSS子盒子水平和垂直居中的五种方法
2022/07/23 HTML / CSS